WebAppLinkNode.java :  » Net » Terracotta » com » tc » Java Open Source

Java Open Source » Net » Terracotta 
Terracotta » com » tc » WebAppLinkNode.java
/*
 * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice.  All rights reserved.
 */
package com.tc;

import com.tc.admin.common.XTreeCellRenderer;
import com.tc.admin.common.XTreeNode;

import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;

public class WebAppLinkNode extends XTreeNode {
  private static ImageIcon ICON;
  
  static {
    String uri = "/com/tc/admin/icons/occ_match.gif";
    URL    url = WebAppLinkNode.class.getResource(uri);
    
    if(url != null) {
      ICON = new ImageIcon(url);
    }
  }
  
  private boolean m_ready;
  private boolean m_armed;
  
  public WebAppLinkNode(String path) {
    super(path);

    setRenderer(new WebAppLinkNodeRenderer(this));
    setIcon(ICON);
    setReady(false);
  }
  
  public String getLink() {
    return (String)getUserObject();
  }
  
  public void setReady(boolean isReady) {
    m_ready = isReady;

    WebAppLinkNodeRenderer walnr = (WebAppLinkNodeRenderer)getRenderer();
    walnr.getComponent().setEnabled(isReady);
    setArmed(m_armed);
  }
  
  public boolean isReady() {
    return m_ready;
  }
  
  Color getColor() {
    Color c = null;
    
    if(isReady()) {
      c = isArmed() ? Color.red : Color.blue;
    }
    
    return c;
  }
  
  public void setArmed(boolean armed) {
    m_armed = armed;
    WebAppLinkNodeRenderer walnr = (WebAppLinkNodeRenderer)getRenderer();
    Color fg = getColor();
    walnr.setTextSelectionColor(fg);
    walnr.setTextNonSelectionColor(fg);
    nodeChanged();
  }
  
  public boolean isArmed() {
    return m_armed;
  }
}

class WebAppLinkNodeRenderer extends XTreeCellRenderer {
  private WebAppLinkNode m_node;
  
  public WebAppLinkNodeRenderer(WebAppLinkNode node) {
    super();
    
    m_node = node;
    
    drawDashedFocusIndicator = false;
    backgroundSelectionColor = getBackgroundNonSelectionColor();
    borderSelectionColor     = null;
    textSelectionColor       = node.getColor();
    textNonSelectionColor    = textSelectionColor;
  }

  protected Renderer createRenderer() {
    return new WebLinkRenderer(); 
  }
  
  class WebLinkRenderer extends Renderer {
    WebLinkRenderer() {
      super();
    }
    
    public void paint(Graphics g) {
      super.paint(g);
      
      if(m_node.isReady() && !m_node.isArmed()) {
        FontMetrics fm   = g.getFontMetrics();
        String      text = getText();
        int         x    = getLabelStart();
        int         y    = getHeight();
        int         w    = SwingUtilities.computeStringWidth(fm, text);
        int         h    = 1;
  
        g.fillRect(x, y - 1, w, h);
      }
    }
  }
}

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.