Custom scroll bar
* Added PrimaryScrollBar class * Implemented PrimaryScrollBar in ChatWindow for the ScrollPanes vertical scroll bar
This commit is contained in:
		@@ -1,5 +1,6 @@
 | 
				
			|||||||
package envoy.client.ui;
 | 
					package envoy.client.ui;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.awt.Color;
 | 
				
			||||||
import java.awt.ComponentOrientation;
 | 
					import java.awt.ComponentOrientation;
 | 
				
			||||||
import java.awt.Font;
 | 
					import java.awt.Font;
 | 
				
			||||||
import java.awt.GridBagConstraints;
 | 
					import java.awt.GridBagConstraints;
 | 
				
			||||||
@@ -252,6 +253,16 @@ public class ChatWindow extends JFrame {
 | 
				
			|||||||
		// scrollPane
 | 
							// scrollPane
 | 
				
			||||||
		scrollPane.setForeground(theme.getBackgroundColor());
 | 
							scrollPane.setForeground(theme.getBackgroundColor());
 | 
				
			||||||
		scrollPane.setBackground(theme.getCellColor());
 | 
							scrollPane.setBackground(theme.getCellColor());
 | 
				
			||||||
 | 
							// scrollPane.getVerticalScrollBar()
 | 
				
			||||||
 | 
							// .setBackground(
 | 
				
			||||||
 | 
							// new Color(theme.getBackgroundColor().getRed() + 50,
 | 
				
			||||||
 | 
							// theme.getBackgroundColor().getGreen() + 50,
 | 
				
			||||||
 | 
							// theme.getBackgroundColor().getBlue() + 50));
 | 
				
			||||||
 | 
							scrollPane.getVerticalScrollBar().setBackground(theme.getCellColor());
 | 
				
			||||||
 | 
							scrollPane.getVerticalScrollBar()
 | 
				
			||||||
 | 
								.setUI(new PrimaryScrollBar(5, theme.getInteractableBackgroundColor(),
 | 
				
			||||||
 | 
										new Color(theme.getInteractableBackgroundColor().getRGB() - 50),
 | 
				
			||||||
 | 
										new Color(theme.getInteractableBackgroundColor().getRGB() + 170)));
 | 
				
			||||||
		// messageEnterTextArea
 | 
							// messageEnterTextArea
 | 
				
			||||||
		messageEnterTextArea.setCaretColor(theme.getTypingMessageColor());
 | 
							messageEnterTextArea.setCaretColor(theme.getTypingMessageColor());
 | 
				
			||||||
		messageEnterTextArea.setForeground(theme.getTypingMessageColor());
 | 
							messageEnterTextArea.setForeground(theme.getTypingMessageColor());
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										95
									
								
								src/main/java/envoy/client/ui/PrimaryScrollBar.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								src/main/java/envoy/client/ui/PrimaryScrollBar.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					package envoy.client.ui;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.awt.Color;
 | 
				
			||||||
 | 
					import java.awt.Dimension;
 | 
				
			||||||
 | 
					import java.awt.Graphics;
 | 
				
			||||||
 | 
					import java.awt.Graphics2D;
 | 
				
			||||||
 | 
					import java.awt.Rectangle;
 | 
				
			||||||
 | 
					import java.awt.RenderingHints;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.swing.JButton;
 | 
				
			||||||
 | 
					import javax.swing.JComponent;
 | 
				
			||||||
 | 
					import javax.swing.JScrollBar;
 | 
				
			||||||
 | 
					import javax.swing.plaf.basic.BasicScrollBarUI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import envoy.client.Settings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Project: <strong>envoy-client</strong><br>
 | 
				
			||||||
 | 
					 * File: <strong>PrimaryScrollBar.javaEvent.java</strong><br>
 | 
				
			||||||
 | 
					 * Created: <strong>14.12.2019</strong><br>
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author Maximilian Käfer
 | 
				
			||||||
 | 
					 * @since Envoy v0.2-alpha
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class PrimaryScrollBar extends BasicScrollBarUI{
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private final Dimension	d	= new Dimension();
 | 
				
			||||||
 | 
						private int				arcSize;
 | 
				
			||||||
 | 
						private Color			scrollBarColor;
 | 
				
			||||||
 | 
						private Color			hoverColor;
 | 
				
			||||||
 | 
						private Color			draggingColor;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public PrimaryScrollBar(int arcSize, Color scrollBarColor, Color hoverColor, Color draggingColor) {
 | 
				
			||||||
 | 
							this.arcSize = arcSize;
 | 
				
			||||||
 | 
							this.scrollBarColor	= scrollBarColor;
 | 
				
			||||||
 | 
							this.hoverColor		= hoverColor;
 | 
				
			||||||
 | 
							this.draggingColor	= draggingColor;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						protected JButton createDecreaseButton(int orientation) {
 | 
				
			||||||
 | 
							return new JButton() {
 | 
				
			||||||
 | 
								private static final long serialVersionUID = 1032443171070235890L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public Dimension getPreferredSize() {
 | 
				
			||||||
 | 
									return d;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						protected JButton createIncreaseButton (int orientation) {
 | 
				
			||||||
 | 
							return new JButton() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								private static final long serialVersionUID = 7575774542623215803L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								@Override
 | 
				
			||||||
 | 
								public Dimension getPreferredSize() {
 | 
				
			||||||
 | 
									return d;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						protected void paintTrack(Graphics g, JComponent c, Rectangle r) {
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						protected void paintThumb(Graphics g, JComponent c, Rectangle r) {
 | 
				
			||||||
 | 
							Graphics2D g2 = (Graphics2D) g.create();
 | 
				
			||||||
 | 
							g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 | 
				
			||||||
 | 
							Color		color	= null;
 | 
				
			||||||
 | 
							JScrollBar	sb		= (JScrollBar) c;
 | 
				
			||||||
 | 
							if (!sb.isEnabled() || r.width > r.height) {
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							} else if (isDragging) {
 | 
				
			||||||
 | 
								color = draggingColor;
 | 
				
			||||||
 | 
							} else if (isThumbRollover()) {
 | 
				
			||||||
 | 
								color = hoverColor;
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								color = scrollBarColor;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							g2.setPaint(color);
 | 
				
			||||||
 | 
							g2.fillRoundRect(r.x + 9, r.y, r.width - 10, r.height, arcSize, arcSize);
 | 
				
			||||||
 | 
							g2.setPaint(Settings.getInstance().getThemes().get(Settings.getInstance().getCurrentTheme()).getCellColor());
 | 
				
			||||||
 | 
							g2.drawRoundRect(r.x + 9, r.y, r.width - 10, r.height, arcSize, arcSize);
 | 
				
			||||||
 | 
							g2.dispose();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						protected void setThumbBounds(int x, int y, int width, int height) {
 | 
				
			||||||
 | 
							super.setThumbBounds(x, y, width, height);
 | 
				
			||||||
 | 
							scrollbar.repaint();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user