Skip to content

Commit e75e03d

Browse files
authored
Merge pull request #62 from vincenzopalazzo/supportmousehoverbutton
Add support mouser hover and multiple fix
2 parents 380e8fd + d4b15ff commit e75e03d

22 files changed

+212
-394
lines changed

.idea/workspace.xml

Lines changed: 57 additions & 322 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,30 @@
3535
<target>1.8</target>
3636
</configuration>
3737
</plugin>
38+
39+
<plugin>
40+
<artifactId>maven-assembly-plugin</artifactId>
41+
<configuration>
42+
<archive>
43+
<manifest>
44+
<mainClass>mdlaf.MaterialLookAndFeel</mainClass>
45+
</manifest>
46+
</archive>
47+
<descriptorRefs>
48+
<descriptorRef>jar-with-dependencies</descriptorRef>
49+
</descriptorRefs>
50+
</configuration>
51+
52+
<executions>
53+
<execution>
54+
<id>make-assembly</id> <!-- this is used for inheritance merges -->
55+
<phase>package</phase> <!-- bind to the packaging phase -->
56+
<goals>
57+
<goal>single</goal>
58+
</goals>
59+
</execution>
60+
</executions>
61+
</plugin>
3862
</plugins>
3963
<resources>
4064
<resource>

src/main/java/MaterialUISwingDemo.java

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public static void main (String[] args) {
6969
jRadioButtonMenuItem.setText ("prova RadioButtonMenuItem");
7070
menu1.add (jRadioButtonMenuItem);
7171
menu1.addSeparator ();
72+
7273
//TestCheckBoxMenuItem
7374
JCheckBoxMenuItem checkBoxMenuItem = new JCheckBoxMenuItem ();
7475
checkBoxMenuItem.setText ("test");
@@ -118,28 +119,31 @@ public static void main (String[] args) {
118119

119120
JToolBar tb = new JToolBar ("toolbar");
120121
JButton button1 = new JButton ("f");
121-
122-
button1.setAction (new AbstractAction () {
123-
@Override
124-
public void actionPerformed (ActionEvent e) {
125-
putValue (Action.NAME, "f");
126-
putValue (Action.SHORT_DESCRIPTION, "Test tool tip");
127-
128-
JDialog dialog = new JDialog ();
129-
JPanel jPanel = new JPanel ();
130-
jPanel.add (new JColorChooser ());
131-
dialog.setContentPane (jPanel);
132-
dialog.setLocationRelativeTo (null);
133-
dialog.setVisible (true);
134-
dialog.pack ();
135-
}
136-
});
137-
138122
JButton button2 = new JButton ("e");
139123
button1.setBackground (MaterialColors.LIGHT_BLUE_400);
140124
button1.setForeground (Color.WHITE);
141125
button2.setBackground (MaterialColors.LIGHT_BLUE_400);
142126
button2.setForeground (Color.WHITE);
127+
button1.addMouseListener(MaterialUIMovement.getMovement(button1, MaterialColors.LIGHT_BLUE_200));
128+
button2.addMouseListener(MaterialUIMovement.getMovement(button2, MaterialColors.LIGHT_BLUE_200));
129+
130+
button1.addActionListener (new AbstractAction () {
131+
@Override
132+
public void actionPerformed (ActionEvent e) {
133+
134+
putValue (Action.NAME, "f");
135+
136+
JDialog dialog = new JDialog ();
137+
JPanel jPanel = new JPanel ();
138+
jPanel.add (new JColorChooser ());
139+
dialog.setContentPane (jPanel);
140+
dialog.setLocationRelativeTo (null);
141+
dialog.pack ();
142+
dialog.setVisible (true);
143+
}
144+
});
145+
button1.setToolTipText("This is a tool tip");
146+
143147
tb.add (button1);
144148
tb.addSeparator ();
145149
tb.add (button2);
@@ -192,6 +196,20 @@ public void actionPerformed (ActionEvent e) {
192196
taskPane.setTitle("Material Look and fell");
193197
pn.add(taskPane);
194198

199+
//Test effect mouse over
200+
201+
//Setting defoult
202+
JButton testButtonHoverOne = new JButton("Fly over me One");
203+
testButtonHoverOne.setEnabled(false);
204+
pn.add(testButtonHoverOne);
205+
206+
//ModSetting
207+
JButton testButtonHoverTwo = new JButton("Fly over me Two");
208+
testButtonHoverTwo.setBackground(MaterialColors.LIGHT_BLUE_500);
209+
testButtonHoverTwo.setForeground(MaterialColors.WHITE);
210+
testButtonHoverTwo.addMouseListener(MaterialUIMovement.getMovement(testButtonHoverTwo, MaterialColors.LIGHT_BLUE_200));
211+
pn.add(testButtonHoverTwo);
212+
195213
// make everything visible to the world
196214
frame.pack ();
197215
frame.setVisible (true);

src/main/java/mdlaf/MaterialLookAndFeel.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ protected void initComponentDefaults (UIDefaults table) {
144144
table.put ("Button.background", MaterialColors.WHITE);
145145
table.put ("Button.foreground", Color.BLACK);
146146
table.put ("Button.font", MaterialFonts.MEDIUM);
147+
table.put("Button.mouseHoverColor", MaterialColors.GRAY_400);
148+
table.put("Button.mouseHoverEnable", true);
147149

148150
table.put ("CheckBox.font", MaterialFonts.REGULAR);
149151
table.put ("CheckBox.background", Color.WHITE);

src/main/java/mdlaf/animation/MaterialUIMovement.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,12 @@ public static void add (JComponent c, Color fadeTo, int steps, int interval) {
1414
public static void add (JComponent c, Color fadeTo) {
1515
add (c, fadeTo, 5, 1000 / 30);
1616
}
17+
18+
public static MaterialUITimer getMovement (JComponent c, Color fadeTo, int steps, int interval) {
19+
return new MaterialUITimer (c, fadeTo, steps, interval);
20+
}
21+
22+
public static MaterialUITimer getMovement (JComponent c, Color fadeTo) {
23+
return getMovement (c, fadeTo, 5, 1000 / 30);
24+
}
1725
}

src/main/java/mdlaf/animation/MaterialUITimer.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ private Color previousColor () {
6262

6363
@Override
6464
public void mousePressed (MouseEvent me) {
65+
if(!me.getComponent().isEnabled()){
66+
return;
67+
}
6568
alpha = steps - 1;
6669
forward = false;
6770
timer.start ();
@@ -83,13 +86,19 @@ public void mouseClicked (MouseEvent me) {
8386

8487
@Override
8588
public void mouseExited (MouseEvent me) {
89+
if(!me.getComponent().isEnabled()){
90+
return;
91+
}
8692
alpha = steps - 1;
8793
forward = false;
8894
timer.start ();
8995
}
9096

9197
@Override
9298
public void mouseEntered (MouseEvent me) {
99+
if(!me.getComponent().isEnabled()){
100+
return;
101+
}
93102
alpha = 0;
94103
forward = true;
95104
timer.start ();

src/main/java/mdlaf/components/button/MaterialButtonUI.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package mdlaf.components.button;
22

3+
import mdlaf.animation.MaterialUIMovement;
34
import mdlaf.utils.MaterialDrawingUtils;
45

56
import javax.swing.AbstractButton;
67
import javax.swing.JComponent;
78
import javax.swing.UIManager;
89
import javax.swing.plaf.ComponentUI;
910
import javax.swing.plaf.basic.BasicButtonUI;
10-
import java.awt.Graphics;
11+
import java.awt.*;
1112

1213
public class MaterialButtonUI extends BasicButtonUI {
1314

@@ -25,6 +26,10 @@ public void installUI (JComponent c) {
2526
button.setBackground (UIManager.getColor ("Button.background"));
2627
button.setForeground (UIManager.getColor ("Button.foreground"));
2728
button.setFont (UIManager.getFont ("Button.font"));
29+
if(UIManager.getBoolean("Button.mouseHoverEnable")){
30+
button.addMouseListener(MaterialUIMovement.getMovement(button, UIManager.getColor("Button.mouseHoverColor")));
31+
}
32+
button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
2833
}
2934

3035
@Override
@@ -43,4 +48,5 @@ private void paintBackground (Graphics g, JComponent c) {
4348
g.setColor (c.getBackground ());
4449
g.fillRoundRect (0, 0, c.getWidth (), c.getHeight (), 7, 7);
4550
}
51+
4652
}

src/main/java/mdlaf/components/checkbox/MaterialCheckBoxUI.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import javax.swing.UIManager;
88
import javax.swing.plaf.ComponentUI;
99
import javax.swing.plaf.basic.BasicCheckBoxUI;
10-
import java.awt.Graphics;
10+
import java.awt.*;
1111

1212
//TODO cambio colore icone combo box
1313
public class MaterialCheckBoxUI extends BasicCheckBoxUI {
@@ -26,6 +26,8 @@ public void installUI (JComponent c) {
2626
checkBox.setForeground (UIManager.getColor ("CheckBox.foreground"));
2727
checkBox.setIcon (UIManager.getIcon ("CheckBox.icon"));
2828
checkBox.setSelectedIcon (UIManager.getIcon ("CheckBox.selectedIcon"));
29+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
30+
2931
}
3032

3133
@Override

src/main/java/mdlaf/components/checkboxmenuitem/MaterialCheckBoxMenuItemUI.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
import javax.swing.UIManager;
99
import javax.swing.plaf.ComponentUI;
1010
import javax.swing.plaf.basic.BasicCheckBoxMenuItemUI;
11-
import java.awt.Color;
12-
import java.awt.Graphics;
11+
import java.awt.*;
1312

1413
/**
1514
* @author https://github.com/vincenzopalazzo
@@ -34,6 +33,7 @@ public void paint (Graphics g, JComponent c) {
3433
@Override
3534
protected void paintMenuItem (Graphics g, JComponent c, Icon checkIcon, Icon arrowIcon, Color background, Color foreground, int defaultTextIconGap) {
3635
JCheckBoxMenuItem checkBoxMenuItem = (JCheckBoxMenuItem) c;
36+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
3737
if (checkBoxMenuItem.isSelected ()) {
3838
super.paintMenuItem (MaterialDrawingUtils.getAliasedGraphics (g), checkBoxMenuItem, UIManager.getIcon ("CheckBoxMenuItem.selectedCheckIcon"), arrowIcon, background, foreground, defaultTextIconGap);
3939
return;

src/main/java/mdlaf/components/combobox/MaterialComboBoxUI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import javax.swing.plaf.ComponentUI;
1313
import javax.swing.plaf.basic.BasicArrowButton;
1414
import javax.swing.plaf.basic.BasicComboBoxUI;
15-
import java.awt.Graphics;
15+
import java.awt.*;
1616

1717
public class MaterialComboBoxUI extends BasicComboBoxUI {
1818

@@ -31,6 +31,7 @@ public void installUI (JComponent c) {
3131
comboBox.setBorder (UIManager.getBorder ("ComboBox.border"));
3232
comboBox.setLightWeightPopupEnabled (true);
3333
comboBox.setRenderer (new MaterialComboBoxRenderer ());
34+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
3435
}
3536

3637
@Override

src/main/java/mdlaf/components/menubar/MaterialMenuBarUI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import javax.swing.UIManager;
88
import javax.swing.plaf.ComponentUI;
99
import javax.swing.plaf.basic.BasicMenuBarUI;
10-
import java.awt.Graphics;
10+
import java.awt.*;
1111

1212
public class MaterialMenuBarUI extends BasicMenuBarUI {
1313

@@ -24,6 +24,7 @@ public void installUI (JComponent c) {
2424
menuBar.setBackground (UIManager.getColor ("MenuBar.background"));
2525
menuBar.setBorder (UIManager.getBorder ("MenuBar.border"));
2626
menuBar.setForeground (UIManager.getColor ("MenuBar.foreground"));
27+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
2728
}
2829

2930
@Override

src/main/java/mdlaf/components/menuitem/MaterialMenuItemUI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import javax.swing.UIManager;
99
import javax.swing.plaf.ComponentUI;
1010
import javax.swing.plaf.basic.BasicMenuItemUI;
11-
import java.awt.Graphics;
11+
import java.awt.*;
1212

1313
public class MaterialMenuItemUI extends BasicMenuItemUI {
1414

@@ -27,6 +27,7 @@ public void installUI (JComponent c) {
2727
menuItem.setHorizontalAlignment (SwingConstants.LEFT);
2828
menuItem.setVerticalAlignment (SwingConstants.CENTER);
2929
menuItem.setBorder (UIManager.getBorder ("MenuItem.border"));
30+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
3031
}
3132

3233
@Override

src/main/java/mdlaf/components/radiobutton/MaterialRadioButtonUI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import javax.swing.UIManager;
88
import javax.swing.plaf.ComponentUI;
99
import javax.swing.plaf.basic.BasicRadioButtonUI;
10-
import java.awt.Graphics;
10+
import java.awt.*;
1111

1212
/*
1313
* Contributed by https://github.com/downToHell
@@ -29,6 +29,7 @@ public void installUI (JComponent c) {
2929
radioButton.setForeground (UIManager.getColor ("RadioButton.foreground"));
3030
radioButton.setIcon (UIManager.getIcon ("RadioButton.icon"));
3131
radioButton.setSelectedIcon (UIManager.getIcon ("RadioButton.selectedIcon"));
32+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
3233
}
3334

3435
@Override

src/main/java/mdlaf/components/radiobuttonmenuitem/MaterialRadioButtonMenuItemUI.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
import javax.swing.UIManager;
99
import javax.swing.plaf.ComponentUI;
1010
import javax.swing.plaf.basic.BasicRadioButtonMenuItemUI;
11-
import java.awt.Color;
12-
import java.awt.Graphics;
11+
import java.awt.*;
1312

1413
/**
1514
* @author https://github.com/vincenzopalazzo
@@ -27,6 +26,7 @@ public void installUI (JComponent c) {
2726
JRadioButtonMenuItem j = (JRadioButtonMenuItem) c;
2827
//j.setBackground(MaterialColors.WHITE);
2928
j.setBorder (UIManager.getBorder ("MenuItem.border"));
29+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
3030
}
3131

3232
@Override

src/main/java/mdlaf/components/slider/MaterialSliderUI.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
import javax.swing.UIManager;
99
import javax.swing.plaf.ComponentUI;
1010
import javax.swing.plaf.basic.BasicSliderUI;
11-
import java.awt.Dimension;
12-
import java.awt.Graphics;
11+
import java.awt.*;
1312

1413
//TODO cambio grafica slider
1514
public class MaterialSliderUI extends BasicSliderUI {
@@ -39,6 +38,7 @@ public void installUI (JComponent c) {
3938
slider.setBackground (UIManager.getColor ("Slider.background"));
4039
slider.setForeground (UIManager.getColor ("Slider.foreground"));
4140
slider.setBorder (UIManager.getBorder ("Slider.border"));
41+
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
4242
}
4343

4444
@Override

src/main/java/mdlaf/components/table/MaterialTableCellEditor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import javax.swing.DefaultCellEditor;
66
import javax.swing.JTable;
77
import javax.swing.JTextField;
8-
import java.awt.Component;
8+
import java.awt.*;
99

1010
public class MaterialTableCellEditor extends DefaultCellEditor {
1111

@@ -16,7 +16,6 @@ public MaterialTableCellEditor () {
1616
private static JTextField init () {
1717
JTextField textField = new JTextField ();
1818
textField.setUI (new MaterialTextFieldUI (false));
19-
2019
return textField;
2120
}
2221

src/main/java/mdlaf/components/table/MaterialTableCellRenderer.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package mdlaf.components.table;
22

3-
import javax.swing.BorderFactory;
4-
import javax.swing.JComponent;
5-
import javax.swing.JTable;
6-
import javax.swing.SwingConstants;
3+
import mdlaf.animation.MaterialUIMovement;
4+
5+
import javax.swing.*;
76
import javax.swing.table.DefaultTableCellRenderer;
8-
import java.awt.Component;
7+
import java.awt.*;
98

109
public class MaterialTableCellRenderer extends DefaultTableCellRenderer {
1110

@@ -21,4 +20,14 @@ public Component getTableCellRendererComponent (JTable table, Object value, bool
2120

2221
return component;
2322
}
23+
24+
@Override
25+
public void setBackground(Color c) {
26+
super.setBackground(UIManager.getColor("Table.background"));
27+
}
28+
29+
@Override
30+
public void setForeground(Color c) {
31+
super.setForeground(UIManager.getColor("Table.foreground"));
32+
}
2433
}

0 commit comments

Comments
 (0)