01: /*
02: * <copyright>
03: *
04: * Copyright 2002-2007 BBNT Solutions, LLC
05: * under sponsorship of the Defense Advanced Research Projects
06: * Agency (DARPA).
07: *
08: * You can redistribute this software and/or modify it under the
09: * terms of the Cougaar Open Source License as published on the
10: * Cougaar Open Source Website (www.cougaar.org).
11: *
12: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
15: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
16: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
17: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
18: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23: *
24: * </copyright>
25: */
26:
27: package org.cougaar.qos.qrs.gui;
28:
29: import java.awt.Color;
30: import java.awt.Component;
31: import javax.swing.JTree;
32: import javax.swing.tree.DefaultTreeCellRenderer;
33: import javax.swing.tree.TreePath;
34: import javax.swing.tree.TreeSelectionModel;
35: import javax.swing.event.TreeSelectionListener;
36: import javax.swing.event.TreeSelectionEvent;
37:
38: public class ResourceContextTree extends JTree implements
39: TreeSelectionListener {
40: private Object selectedObject;
41:
42: public ResourceContextTree(ResourceContextTreeModel model) {
43: super (model);
44: setCellRenderer(new Renderer());
45: TreeSelectionModel m = getSelectionModel();
46: m.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
47: m.addTreeSelectionListener(this );
48: }
49:
50: // all nodes are DataTreeNodes...
51: public void valueChanged(TreeSelectionEvent event) {
52: boolean on_off = event.isAddedPath();
53: if (!on_off) {
54: selectedObject = null;
55: } else {
56: TreePath path = event.getPath();
57: DataTreeNode node = (DataTreeNode) path
58: .getLastPathComponent();
59: selectedObject = node.getDatum();
60: }
61: repaint();
62: }
63:
64: private class Renderer extends DefaultTreeCellRenderer {
65: public Component getTreeCellRendererComponent(JTree tree,
66: Object object, boolean set, boolean expanded,
67: boolean leaf, int row, boolean hasFocus) {
68: Component comp = super .getTreeCellRendererComponent(tree,
69: object, set, expanded, leaf, row, hasFocus);
70: DataTreeNode node = (DataTreeNode) object;
71: if (selectedObject != null
72: && node.getDatum() == selectedObject) {
73: comp.setForeground(Color.red);
74: }
75: return comp;
76: }
77:
78: }
79:
80: }
|