1 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 ; 10 import java.awt.FontMetrics ; 11 import java.awt.Graphics ; 12 import java.net.URL ; 13 14 import javax.swing.ImageIcon ; 15 import javax.swing.SwingUtilities ; 16 17 public class WebAppLinkNode extends XTreeNode { 18 private static ImageIcon ICON; 19 20 static { 21 String uri = "/com/tc/admin/icons/occ_match.gif"; 22 URL url = WebAppLinkNode.class.getResource(uri); 23 24 if(url != null) { 25 ICON = new ImageIcon (url); 26 } 27 } 28 29 private boolean m_ready; 30 private boolean m_armed; 31 32 public WebAppLinkNode(String path) { 33 super(path); 34 35 setRenderer(new WebAppLinkNodeRenderer(this)); 36 setIcon(ICON); 37 setReady(false); 38 } 39 40 public String getLink() { 41 return (String )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 getColor() { 57 Color 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 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 g) { 105 super.paint(g); 106 107 if(m_node.isReady() && !m_node.isArmed()) { 108 FontMetrics fm = g.getFontMetrics(); 109 String 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 |