summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/Node.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGrid/TreeNode/Node.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/Node.java223
1 files changed, 220 insertions, 3 deletions
diff --git a/java/src/IceGrid/TreeNode/Node.java b/java/src/IceGrid/TreeNode/Node.java
index 265ac84a89c..49f6de7cf4b 100755
--- a/java/src/IceGrid/TreeNode/Node.java
+++ b/java/src/IceGrid/TreeNode/Node.java
@@ -8,7 +8,19 @@
// **********************************************************************
package IceGrid.TreeNode;
+import java.awt.Component;
+import javax.swing.JTree;
+import javax.swing.Icon;
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
import IceGrid.NodeDescriptor;
+import IceGrid.Utils;
+import IceGrid.Model;
+import IceGrid.NodeDynamicInfo;
+import IceGrid.ServerDynamicInfo;
+import IceGrid.AdapterDynamicInfo;
+import IceGrid.ServerState;
class Node extends Parent
{
@@ -21,9 +33,176 @@ class Node extends Parent
// TODO: consider showing per-application node variables
//
- Node(String applicationName, NodeDescriptor descriptor)
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ //
+ // Initialization
+ //
+ _cellRenderer = new DefaultTreeCellRenderer();
+ _nodeUpOpen = Utils.getIcon("/icons/node_up_open.png");
+ _nodeDownOpen = Utils.getIcon("/icons/node_down_open.png");
+ _nodeUpClosed = Utils.getIcon("/icons/node_up_closed.png");
+ _nodeDownClosed = Utils.getIcon("/icons/node_down_closed.png");
+ }
+
+ //
+ // TODO: separate icons for open and close
+ //
+ if(_serverInfoMap != null) // up
+ {
+ _cellRenderer.setToolTipText("Up and running");
+ if(expanded)
+ {
+ _cellRenderer.setOpenIcon(_nodeUpOpen);
+ }
+ else
+ {
+ _cellRenderer.setClosedIcon(_nodeUpClosed);
+ }
+ }
+ else
+ {
+ _cellRenderer.setToolTipText("Not running");
+ if(expanded)
+ {
+ _cellRenderer.setOpenIcon(_nodeDownOpen);
+ }
+ else
+ {
+ _cellRenderer.setClosedIcon(_nodeDownClosed);
+ }
+ }
+
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+
+ void up(java.util.Map serverInfoMap, java.util.Map adapterInfoMap)
+ {
+ _serverInfoMap = serverInfoMap;
+ _adapterInfoMap = adapterInfoMap;
+
+ //
+ // Update the state of all servers
+ //
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ ServerInstance child = (ServerInstance)p.next();
+ ServerDynamicInfo info =
+ (ServerDynamicInfo)_serverInfoMap.get(child.getId());
+
+ if(info == null)
+ {
+ info = _unknownServerDynamicInfo;
+ }
+ child.updateDynamicInfo(info);
+ }
+
+ //
+ // Update the state of all adapters
+ //
+ p = _adapters.entrySet().iterator();
+ while(p.hasNext())
+ {
+ java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
+ String id = (String) entry.getKey();
+ Adapter adapter = (Adapter)entry.getValue();
+ Ice.ObjectPrx proxy = (Ice.ObjectPrx)_adapterInfoMap.get(id);
+ adapter.updateProxy(proxy);
+ }
+
+ fireNodeChangedEvent(this);
+ }
+
+ void down()
{
- super(descriptor.name);
+ _serverInfoMap = null;
+ _adapterInfoMap = null;
+
+ //
+ // Update the state of all servers
+ //
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ ServerInstance child = (ServerInstance)p.next();
+ child.updateDynamicInfo(_unknownServerDynamicInfo);
+ }
+
+ //
+ // Update the state of all adapters
+ //
+ p = _adapters.values().iterator();
+ while(p.hasNext())
+ {
+ Adapter adapter = (Adapter)p.next();
+ adapter.updateProxy(null);
+ }
+
+ fireNodeChangedEvent(this);
+ }
+
+ void updateServer(ServerDynamicInfo info)
+ {
+ //
+ // NodeViewRoot updates the map
+ //
+ ServerInstance child = (ServerInstance)findChild(info.name);
+ if(child != null)
+ {
+ child.updateDynamicInfo(info);
+ }
+ }
+
+ ServerDynamicInfo getServerDynamicInfo(String serverName)
+ {
+ if(_serverInfoMap == null)
+ {
+ return _unknownServerDynamicInfo;
+ }
+ else
+ {
+ Object obj = _serverInfoMap.get(serverName);
+ if(obj == null)
+ {
+ return _unknownServerDynamicInfo;
+ }
+ else
+ {
+ return (ServerDynamicInfo)obj;
+ }
+ }
+ }
+
+ void updateAdapter(AdapterDynamicInfo info)
+ {
+ //
+ // NodeViewRoot updates the map
+ //
+ Adapter adapter = (Adapter)_adapters.get(info.id);
+ if(adapter != null)
+ {
+ adapter.updateProxy(info.proxy);
+ }
+ }
+
+ Node(String applicationName, Model model, NodeDescriptor descriptor,
+ java.util.Map serverInfoMap, java.util.Map adapterInfoMap)
+ {
+ super(descriptor.name, model);
+ _serverInfoMap = serverInfoMap;
+ _adapterInfoMap = adapterInfoMap;
_applicationMap.put(applicationName, descriptor);
}
@@ -31,7 +210,7 @@ class Node extends Parent
{
_applicationMap.put(applicationName, descriptor);
}
-
+
//
// Returns true when this node should be destroyed
//
@@ -41,5 +220,43 @@ class Node extends Parent
return (_applicationMap.size() == 0);
}
+
+ //
+ // The node maintains a map adapter id => Adapter
+ //
+ Ice.ObjectPrx registerAdapter(String id, Adapter adapter)
+ {
+ _adapters.put(id, adapter);
+ Ice.ObjectPrx result = null;
+ if(_adapterInfoMap != null)
+ {
+ result = (Ice.ObjectPrx)_adapterInfoMap.get(id);
+ }
+ return result;
+ }
+
+ void unregisterAdapter(String id)
+ {
+ _adapters.remove(id);
+ }
+
private java.util.Map _applicationMap = new java.util.HashMap();
+
+ private java.util.Map _serverInfoMap;
+ private java.util.Map _adapterInfoMap;
+
+ //
+ // Adapter id => Adapter
+ //
+ private java.util.Map _adapters = new java.util.HashMap();
+
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+ static private Icon _nodeUpOpen;
+ static private Icon _nodeUpClosed;
+ static private Icon _nodeDownOpen;
+ static private Icon _nodeDownClosed;
+
+ static private ServerDynamicInfo _unknownServerDynamicInfo =
+ new ServerDynamicInfo();
}