KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > gui > search > ComponentBoxContainer


1 package org.columba.core.gui.search;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.Color JavaDoc;
5 import java.awt.Component JavaDoc;
6 import java.awt.Graphics JavaDoc;
7 import java.awt.Insets JavaDoc;
8
9 import javax.swing.Action JavaDoc;
10 import javax.swing.BorderFactory JavaDoc;
11 import javax.swing.JLabel JavaDoc;
12 import javax.swing.JPanel JavaDoc;
13 import javax.swing.UIManager JavaDoc;
14 import javax.swing.border.Border JavaDoc;
15 import javax.swing.border.CompoundBorder JavaDoc;
16
17 import org.columba.core.gui.frame.api.IComponentBox;
18 import org.jdesktop.swingx.JXCollapsiblePane;
19 import org.jdesktop.swingx.JXHyperlink;
20
21 public class ComponentBoxContainer extends JPanel JavaDoc {
22
23     private final static Color JavaDoc borderColor2 = UIManager.getColor("controlShadow");
24     private final static Color JavaDoc borderColor1 = UIManager.getColor("controlHighlight");
25
26     private JXHyperlink link;
27
28     private JXCollapsiblePane collapsible;
29
30     private IComponentBox compBox;
31
32     public ComponentBoxContainer(IComponentBox compBox) {
33         this.compBox = compBox;
34
35         collapsible = new JXCollapsiblePane();
36         collapsible.add(compBox.getView());
37         collapsible.setCollapsed(true);
38
39         Action JavaDoc toggleAction = collapsible.getActionMap().get(
40                 JXCollapsiblePane.TOGGLE_ACTION);
41         // use the collapse/expand icons from the JTree UI
42
toggleAction.putValue(JXCollapsiblePane.COLLAPSE_ICON, UIManager
43                 .getIcon("Tree.expandedIcon"));
44         toggleAction.putValue(JXCollapsiblePane.EXPAND_ICON, UIManager
45                 .getIcon("Tree.collapsedIcon"));
46         link = new JXHyperlink(toggleAction);
47
48         link.setText(compBox.getName());
49         link.setToolTipText(compBox.getDescription());
50
51         link.setOpaque(true);
52         link.setFocusPainted(false);
53
54         link.setUnclickedColor(UIManager.getColor("Label.foreground"));
55         link.setClickedColor(UIManager.getColor("Label.foreground"));
56
57         Border JavaDoc border1 = new CompoundBorder JavaDoc(new SeparatorBorder(),
58                 BorderFactory.createEmptyBorder(2, 4, 2, 4));
59
60 // Border border = new CompoundBorder(BorderFactory.createEmptyBorder(2,
61
// 4, 2, 4), border1);
62

63         JLabel JavaDoc iconLabel = new JLabel JavaDoc();
64         iconLabel.setIcon(compBox.getIcon());
65         //iconLabel.setOpaque(true);
66
iconLabel.setBorder(BorderFactory.createEmptyBorder(1, 2, 1, 6));
67
68         JPanel JavaDoc top = new JPanel JavaDoc();
69         top.setBorder(border1);
70         top.setLayout(new BorderLayout JavaDoc());
71         //top.setOpaque(true);
72

73         top.add(iconLabel, BorderLayout.WEST);
74         top.add(link, BorderLayout.CENTER);
75
76         setLayout(new BorderLayout JavaDoc());
77
78         add(top, BorderLayout.NORTH);
79         add(collapsible, BorderLayout.CENTER);
80     }
81
82     /**
83      * The border between the stack components. It separates each component with
84      * a fine line border.
85      */

86     class SeparatorBorder implements Border JavaDoc {
87
88         boolean isFirst(Component JavaDoc c) {
89             return c.getParent() == null || c.getParent().getComponent(0) == c;
90         }
91
92         public Insets JavaDoc getBorderInsets(Component JavaDoc c) {
93             // if the collapsible is collapsed, we do not want its border to be
94
// painted.
95
if (c instanceof JXCollapsiblePane) {
96                 if (((JXCollapsiblePane) c).isCollapsed()) {
97                     return new Insets JavaDoc(0, 0, 0, 0);
98                 }
99             }
100             return new Insets JavaDoc(isFirst(c) ? 4 : 1, 0, 1, 0);
101         }
102
103         public boolean isBorderOpaque() {
104             return true;
105         }
106
107         public void paintBorder(Component JavaDoc c, Graphics JavaDoc g, int x, int y,
108                 int width, int height) {
109             g.setColor(borderColor1);
110             if (isFirst(c)) {
111                 g.drawLine(x, y + 2, x + width, y + 2);
112             }
113 // g.setColor(borderColor2);
114
// g.drawLine(x, y + height - 1, x + width, y + height - 1);
115
}
116     }
117 }
118
Popular Tags