View Javadoc

1   /*
2    * Copyright (c) 2005 The University of Reading
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    * 1. Redistributions of source code must retain the above copyright
9    *    notice, this list of conditions and the following disclaimer.
10   * 2. Redistributions in binary form must reproduce the above copyright
11   *    notice, this list of conditions and the following disclaimer in the
12   *    documentation and/or other materials provided with the distribution.
13   * 3. Neither the name of the University of Reading, nor the names of the
14   *    authors or contributors may be used to endorse or promote products
15   *    derived from this software without specific prior written permission.
16   * 
17   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20   * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27   */
28  
29  package uk.ac.rdg.resc.jstyx.gridservice.client;
30  
31  import javax.swing.JPanel;
32  import javax.swing.JLabel;
33  import java.awt.BorderLayout;
34  
35  import javax.swing.event.TreeSelectionListener;
36  import javax.swing.event.TreeSelectionEvent;
37  
38  import javax.swing.tree.DefaultMutableTreeNode;
39  import javax.swing.tree.TreePath;
40  
41  /***
42   * Panel for displaying properties of an SGS server, service or instance
43   *
44   * @author Jon Blower
45   * $Revision: 247 $
46   * $Date: 2005-05-17 19:21:57 +0100 (Tue, 17 May 2005) $
47   * $Log$
48   * Revision 1.2  2005/05/17 18:21:57  jonblower
49   * Improved detection of node type
50   *
51   * Revision 1.1  2005/05/17 15:50:43  jonblower
52   * Initial import
53   *
54   */
55  public class PropertiesPanel extends JPanel implements TreeSelectionListener
56  {
57      
58      private JLabel label;
59      
60      /*** Creates a new instance of PropertiesPanel */
61      public PropertiesPanel()
62      {
63          this.setLayout(new BorderLayout());
64          this.label = new JLabel("Properties");
65          this.add(this.label, BorderLayout.CENTER);
66      }
67      
68      /***
69       * This is called when nodes in the SGSExplorer's tree have been selected
70       * or deselected.
71       */
72      public void valueChanged(TreeSelectionEvent e) 
73      {
74          TreePath leadPath = e.getNewLeadSelectionPath();
75          if (leadPath != null)
76          {
77              Object obj = leadPath.getLastPathComponent();
78              if (!(obj instanceof CStyxFileNode))
79              {
80                  return;
81              }
82              CStyxFileNode node = (CStyxFileNode)obj;
83              String nodeStr;
84              int nodeType = node.getType();
85              if (nodeType == 0)
86              {
87                  // Shouldn't be selectable
88                  nodeStr = "root";
89              }
90              else if (nodeType == 1)
91              {
92                  nodeStr = "server";
93              }
94              else if (nodeType == 2)
95              {
96                  nodeStr = "service";
97              }
98              else if (nodeType == 3)
99              {
100                 nodeStr = "instance";
101             }
102             else
103             {
104                 // Shoudn't happen
105                 nodeStr = "unknown";
106             }
107             this.label.setText(nodeStr + ": " + node.toString());
108             this.repaint();
109         }
110     }
111 }