001: /*
002: * <copyright>
003: *
004: * Copyright 2000-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.tools.csmart.ui.viewer;
028:
029: import org.cougaar.tools.csmart.experiment.Experiment;
030: import org.cougaar.tools.csmart.recipe.RecipeComponent;
031: import org.cougaar.tools.csmart.society.SocietyComponent;
032:
033: import javax.swing.*;
034: import javax.swing.tree.DefaultMutableTreeNode;
035: import javax.swing.tree.DefaultTreeCellRenderer;
036: import java.awt.*;
037: import java.net.URL;
038:
039: public class OrganizerTreeCellRenderer extends DefaultTreeCellRenderer {
040: Organizer organizer;
041:
042: public OrganizerTreeCellRenderer(Organizer organizer) {
043: this .organizer = organizer;
044: }
045:
046: /**
047: * If a node represents a component
048: * and that component needs to be saved to the database,
049: * then draw the component in red.
050: * If a node represents a component in an experiment,
051: * and that experiment is being edited,
052: * then draw the node in gray.
053: */
054: public Component getTreeCellRendererComponent(JTree tree,
055: Object value, boolean sel, boolean expanded, boolean leaf,
056: int row, boolean hasFocus) {
057: Component c = super .getTreeCellRendererComponent(tree, value,
058: sel, expanded, leaf, row, hasFocus);
059: DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
060: Object o = node.getUserObject();
061: if (o instanceof Experiment) {
062: if (((Experiment) o).isModified()) {
063: c.setForeground(Color.red);
064: }
065: if (c instanceof JLabel) {
066: URL image = getClass().getResource("Experiment20t.gif");
067: if (image != null) {
068: ImageIcon ii = new ImageIcon(image);
069: if (ii != null)
070: ((JLabel) c).setIcon(ii);
071: }
072: }
073: } else if (o instanceof SocietyComponent) {
074: if (((SocietyComponent) o).isModified()) {
075: c.setForeground(Color.red);
076: }
077: if (c instanceof JLabel) {
078: URL image = getClass().getResource("Society16t.gif");
079: if (image != null) {
080: ImageIcon ii = new ImageIcon(image);
081: if (ii != null)
082: ((JLabel) c).setIcon(ii);
083: }
084: }
085: } else if (o instanceof RecipeComponent) {
086: if (((RecipeComponent) o).isModified()) {
087: c.setForeground(Color.red);
088: }
089: if (c instanceof JLabel) {
090: URL image = getClass().getResource("Recipe16t.gif");
091: if (image != null) {
092: ImageIcon ii = new ImageIcon(image);
093: if (ii != null)
094: ((JLabel) c).setIcon(ii);
095: }
096: }
097: }
098: if (organizer.isNodeInUse(node))
099: c.setForeground(Color.gray);
100: return c;
101: }
102: }
|