KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > WebAppLinkNode


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc;
5
6 import com.tc.admin.common.XTreeCellRenderer;
7 import com.tc.admin.common.XTreeNode;
8
9 import java.awt.Color JavaDoc;
10 import java.awt.FontMetrics JavaDoc;
11 import java.awt.Graphics JavaDoc;
12 import java.net.URL JavaDoc;
13
14 import javax.swing.ImageIcon JavaDoc;
15 import javax.swing.SwingUtilities JavaDoc;
16
17 public class WebAppLinkNode extends XTreeNode {
18   private static ImageIcon JavaDoc ICON;
19   
20   static {
21     String JavaDoc uri = "/com/tc/admin/icons/occ_match.gif";
22     URL JavaDoc url = WebAppLinkNode.class.getResource(uri);
23     
24     if(url != null) {
25       ICON = new ImageIcon JavaDoc(url);
26     }
27   }
28   
29   private boolean m_ready;
30   private boolean m_armed;
31   
32   public WebAppLinkNode(String JavaDoc path) {
33     super(path);
34
35     setRenderer(new WebAppLinkNodeRenderer(this));
36     setIcon(ICON);
37     setReady(false);
38   }
39   
40   public String JavaDoc getLink() {
41     return (String JavaDoc)getUserObject();
42   }
43   
44   public void setReady(boolean isReady) {
45     m_ready = isReady;
46
47     WebAppLinkNodeRenderer walnr = (WebAppLinkNodeRenderer)getRenderer();
48     walnr.getComponent().setEnabled(isReady);
49     setArmed(m_armed);
50   }
51   
52   public boolean isReady() {
53     return m_ready;
54   }
55   
56   Color JavaDoc getColor() {
57     Color JavaDoc c = null;
58     
59     if(isReady()) {
60       c = isArmed() ? Color.red : Color.blue;
61     }
62     
63     return c;
64   }
65   
66   public void setArmed(boolean armed) {
67     m_armed = armed;
68     WebAppLinkNodeRenderer walnr = (WebAppLinkNodeRenderer)getRenderer();
69     Color JavaDoc fg = getColor();
70     walnr.setTextSelectionColor(fg);
71     walnr.setTextNonSelectionColor(fg);
72     nodeChanged();
73   }
74   
75   public boolean isArmed() {
76     return m_armed;
77   }
78 }
79
80 class WebAppLinkNodeRenderer extends XTreeCellRenderer {
81   private WebAppLinkNode m_node;
82   
83   public WebAppLinkNodeRenderer(WebAppLinkNode node) {
84     super();
85     
86     m_node = node;
87     
88     drawDashedFocusIndicator = false;
89     backgroundSelectionColor = getBackgroundNonSelectionColor();
90     borderSelectionColor = null;
91     textSelectionColor = node.getColor();
92     textNonSelectionColor = textSelectionColor;
93   }
94
95   protected Renderer createRenderer() {
96     return new WebLinkRenderer();
97   }
98   
99   class WebLinkRenderer extends Renderer {
100     WebLinkRenderer() {
101       super();
102     }
103     
104     public void paint(Graphics JavaDoc g) {
105       super.paint(g);
106       
107       if(m_node.isReady() && !m_node.isArmed()) {
108         FontMetrics JavaDoc fm = g.getFontMetrics();
109         String JavaDoc text = getText();
110         int x = getLabelStart();
111         int y = getHeight();
112         int w = SwingUtilities.computeStringWidth(fm, text);
113         int h = 1;
114   
115         g.fillRect(x, y - 1, w, h);
116       }
117     }
118   }
119 }
120
121
Popular Tags