Skip to content

Commit 380e8fd

Browse files
authored
Merge pull request #59 from vincenzopalazzo/supportaskpane
Add support JXTaskPane
2 parents 4e289e1 + de73fd9 commit 380e8fd

14 files changed

+330
-93
lines changed

.idea/libraries/Maven__com_jhlabs_filters_2_0_235.xml

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

.idea/libraries/Maven__org_swinglabs_swing_worker_1_1.xml

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

.idea/libraries/Maven__org_swinglabs_swingx_1_6_1.xml

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

.idea/workspace.xml

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

material-ui-swing.iml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,8 @@
2121
<orderEntry type="inheritedJdk" />
2222
<orderEntry type="sourceFolder" forTests="false" />
2323
<orderEntry type="library" scope="PROVIDED" name="Maven: org.osgi:org.osgi.core:6.0.0" level="project" />
24+
<orderEntry type="library" name="Maven: org.swinglabs:swingx:1.6.1" level="project" />
25+
<orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235" level="project" />
26+
<orderEntry type="library" name="Maven: org.swinglabs:swing-worker:1.1" level="project" />
2427
</component>
2528
</module>

pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@
1515
<version>6.0.0</version>
1616
<scope>provided</scope>
1717
</dependency>
18+
19+
<!-- https://mvnrepository.com/artifact/org.swinglabs/swingx -->
20+
<dependency>
21+
<groupId>org.swinglabs</groupId>
22+
<artifactId>swingx</artifactId>
23+
<version>1.6.1</version>
24+
</dependency>
25+
1826
</dependencies>
1927

2028
<build>

src/main/java/MaterialUISwingDemo.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import mdlaf.MaterialLookAndFeel;
22
import mdlaf.animation.MaterialUIMovement;
33
import mdlaf.utils.MaterialColors;
4+
import org.jdesktop.swingx.JXTaskPane;
45

56
import javax.swing.AbstractAction;
67
import javax.swing.Action;
@@ -185,6 +186,12 @@ public void actionPerformed (ActionEvent e) {
185186
editorPane.setText ("This theme is fantastic");
186187
pn.add (editorPane);
187188

189+
JXTaskPane taskPane = new JXTaskPane();
190+
taskPane.add(new JLabel("if you see it means that at a certain point \n" +
191+
"you do not see yourself anymore"));
192+
taskPane.setTitle("Material Look and fell");
193+
pn.add(taskPane);
194+
188195
// make everything visible to the world
189196
frame.pack ();
190197
frame.setVisible (true);

src/main/java/mdlaf/MaterialLookAndFeel.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import mdlaf.components.tabbedpane.MaterialTabbedPaneUI;
2323
import mdlaf.components.table.MaterialTableHeaderUI;
2424
import mdlaf.components.table.MaterialTableUI;
25+
import mdlaf.components.taskpane.MaterialTaskPaneUI;
2526
import mdlaf.components.textfield.MaterialTextFieldUI;
2627
import mdlaf.components.textpane.MaterialTextPaneUI;
2728
import mdlaf.components.togglebutton.MaterialToggleButtonUI;
@@ -71,6 +72,7 @@ public class MaterialLookAndFeel extends MetalLookAndFeel {
7172
private static final String separatorUI = MaterialSeparatorUI.class.getCanonicalName ();
7273
private static final String fileChooserUI = MaterialFileChooserUI.class.getCanonicalName ();
7374
private static final String toolTipUI = MaterialToolTipUI.class.getCanonicalName ();
75+
private static final String taskPaneUI = MaterialTaskPaneUI.class.getCanonicalName ();
7476

7577
@Override
7678
public String getName () {
@@ -129,6 +131,7 @@ protected void initClassDefaults (UIDefaults table) {
129131
table.put ("SeparatorUI", separatorUI);
130132
table.put ("FileChooserUI", fileChooserUI);
131133
table.put ("ToolTipUI", toolTipUI);
134+
table.put ("swingx/TaskPaneUI", taskPaneUI);
132135
}
133136

134137
@Override
@@ -326,5 +329,18 @@ protected void initComponentDefaults (UIDefaults table) {
326329
table.put ("ColorChooser.foreground ", MaterialColors.BLACK);
327330

328331
table.put ("TitledBorder.font", MaterialFonts.REGULAR);
332+
333+
table.put("TaskPane.font", MaterialFonts.MEDIUM);
334+
table.put("TaskPane.titleBackgroundGradientStart", MaterialColors.GRAY_300);
335+
table.put("TaskPane.titleBackgroundGradientEnd", MaterialColors.GRAY_500);
336+
table.put("TaskPane.titleOver", MaterialColors.LIGHT_BLUE_500);
337+
table.put("TaskPane.specialTitleOver", MaterialColors.LIGHT_BLUE_500);
338+
table.put("TaskPane.background", MaterialColors.LIGHT_BLUE_500);
339+
table.put("TaskPane.foreground", MaterialColors.BLACK);
340+
table.put("TaskPane.borderColor", MaterialColors.LIGHT_BLUE_500);
341+
table.put("TaskPane.border", MaterialBorders.DEFAULT_SHADOW_BORDER);
342+
table.put("TaskPane.contentBackground", MaterialColors.GRAY_50);
343+
table.put("TaskPane.yesCollassed", new ImageIcon(MaterialImages.YES_COLLASSED));
344+
table.put("TaskPane.noCollassed", new ImageIcon(MaterialImages.NO_COLLASSED));
329345
}
330346
}
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
package mdlaf.components.taskpane;
2+
3+
import mdlaf.utils.MaterialDrawingUtils;
4+
import org.jdesktop.swingx.JXTaskPane;
5+
import org.jdesktop.swingx.plaf.basic.BasicTaskPaneUI;
6+
7+
import javax.swing.*;
8+
import javax.swing.border.Border;
9+
import javax.swing.border.CompoundBorder;
10+
import javax.swing.plaf.ComponentUI;
11+
import java.awt.*;
12+
import java.awt.event.MouseEvent;
13+
import java.awt.event.MouseListener;
14+
15+
import static org.jdesktop.swingx.SwingXUtilities.isUIInstallable;
16+
17+
/**
18+
* @author https://github.com/vincenzopalazzo
19+
*/
20+
public class MaterialTaskPaneUI extends BasicTaskPaneUI {
21+
22+
23+
@SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"})
24+
public static ComponentUI createUI(JComponent c) {
25+
return new MaterialTaskPaneUI();
26+
}
27+
28+
@Override
29+
public void installUI(JComponent c) {
30+
super.installUI(c);
31+
JXTaskPane jxTaskPane = (JXTaskPane) c;
32+
jxTaskPane.addMouseListener(new ChangeIconOnClick(jxTaskPane));
33+
jxTaskPane.setIcon(jxTaskPane.isCollapsed() ? UIManager.getIcon("TaskPane.yesCollassed") : UIManager.getIcon("TaskPane.noCollassed"));
34+
jxTaskPane.getContentPane().setBackground(UIManager.getColor("TaskPane.contentBackground"));
35+
}
36+
37+
38+
39+
protected void installDefaults() {
40+
LookAndFeel.installColorsAndFont(group, "TaskPane.background",
41+
"TaskPane.foreground", "TaskPane.font");
42+
LookAndFeel.installProperty(group, "opaque", false);
43+
44+
if (isUIInstallable(group.getBorder())) {
45+
group.setBorder(createPaneBorder());
46+
}
47+
48+
if (group.getContentPane() instanceof JComponent) {
49+
JComponent content = (JComponent) group.getContentPane();
50+
51+
LookAndFeel.installColorsAndFont(content,
52+
"TaskPane.background", "TaskPane.foreground", "TaskPane.font");
53+
54+
if (isUIInstallable(content.getBorder())) {
55+
content.setBorder(createContentPaneBorder());
56+
}
57+
}
58+
}
59+
60+
protected Border createContentPaneBorder() {
61+
Color borderColor = UIManager.getColor("TaskPane.borderColor");
62+
return new CompoundBorder(new ContentPaneBorder(borderColor),
63+
UIManager.getBorder("TaskPane.border"));
64+
}
65+
66+
@Override
67+
protected Border createPaneBorder() {
68+
return new MaterialPaneBorder();
69+
}
70+
71+
@Override
72+
public void paint(Graphics g, JComponent c) {
73+
super.paint(MaterialDrawingUtils.getAliasedGraphics(g), c);
74+
}
75+
76+
77+
78+
protected class MaterialPaneBorder extends PaneBorder{
79+
80+
protected void paintTitleBackground(JXTaskPane group, Graphics g) {
81+
MaterialDrawingUtils.getAliasedGraphics(g);
82+
if (group.isSpecial()) {
83+
g.setColor(specialTitleBackground);
84+
} else {
85+
g.setColor(titleBackgroundGradientStart);
86+
}
87+
g.fillRoundRect(0, 0, group.getWidth(), getTitleHeight(group) -1 , 15, 15);
88+
}
89+
90+
@Override
91+
protected boolean isMouseOverBorder() {
92+
return true;
93+
}
94+
95+
@Override
96+
public boolean isBorderOpaque() {
97+
return true;
98+
}
99+
}
100+
101+
/**
102+
* Action change icon on clic
103+
* @author @author https://github.com/vincenzopalazzo
104+
*/
105+
106+
private class ChangeIconOnClick implements MouseListener {
107+
108+
JXTaskPane taskPane;
109+
110+
public ChangeIconOnClick(JXTaskPane taskPane) {
111+
this.taskPane = taskPane;
112+
}
113+
114+
115+
@Override
116+
public void mouseClicked(MouseEvent e) {
117+
if(taskPane.isCollapsed()){
118+
taskPane.setIcon(UIManager.getIcon("TaskPane.yesCollassed"));
119+
return;
120+
}
121+
taskPane.setIcon(UIManager.getIcon("TaskPane.noCollassed"));
122+
}
123+
124+
@Override
125+
public void mousePressed(MouseEvent e) {
126+
127+
}
128+
129+
@Override
130+
public void mouseReleased(MouseEvent e) {
131+
132+
}
133+
134+
@Override
135+
public void mouseEntered(MouseEvent e) {
136+
137+
}
138+
139+
@Override
140+
public void mouseExited(MouseEvent e) {
141+
142+
}
143+
}
144+
}

src/main/java/mdlaf/utils/MaterialImages.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class MaterialImages {
2727
public static final BufferedImage LIST = loadImg ("/imgs/list.png");
2828
public static final BufferedImage NEW_FOLDER = loadImg ("/imgs/new_folder.png");
2929
public static final BufferedImage DETAILS = loadImg ("/imgs/details.png");
30+
public static final BufferedImage YES_COLLASSED = loadImg ("/imgs/yes-collassed.png");
31+
public static final BufferedImage NO_COLLASSED = loadImg ("/imgs/no-collassed.png");
3032

3133
private MaterialImages () {}
3234

416 Bytes
Loading
380 Bytes
Loading

target/classes/material-ui-swing.jar

-2.47 MB
Binary file not shown.

target/material-ui-swing-osgi.jar

9.49 KB
Binary file not shown.

0 commit comments

Comments
 (0)