summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2005-06-30 19:25:26 +0000
committerBernard Normier <bernard@zeroc.com>2005-06-30 19:25:26 +0000
commit685bc67bd5f7ee487ce4477a4b28815411aef2cd (patch)
tree572cfb9eed061fffc3f0d81143f005f700cd45fa
parentmore icons (diff)
downloadice-685bc67bd5f7ee487ce4477a4b28815411aef2cd.tar.bz2
ice-685bc67bd5f7ee487ce4477a4b28815411aef2cd.tar.xz
ice-685bc67bd5f7ee487ce4477a4b28815411aef2cd.zip
Observer implementation
-rwxr-xr-xjava/src/IceGrid/AdminGUI.java38
-rwxr-xr-xjava/src/IceGrid/CellRenderer.java40
-rwxr-xr-xjava/src/IceGrid/MainPane.java18
-rwxr-xr-xjava/src/IceGrid/Model.java155
-rwxr-xr-xjava/src/IceGrid/NodeObserverI.java53
-rwxr-xr-xjava/src/IceGrid/RegistryObserverI.java17
-rwxr-xr-xjava/src/IceGrid/SessionKeeper.java14
-rwxr-xr-xjava/src/IceGrid/TreeModelI.java28
-rwxr-xr-xjava/src/IceGrid/TreeNode/Adapter.java84
-rwxr-xr-xjava/src/IceGrid/TreeNode/Adapters.java19
-rwxr-xr-xjava/src/IceGrid/TreeNode/Application.java22
-rwxr-xr-xjava/src/IceGrid/TreeNode/ApplicationViewRoot.java20
-rwxr-xr-xjava/src/IceGrid/TreeNode/CommonBase.java4
-rwxr-xr-xjava/src/IceGrid/TreeNode/CommonBaseI.java26
-rwxr-xr-xjava/src/IceGrid/TreeNode/DbEnv.java5
-rwxr-xr-xjava/src/IceGrid/TreeNode/DbEnvs.java7
-rwxr-xr-xjava/src/IceGrid/TreeNode/Leaf.java6
-rwxr-xr-xjava/src/IceGrid/TreeNode/Node.java223
-rwxr-xr-xjava/src/IceGrid/TreeNode/NodeVar.java5
-rwxr-xr-xjava/src/IceGrid/TreeNode/NodeVars.java9
-rwxr-xr-xjava/src/IceGrid/TreeNode/NodeViewRoot.java118
-rwxr-xr-xjava/src/IceGrid/TreeNode/Parent.java15
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServerInstance.java153
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServerInstances.java27
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServerTemplate.java11
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServerTemplates.java9
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceInstance.java21
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceInstances.java17
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceTemplate.java9
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceTemplates.java9
-rwxr-xr-xjava/src/IceGrid/Utils.java22
31 files changed, 940 insertions, 264 deletions
diff --git a/java/src/IceGrid/AdminGUI.java b/java/src/IceGrid/AdminGUI.java
index c41ed421249..ea1a6749633 100755
--- a/java/src/IceGrid/AdminGUI.java
+++ b/java/src/IceGrid/AdminGUI.java
@@ -22,7 +22,6 @@ import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
-
import com.jgoodies.looks.Options;
import com.jgoodies.looks.HeaderStyle;
import com.jgoodies.looks.BorderStyle;
@@ -81,6 +80,9 @@ public class AdminGUI extends JFrame
}
});
+ _communicator = Ice.Util.initialize(args);
+ _model = new Model(_communicator);
+
initComponents();
// Sizing / placement
@@ -94,14 +96,9 @@ public class AdminGUI extends JFrame
//
// Display the window.
//
- setVisible(true);
-
- _communicator = Ice.Util.initialize(args);
- _model = new Model();
- _sessionKeeper = new SessionKeeper(this, _communicator, _model, _prefs, _statusBar);
-
+ setVisible(true);
+ _sessionKeeper = new SessionKeeper(this, _model, _prefs, _statusBar);
_sessionKeeper.createSession(true);
-
}
@@ -163,21 +160,13 @@ public class AdminGUI extends JFrame
}
return true;
}
-
- private Icon getIcon(String path)
- {
- java.net.URL imgURL = AdminGUI.class.getResource(path);
- assert(imgURL != null);
- return new ImageIcon(imgURL);
- }
-
private void initComponents()
{
//
// MainPane
//
- getContentPane().add(new MainPane(), BorderLayout.CENTER);
+ getContentPane().add(new MainPane(_model), BorderLayout.CENTER);
//
// Menu bar
@@ -222,7 +211,7 @@ public class AdminGUI extends JFrame
// actions that can be enabled/disabled are fields
//
- Action connectAction = new AbstractAction("Connect...", getIcon("/icons/connect.gif"))
+ Action connectAction = new AbstractAction("Connect...", Utils.getIcon("/icons/connect.gif"))
{
public void actionPerformed(ActionEvent e)
{
@@ -235,7 +224,7 @@ public class AdminGUI extends JFrame
toolBar.add(connectAction);
toolBar.addSeparator();
- _saveAction = new AbstractAction("Save", getIcon("/icons/save_edit.gif"))
+ _saveAction = new AbstractAction("Save", Utils.getIcon("/icons/save_edit.gif"))
{
public void actionPerformed(ActionEvent e)
{
@@ -247,7 +236,8 @@ public class AdminGUI extends JFrame
fileMenu.add(_saveAction);
toolBar.add(_saveAction);
- _discardAction = new AbstractAction("Discard all updates...", getIcon("/icons/undo_edit.gif"))
+ _discardAction = new AbstractAction("Discard all updates...",
+ Utils.getIcon("/icons/undo_edit.gif"))
{
public void actionPerformed(ActionEvent e)
{
@@ -270,7 +260,7 @@ public class AdminGUI extends JFrame
exitAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("alt F4"));
fileMenu.add(exitAction);
- Action cutAction = new AbstractAction("Cut", getIcon("/icons/cut_edit.gif"))
+ Action cutAction = new AbstractAction("Cut", Utils.getIcon("/icons/cut_edit.gif"))
{
public void actionPerformed(ActionEvent e)
{
@@ -281,7 +271,7 @@ public class AdminGUI extends JFrame
editMenu.add(cutAction);
toolBar.add(cutAction);
- Action copyAction = new AbstractAction("Copy", getIcon("/icons/copy_edit.gif"))
+ Action copyAction = new AbstractAction("Copy", Utils.getIcon("/icons/copy_edit.gif"))
{
public void actionPerformed(ActionEvent e)
{
@@ -292,7 +282,7 @@ public class AdminGUI extends JFrame
editMenu.add(copyAction);
toolBar.add(copyAction);
- _pasteAction = new AbstractAction("Paste", getIcon("/icons/paste_edit.gif"))
+ _pasteAction = new AbstractAction("Paste", Utils.getIcon("/icons/paste_edit.gif"))
{
public void actionPerformed(ActionEvent e)
{
@@ -306,7 +296,7 @@ public class AdminGUI extends JFrame
toolBar.add(_pasteAction);
toolBar.addSeparator();
- Action deleteAction = new AbstractAction("Delete", getIcon("/icons/delete_edit.gif"))
+ Action deleteAction = new AbstractAction("Delete", Utils.getIcon("/icons/delete_edit.gif"))
{
public void actionPerformed(ActionEvent e)
{
diff --git a/java/src/IceGrid/CellRenderer.java b/java/src/IceGrid/CellRenderer.java
new file mode 100755
index 00000000000..e8208157968
--- /dev/null
+++ b/java/src/IceGrid/CellRenderer.java
@@ -0,0 +1,40 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGrid;
+
+import java.awt.Component;
+import javax.swing.JTree;
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+class CellRenderer implements TreeCellRenderer
+{
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ TreeCellRenderer node = (TreeCellRenderer)value;
+ Component result = node.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+
+ if(result == null)
+ {
+ result = _defaultRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+ return result;
+ }
+
+ private TreeCellRenderer _defaultRenderer = new DefaultTreeCellRenderer();
+}
diff --git a/java/src/IceGrid/MainPane.java b/java/src/IceGrid/MainPane.java
index d90faaf4ae6..c2d1834e853 100755
--- a/java/src/IceGrid/MainPane.java
+++ b/java/src/IceGrid/MainPane.java
@@ -11,6 +11,7 @@ package IceGrid;
import java.util.prefs.Preferences;
import java.util.prefs.BackingStoreException;
import javax.swing.*;
+import javax.swing.tree.TreeCellRenderer;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@@ -46,9 +47,10 @@ public class MainPane extends JSplitPane
}
- MainPane()
+ MainPane(Model model)
{
super(JSplitPane.HORIZONTAL_SPLIT, true);
+ _model = model;
setBorder(new EmptyBorder(10, 10, 10, 10));
//
@@ -59,16 +61,24 @@ public class MainPane extends JSplitPane
tabbedPane.putClientProperty(Options.NO_CONTENT_BORDER_KEY, Boolean.TRUE);
tabbedPane.setBorder(new ShadowBorder());
- JTree nodeTree = new JTree(TreeModelI.getTreeModel(TreeModelI.NODE_VIEW));
+ TreeCellRenderer renderer = new CellRenderer();
+
+ JTree nodeTree = new JTree(_model.getTreeModel(TreeModelI.NODE_VIEW));
+ nodeTree.setCellRenderer(renderer);
+ ToolTipManager.sharedInstance().registerComponent(nodeTree);
+
JScrollPane nodeScroll =
new JScrollPane(nodeTree,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
nodeScroll.setBorder(Borders.DIALOG_BORDER);
+
tabbedPane.addTab("Node View", nodeScroll);
- JTree appTree = new JTree(TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW));
+ JTree appTree = new JTree(_model.getTreeModel(TreeModelI.APPLICATION_VIEW));
+ appTree.setCellRenderer(renderer);
+ ToolTipManager.sharedInstance().registerComponent(appTree);
JScrollPane appScroll =
new JScrollPane(appTree,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
@@ -144,5 +154,5 @@ public class MainPane extends JSplitPane
}
}
-
+ private Model _model;
}
diff --git a/java/src/IceGrid/Model.java b/java/src/IceGrid/Model.java
index cb5672c0cb5..7ae1f4b3091 100755
--- a/java/src/IceGrid/Model.java
+++ b/java/src/IceGrid/Model.java
@@ -18,7 +18,7 @@ import IceGrid.TreeNode.ApplicationViewRoot;
// Where all the data are kept
//
-class Model
+public class Model
{
//
@@ -94,77 +94,84 @@ class Model
//
- // The following methods all run in the UI thread
+ // All Model's methods run in the UI thread
//
+
+ public Ice.Communicator getCommunicator()
+ {
+ return _communicator;
+ }
+
+ public NodeViewRoot getNodeViewRoot()
+ {
+ return _nodeViewRoot;
+ }
+
+ public ApplicationViewRoot getApplicationViewRoot()
+ {
+ return _applicationViewRoot;
+ }
+
+ public TreeModelI getTreeModel(int view)
+ {
+ if(view == TreeModelI.NODE_VIEW)
+ {
+ return _nodeModel;
+ }
+ else if(view == TreeModelI.APPLICATION_VIEW)
+ {
+ return _applicationModel;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ //
+ // From the Registry observer:
+ //
- void registryInit(int serial, final java.util.List applications, String[] nodesUp)
+ void registryInit(int serial, final java.util.List applications)
{
assert(_latestSerial == -1);
_latestSerial = serial;
- NodeViewRoot nodeViewRoot =
- (NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
- nodeViewRoot.init(applications);
-
- ApplicationViewRoot applicationViewRoot =
- (ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
- applicationViewRoot.init(applications);
+ _nodeViewRoot.init(applications);
+ _applicationViewRoot.init(applications);
}
void applicationAdded(ApplicationDescriptor desc)
{
- NodeViewRoot nodeViewRoot =
- (NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
- nodeViewRoot.put(desc.name, desc.nodes, true);
-
- ApplicationViewRoot applicationViewRoot =
- (ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
- applicationViewRoot.applicationAdded(desc);
+ _nodeViewRoot.put(desc.name, desc.nodes, true);
+ _applicationViewRoot.applicationAdded(desc);
}
void applicationRemoved(String name)
{
- NodeViewRoot nodeViewRoot =
- (NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
- nodeViewRoot.remove(name);
-
-
- ApplicationViewRoot applicationViewRoot =
- (ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
- applicationViewRoot.applicationRemoved(name);
+ _nodeViewRoot.remove(name);
+ _applicationViewRoot.applicationRemoved(name);
}
void applicationSynced(ApplicationDescriptor desc)
{
- NodeViewRoot nodeViewRoot =
- (NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
- nodeViewRoot.remove(desc.name);
- nodeViewRoot.put(desc.name, desc.nodes, true);
-
- ApplicationViewRoot applicationViewRoot =
- (ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
-
- applicationViewRoot.applicationSynced(desc);
+ _nodeViewRoot.remove(desc.name);
+ _nodeViewRoot.put(desc.name, desc.nodes, true);
+ _applicationViewRoot.applicationSynced(desc);
}
void applicationUpdated(ApplicationUpdateDescriptor desc)
{
- NodeViewRoot nodeViewRoot =
- (NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
-
-
for(int i = 0; i < desc.removeNodes.length; ++i)
{
- nodeViewRoot.remove(desc.name, desc.removeNodes[i]);
+ _nodeViewRoot.remove(desc.name, desc.removeNodes[i]);
}
- nodeViewRoot.put(desc.name, desc.nodes, true);
- nodeViewRoot.removeServers(desc.removeServers);
-
- ApplicationViewRoot applicationViewRoot =
- (ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
+ _nodeViewRoot.put(desc.name, desc.nodes, true);
+ _nodeViewRoot.removeServers(desc.removeServers);
- applicationViewRoot.applicationUpdated(desc);
+ _applicationViewRoot.applicationUpdated(desc);
}
boolean updateSerial(int serial)
@@ -181,24 +188,42 @@ class Model
}
- void sessionLost()
+ //
+ // From the Node observer:
+ //
+
+ void nodeUp(NodeDynamicInfo updatedInfo)
{
- _latestSerial = -1;
+ _nodeViewRoot.nodeUp(updatedInfo);
+ }
- NodeViewRoot nodeViewRoot =
- (NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
-
- nodeViewRoot.clear();
-
- ApplicationViewRoot applicationViewRoot =
- (ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
-
- applicationViewRoot.clear();
+ void nodeDown(String node)
+ {
+ _nodeViewRoot.nodeDown(node);
}
-
+ void updateServer(String node, ServerDynamicInfo updatedInfo)
+ {
+ _nodeViewRoot.updateServer(node, updatedInfo);
+ }
+
+ void updateAdapter(String node, AdapterDynamicInfo updatedInfo)
+ {
+ _nodeViewRoot.updateAdapter(node, updatedInfo);
+ }
+ //
+ // Other methods
+ //
+
+ void sessionLost()
+ {
+ _latestSerial = -1;
+ _nodeViewRoot.clear();
+ _applicationViewRoot.clear();
+ }
+
boolean save()
{
return true;
@@ -209,11 +234,25 @@ class Model
return true;
}
-
+ Model(Ice.Communicator communicator)
+ {
+ _communicator = communicator;
+
+ _nodeViewRoot = new NodeViewRoot(this);
+ _nodeModel = new TreeModelI(_nodeViewRoot);
+ _applicationViewRoot = new ApplicationViewRoot(this);
+ _applicationModel = new TreeModelI(_applicationViewRoot);
+ }
+
+ private Ice.Communicator _communicator;
+ private NodeViewRoot _nodeViewRoot;
+ private ApplicationViewRoot _applicationViewRoot;
+ private TreeModelI _nodeModel;
+ private TreeModelI _applicationModel;
private int _latestSerial = -1;
}
diff --git a/java/src/IceGrid/NodeObserverI.java b/java/src/IceGrid/NodeObserverI.java
index 190c9b01bb5..2268c4fa9d4 100755
--- a/java/src/IceGrid/NodeObserverI.java
+++ b/java/src/IceGrid/NodeObserverI.java
@@ -8,6 +8,7 @@
// **********************************************************************
package IceGrid;
+import javax.swing.SwingUtilities;
class NodeObserverI extends _NodeObserverDisp
{
@@ -16,20 +17,64 @@ class NodeObserverI extends _NodeObserverDisp
_model = model;
}
- public void init(NodeDynamicInfo[] nodes, Ice.Current current)
+ public void init(final NodeDynamicInfo[] nodes, Ice.Current current)
{
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ for(int i = 0; i < nodes.length; ++i)
+ {
+ _model.nodeUp(nodes[i]);
+ }
+ }
+ });
}
- public void initNode(NodeDynamicInfo node, Ice.Current current)
+ public void nodeUp(final NodeDynamicInfo nodeInfo, Ice.Current current)
{
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _model.nodeUp(nodeInfo);
+ }
+ });
}
- public void updateServer(String node, ServerDynamicInfo updatedInfo, Ice.Current current)
+ public void nodeDown(final String nodeName, Ice.Current current)
{
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _model.nodeDown(nodeName);
+ }
+ });
}
- public void updateAdapter(String node, AdapterDynamicInfo updatedInfo, Ice.Current current)
+ public void updateServer(final String node, final ServerDynamicInfo updatedInfo,
+ Ice.Current current)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _model.updateServer(node, updatedInfo);
+ }
+ });
+ }
+
+ public void updateAdapter(final String node, final AdapterDynamicInfo updatedInfo,
+ Ice.Current current)
{
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _model.updateAdapter(node, updatedInfo);
+ }
+ });
}
private Model _model;
diff --git a/java/src/IceGrid/RegistryObserverI.java b/java/src/IceGrid/RegistryObserverI.java
index 7e8b2a1f6c2..0c500888cb8 100755
--- a/java/src/IceGrid/RegistryObserverI.java
+++ b/java/src/IceGrid/RegistryObserverI.java
@@ -50,7 +50,7 @@ class RegistryObserverI extends _RegistryObserverDisp
if(_initialized)
{
- _model.registryInit(_serial, _applications, _nodesUp);
+ _model.registryInit(_serial, _applications);
_statusBar.setText("Connected; initialized (" + _serial + ")");
}
else
@@ -61,12 +61,11 @@ class RegistryObserverI extends _RegistryObserverDisp
public synchronized void init(int serial, java.util.LinkedList applications,
- String[] nodesUp, Ice.Current current)
+ Ice.Current current)
{
_initialized = true;
_serial = serial;
_applications = applications;
- _nodesUp = nodesUp;
notify();
}
@@ -157,16 +156,6 @@ class RegistryObserverI extends _RegistryObserverDisp
});
}
- public void nodeUp(String name, Ice.Current current)
- {
-
-
- }
-
- public void nodeDown(String name, Ice.Current current)
- {
-
- }
private SessionKeeper _sessionKeeper;
private StatusBar _statusBar;
@@ -179,6 +168,4 @@ class RegistryObserverI extends _RegistryObserverDisp
//
private int _serial;
private java.util.LinkedList _applications;
- private String[] _nodesUp;
-
};
diff --git a/java/src/IceGrid/SessionKeeper.java b/java/src/IceGrid/SessionKeeper.java
index 99c9fee8d51..64d97424ba8 100755
--- a/java/src/IceGrid/SessionKeeper.java
+++ b/java/src/IceGrid/SessionKeeper.java
@@ -289,12 +289,11 @@ class SessionKeeper
}
- SessionKeeper(Frame parent, Ice.Communicator communicator, Model model,
+ SessionKeeper(Frame parent, Model model,
Preferences prefs, StatusBar statusBar)
{
_parent = parent;
_connectDialog = new ConnectDialog();
- _communicator = communicator;
_model = model;
_connectionPrefs = prefs.node("Connection");
_statusBar = statusBar;
@@ -306,7 +305,7 @@ class SessionKeeper
void createSession(boolean autoconnectEnabled)
{
ConnectInfo connectInfo = new ConnectInfo(_connectionPrefs,
- _communicator);
+ _model.getCommunicator());
boolean openDialog = true;
if(autoconnectEnabled && !connectInfo.useGlacier &&
connectInfo.autoconnect)
@@ -386,7 +385,7 @@ class SessionKeeper
{
defaultLocator = Ice.LocatorPrxHelper.
uncheckedCast(
- _communicator.stringToProxy(info.locatorProxy));
+ _model.getCommunicator().stringToProxy(info.locatorProxy));
}
catch(Ice.LocalException e)
{
@@ -398,7 +397,7 @@ class SessionKeeper
JOptionPane.ERROR_MESSAGE);
return false;
}
- _communicator.setDefaultLocator(defaultLocator);
+ _model.getCommunicator().setDefaultLocator(defaultLocator);
//
// TODO: timeout
@@ -406,7 +405,7 @@ class SessionKeeper
SessionManagerPrx sessionManager = SessionManagerPrxHelper.
uncheckedCast(
- _communicator.stringToProxy(
+ _model.getCommunicator().stringToProxy(
info.sessionManagerIdentity));
try
@@ -525,7 +524,7 @@ class SessionKeeper
// Create the object adapter for the observers
//
String uuid = Ice.Util.generateUUID();
- _observerAdapter = _communicator.createObjectAdapterWithEndpoints(
+ _observerAdapter = _model.getCommunicator().createObjectAdapterWithEndpoints(
"Observers-" + uuid, "tcp");
//
@@ -599,7 +598,6 @@ class SessionKeeper
private Frame _parent;
private ConnectDialog _connectDialog;
- private Ice.Communicator _communicator;
private Model _model;
private Preferences _connectionPrefs;
private StatusBar _statusBar;
diff --git a/java/src/IceGrid/TreeModelI.java b/java/src/IceGrid/TreeModelI.java
index 0770fd898a2..ebb710bf348 100755
--- a/java/src/IceGrid/TreeModelI.java
+++ b/java/src/IceGrid/TreeModelI.java
@@ -30,34 +30,6 @@ public class TreeModelI implements TreeModel
static public final int VIEW_COUNT = 2;
- //
- // The per-view TreeModel
- //
- static public TreeModelI getTreeModel(int view)
- {
- if(view == NODE_VIEW)
- {
- if(_nodeModel == null)
- {
- _nodeModel = new TreeModelI(new NodeViewRoot());
- }
- return _nodeModel;
- }
- else if(view == APPLICATION_VIEW)
- {
- if(_applicationModel == null)
- {
- _applicationModel = new TreeModelI(
- new ApplicationViewRoot((NodeViewRoot)getTreeModel(NODE_VIEW).getRoot()));
- }
- return _applicationModel;
- }
- else
- {
- return null;
- }
- }
-
public Object getRoot()
{
return _root;
diff --git a/java/src/IceGrid/TreeNode/Adapter.java b/java/src/IceGrid/TreeNode/Adapter.java
index 405a2b22cca..4d3ea8c0d6a 100755
--- a/java/src/IceGrid/TreeNode/Adapter.java
+++ b/java/src/IceGrid/TreeNode/Adapter.java
@@ -8,17 +8,93 @@
// **********************************************************************
package IceGrid.TreeNode;
+import java.awt.Component;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
import IceGrid.AdapterDescriptor;
+import IceGrid.Model;
class Adapter extends Leaf
{
- Adapter(AdapterDescriptor descriptor, boolean inTemplate)
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
{
- super(descriptor.name);
+ if(_node == null)
+ {
+ return null;
+ }
+ else
+ {
+ if(_cellRenderer == null)
+ {
+ //
+ // Initialization
+ //
+ _cellRenderer = new DefaultTreeCellRenderer();
+ }
+
+ _cellRenderer.setToolTipText(_toolTip);
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+ }
+
+
+ Adapter(AdapterDescriptor descriptor, Model model, Node node)
+ {
+ super(descriptor.name, model);
_descriptor = descriptor;
- _inTemplate = inTemplate;
+ _node = node;
+
+ if(_node != null)
+ {
+ _proxy = node.registerAdapter(_descriptor.id, this);
+ createToolTip();
+ }
+ }
+
+ void unregister()
+ {
+ if(_node != null)
+ {
+ _node.unregisterAdapter(_descriptor.id);
+ _node = null;
+ }
+ }
+
+
+ void updateProxy(Ice.ObjectPrx proxy)
+ {
+ assert(_node != null);
+ _proxy = proxy;
+ createToolTip();
+ fireNodeChangedEvent(this);
+ }
+
+ private void createToolTip()
+ {
+ if(_proxy == null)
+ {
+ _toolTip = null;
+ }
+ else
+ {
+ _toolTip = "Proxy: " + _model.getCommunicator().proxyToString(_proxy);
+ }
}
private AdapterDescriptor _descriptor;
- private boolean _inTemplate;
+ private Node _node;
+ private Ice.ObjectPrx _proxy;
+ private String _toolTip;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
}
diff --git a/java/src/IceGrid/TreeNode/Adapters.java b/java/src/IceGrid/TreeNode/Adapters.java
index d6067de149f..ffc7aed73fd 100755
--- a/java/src/IceGrid/TreeNode/Adapters.java
+++ b/java/src/IceGrid/TreeNode/Adapters.java
@@ -9,25 +9,34 @@
package IceGrid.TreeNode;
import IceGrid.AdapterDescriptor;
+import IceGrid.Model;
class Adapters extends Parent
{
- Adapters(java.util.List descriptors, boolean inTemplate)
+ Adapters(java.util.List descriptors, Model model, Node node)
{
- super("Adapters");
+ super("Adapters", model);
_descriptors = descriptors;
- _inTemplate = inTemplate;
java.util.Iterator p = _descriptors.iterator();
while(p.hasNext())
{
AdapterDescriptor descriptor = (AdapterDescriptor)p.next();
- Adapter child = new Adapter(descriptor, _inTemplate);
+ Adapter child = new Adapter(descriptor, _model, node);
addChild(child);
}
}
+ void unregisterAll()
+ {
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ Adapter adapter = (Adapter)p.next();
+ adapter.unregister();
+ }
+ }
+
private java.util.List _descriptors;
- private boolean _inTemplate;
}
diff --git a/java/src/IceGrid/TreeNode/Application.java b/java/src/IceGrid/TreeNode/Application.java
index 00fa0b3e397..887788c6044 100755
--- a/java/src/IceGrid/TreeNode/Application.java
+++ b/java/src/IceGrid/TreeNode/Application.java
@@ -10,35 +10,42 @@ package IceGrid.TreeNode;
import IceGrid.ApplicationDescriptor;
import IceGrid.ApplicationUpdateDescriptor;
+import IceGrid.Model;
class Application extends Parent
{
//
// Builds the application and all its subtrees
//
- Application(ApplicationDescriptor descriptor, NodeViewRoot nodeViewRoot,
+ Application(ApplicationDescriptor descriptor, Model model,
boolean fireEvent)
{
- super(descriptor.name);
+ super(descriptor.name, model);
_descriptor = descriptor;
- _nodeViewRoot = nodeViewRoot;
- _serverTemplates = new ServerTemplates(_descriptor.serverTemplates);
+ _serverTemplates = new ServerTemplates(_descriptor.serverTemplates,
+ _model);
addChild(_serverTemplates);
- _serviceTemplates = new ServiceTemplates(_descriptor.serviceTemplates);
+ _serviceTemplates = new ServiceTemplates(_descriptor.serviceTemplates,
+ _model);
addChild(_serviceTemplates);
- _nodeVars = new NodeVars(_descriptor.nodes);
+ _nodeVars = new NodeVars(_descriptor.nodes, _model);
addChild(_nodeVars);
_serverInstances = new ServerInstances(_descriptor.servers,
- _nodeViewRoot,
+ _model,
fireEvent);
addChild(_serverInstances);
}
+ void removeFromNodes()
+ {
+ _serverInstances.removeFromNodes();
+ }
+
void update(ApplicationUpdateDescriptor desc)
{
//
@@ -97,7 +104,6 @@ class Application extends Parent
}
private ApplicationDescriptor _descriptor;
- private NodeViewRoot _nodeViewRoot;
//
// Children
diff --git a/java/src/IceGrid/TreeNode/ApplicationViewRoot.java b/java/src/IceGrid/TreeNode/ApplicationViewRoot.java
index 8cfe46713e4..40ee4686ea6 100755
--- a/java/src/IceGrid/TreeNode/ApplicationViewRoot.java
+++ b/java/src/IceGrid/TreeNode/ApplicationViewRoot.java
@@ -11,13 +11,13 @@ package IceGrid.TreeNode;
import IceGrid.ApplicationDescriptor;
import IceGrid.ApplicationUpdateDescriptor;
import IceGrid.TreeModelI;
+import IceGrid.Model;
public class ApplicationViewRoot extends Parent
{
- public ApplicationViewRoot(NodeViewRoot nodeViewRoot)
+ public ApplicationViewRoot(Model model)
{
- super("Applications", TreeModelI.APPLICATION_VIEW);
- _nodeViewRoot = nodeViewRoot;
+ super("Applications", model, TreeModelI.APPLICATION_VIEW);
}
//
@@ -31,7 +31,7 @@ public class ApplicationViewRoot extends Parent
while(p.hasNext())
{
ApplicationDescriptor descriptor = (ApplicationDescriptor)p.next();
- Application child = new Application(descriptor, _nodeViewRoot, false);
+ Application child = new Application(descriptor, _model, false);
addChild(child);
child.addParent(this);
}
@@ -40,7 +40,7 @@ public class ApplicationViewRoot extends Parent
// Fire structure change for both application and node views
//
fireStructureChangedEvent(this);
- _nodeViewRoot.fireStructureChangedEvent(this);
+ _model.getNodeViewRoot().fireStructureChangedEvent(this);
}
public void clear()
@@ -60,7 +60,7 @@ public class ApplicationViewRoot extends Parent
// This always fires insert events on the node view for the new server
// instances
//
- Application child = new Application(desc, _nodeViewRoot, true);
+ Application child = new Application(desc, _model, true);
child.addParent(this);
addChild(child, fireEvent);
return child;
@@ -73,6 +73,12 @@ public class ApplicationViewRoot extends Parent
private void applicationRemoved(String name, boolean fireEvent)
{
+ Application application = (Application)findChild(name);
+ if(application != null)
+ {
+ application.removeFromNodes();
+ }
+
removeChild(name, fireEvent);
}
@@ -88,6 +94,4 @@ public class ApplicationViewRoot extends Parent
Application application = (Application)findChild(desc.name);
application.update(desc);
}
-
- private NodeViewRoot _nodeViewRoot;
}
diff --git a/java/src/IceGrid/TreeNode/CommonBase.java b/java/src/IceGrid/TreeNode/CommonBase.java
index 3a7eb89a642..a17e06f5176 100755
--- a/java/src/IceGrid/TreeNode/CommonBase.java
+++ b/java/src/IceGrid/TreeNode/CommonBase.java
@@ -9,6 +9,7 @@
package IceGrid.TreeNode;
import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeCellRenderer;
import javax.swing.JPopupMenu;
import javax.swing.JPanel;
@@ -16,7 +17,7 @@ import javax.swing.JPanel;
// CommonBase is similar to javax.swing.tree.TreeNode
//
-public interface CommonBase
+public interface CommonBase extends TreeCellRenderer
{
Object getChildAt(int childIndex);
int getChildCount();
@@ -80,5 +81,4 @@ public interface CommonBase
// Get properties panel
//
JPanel getProperties(int view);
-
}
diff --git a/java/src/IceGrid/TreeNode/CommonBaseI.java b/java/src/IceGrid/TreeNode/CommonBaseI.java
index 5d39c01ec1a..40c3f8515ca 100755
--- a/java/src/IceGrid/TreeNode/CommonBaseI.java
+++ b/java/src/IceGrid/TreeNode/CommonBaseI.java
@@ -8,12 +8,15 @@
// **********************************************************************
package IceGrid.TreeNode;
+import java.awt.Component;
import javax.swing.tree.TreePath;
+import javax.swing.JTree;
import javax.swing.JPopupMenu;
import javax.swing.JPanel;
import javax.swing.event.TreeModelEvent;
import IceGrid.TreeModelI;
+import IceGrid.Model;
abstract class CommonBaseI implements CommonBase
{
@@ -109,6 +112,17 @@ abstract class CommonBaseI implements CommonBase
return null;
}
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ return null;
+ }
//
// Fires a nodesChanged event with this node for this specific view
@@ -140,7 +154,7 @@ abstract class CommonBaseI implements CommonBase
childIndices[0] = _parents[view].getIndex(this);
event = new TreeModelEvent(source, _parents[view].getPath(view), childIndices, children);
}
- TreeModelI.getTreeModel(view).fireNodesChangedEvent(event);
+ _model.getTreeModel(view).fireNodesChangedEvent(event);
}
//
@@ -166,7 +180,7 @@ abstract class CommonBaseI implements CommonBase
assert(_paths[view] != null);
TreeModelEvent event = new TreeModelEvent(source, _paths[view]);
- TreeModelI.getTreeModel(view).fireStructureChangedEvent(event);
+ _model.getTreeModel(view).fireStructureChangedEvent(event);
}
void fireStructureChangedEvent(Object source)
@@ -202,9 +216,10 @@ abstract class CommonBaseI implements CommonBase
return result;
}
- protected CommonBaseI(String id, int rootForView)
+ protected CommonBaseI(String id, Model model, int rootForView)
{
_id = id;
+ _model = model;
if(rootForView >= 0)
{
@@ -222,4 +237,9 @@ abstract class CommonBaseI implements CommonBase
// Id (application name, server instance name etc)
//
protected String _id;
+
+ //
+ // The Model
+ //
+ protected IceGrid.Model _model;
}
diff --git a/java/src/IceGrid/TreeNode/DbEnv.java b/java/src/IceGrid/TreeNode/DbEnv.java
index 81ee6e43f7b..88cc66b975c 100755
--- a/java/src/IceGrid/TreeNode/DbEnv.java
+++ b/java/src/IceGrid/TreeNode/DbEnv.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.DbEnvDescriptor;
+import IceGrid.Model;
class DbEnv extends Leaf
{
- DbEnv(DbEnvDescriptor descriptor, boolean inTemplate)
+ DbEnv(DbEnvDescriptor descriptor, Model model, boolean inTemplate)
{
- super(descriptor.name);
+ super(descriptor.name, model);
_descriptor = descriptor;
_inTemplate = inTemplate;
diff --git a/java/src/IceGrid/TreeNode/DbEnvs.java b/java/src/IceGrid/TreeNode/DbEnvs.java
index b1073f635b4..3ab34c2af59 100755
--- a/java/src/IceGrid/TreeNode/DbEnvs.java
+++ b/java/src/IceGrid/TreeNode/DbEnvs.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.DbEnvDescriptor;
+import IceGrid.Model;
class DbEnvs extends Parent
{
- DbEnvs(java.util.List descriptors, boolean inTemplate)
+ DbEnvs(java.util.List descriptors, Model model, boolean inTemplate)
{
- super("DbEnvs");
+ super("DbEnvs", model);
_descriptors = descriptors;
_inTemplate = inTemplate;
@@ -22,7 +23,7 @@ class DbEnvs extends Parent
while(p.hasNext())
{
DbEnvDescriptor descriptor = (DbEnvDescriptor)p.next();
- addChild(new DbEnv(descriptor, _inTemplate));
+ addChild(new DbEnv(descriptor, _model, _inTemplate));
}
}
diff --git a/java/src/IceGrid/TreeNode/Leaf.java b/java/src/IceGrid/TreeNode/Leaf.java
index 192e65382fa..7c2645b1c04 100755
--- a/java/src/IceGrid/TreeNode/Leaf.java
+++ b/java/src/IceGrid/TreeNode/Leaf.java
@@ -8,6 +8,8 @@
// **********************************************************************
package IceGrid.TreeNode;
+import IceGrid.Model;
+
//
// Common implementation for leaf nodes.
//
@@ -34,8 +36,8 @@ class Leaf extends CommonBaseI
return true;
}
- protected Leaf(String id)
+ protected Leaf(String id, Model model)
{
- super(id, -1);
+ super(id, model, -1);
}
}
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();
}
diff --git a/java/src/IceGrid/TreeNode/NodeVar.java b/java/src/IceGrid/TreeNode/NodeVar.java
index 81e0451aba5..864bf2c663b 100755
--- a/java/src/IceGrid/TreeNode/NodeVar.java
+++ b/java/src/IceGrid/TreeNode/NodeVar.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.NodeDescriptor;
+import IceGrid.Model;
class NodeVar extends Leaf
{
- NodeVar(NodeDescriptor descriptor)
+ NodeVar(NodeDescriptor descriptor, Model model)
{
- super(descriptor.name);
+ super(descriptor.name, model);
rebuild(descriptor);
}
diff --git a/java/src/IceGrid/TreeNode/NodeVars.java b/java/src/IceGrid/TreeNode/NodeVars.java
index c12e4bd9692..157348bf718 100755
--- a/java/src/IceGrid/TreeNode/NodeVars.java
+++ b/java/src/IceGrid/TreeNode/NodeVars.java
@@ -9,17 +9,18 @@
package IceGrid.TreeNode;
import IceGrid.NodeDescriptor;
+import IceGrid.Model;
class NodeVars extends Parent
{
- NodeVars(java.util.List descriptors)
+ NodeVars(java.util.List descriptors, Model model)
{
- super("Node settings");
+ super("Node settings", model);
java.util.Iterator p = descriptors.iterator();
while(p.hasNext())
{
NodeDescriptor descriptor = (NodeDescriptor)p.next();
- addChild(new NodeVar(descriptor));
+ addChild(new NodeVar(descriptor, model));
}
}
@@ -47,7 +48,7 @@ class NodeVars extends Parent
NodeVar child = (NodeVar)findChild(nodeDescriptor.name);
if(child == null)
{
- newChildren.add(new NodeVar(nodeDescriptor));
+ newChildren.add(new NodeVar(nodeDescriptor, _model));
}
else
{
diff --git a/java/src/IceGrid/TreeNode/NodeViewRoot.java b/java/src/IceGrid/TreeNode/NodeViewRoot.java
index 19b2ad432e2..fe2497b3dfc 100755
--- a/java/src/IceGrid/TreeNode/NodeViewRoot.java
+++ b/java/src/IceGrid/TreeNode/NodeViewRoot.java
@@ -11,17 +11,23 @@ package IceGrid.TreeNode;
import IceGrid.ApplicationDescriptor;
import IceGrid.NodeDescriptor;
import IceGrid.TreeModelI;
+import IceGrid.Model;
+import IceGrid.NodeDynamicInfo;
+import IceGrid.ServerDynamicInfo;
+import IceGrid.AdapterDynamicInfo;
+import IceGrid.ServerState;
public class NodeViewRoot extends Parent
{
- public NodeViewRoot()
+ public NodeViewRoot(Model model)
{
- super("Nodes", TreeModelI.NODE_VIEW);
+ super("Nodes", model, TreeModelI.NODE_VIEW);
}
public void init(java.util.List applications)
{
assert(_children.size() == 0);
+
java.util.Iterator p = applications.iterator();
while(p.hasNext())
{
@@ -33,6 +39,8 @@ public class NodeViewRoot extends Parent
public void clear()
{
_nodeMap.clear();
+ _nodeServerInfoMap.clear();
+ _nodeAdapterInfoMap.clear();
clearChildren();
fireStructureChangedEvent(this);
}
@@ -50,15 +58,16 @@ public class NodeViewRoot extends Parent
Node child = (Node)findChild(nodeName);
if(child == null)
{
- child = new Node(applicationName, descriptor);
+ java.util.Map serverInfoMap = (java.util.Map)_nodeServerInfoMap.get(nodeName);
+ java.util.Map adapterInfoMap = (java.util.Map)_nodeAdapterInfoMap.get(nodeName);
+ child = new Node(applicationName, _model, descriptor, serverInfoMap, adapterInfoMap);
_nodeMap.put(nodeName, child);
child.addParent(this);
addChild(child, fireEvent);
}
else
{
- child.addApplication(applicationName,
- descriptor);
+ child.addApplication(applicationName, descriptor);
}
}
}
@@ -112,6 +121,103 @@ public class NodeViewRoot extends Parent
}
}
+ public void nodeUp(NodeDynamicInfo updatedInfo)
+ {
+ String nodeName = updatedInfo.name;
+
+ java.util.Map serverMap = new java.util.HashMap();
+ System.err.println("nodeUp gives info on:");
+ for(int i = 0; i < updatedInfo.servers.length; ++i)
+ {
+ System.err.println(updatedInfo.servers[i].name);
+ if(updatedInfo.servers[i].state != ServerState.Destroyed)
+ {
+ serverMap.put(updatedInfo.servers[i].name, updatedInfo.servers[i]);
+ }
+ }
+
+ java.util.Map adapterMap = new java.util.HashMap();
+ for(int i = 0; i < updatedInfo.adapters.length; ++i)
+ {
+ if(updatedInfo.adapters[i].proxy != null)
+ {
+ adapterMap.put(updatedInfo.adapters[i].id, updatedInfo.adapters[i].proxy);
+ }
+ }
+
+ _nodeServerInfoMap.put(nodeName, serverMap);
+ _nodeAdapterInfoMap.put(nodeName, adapterMap);
+
+ Node node = findNode(nodeName);
+ if(node != null)
+ {
+ node.up(serverMap, adapterMap);
+ }
+ }
+
+ public void nodeDown(String nodeName)
+ {
+ _nodeServerInfoMap.remove(nodeName);
+ _nodeAdapterInfoMap.remove(nodeName);
+
+ Node node = findNode(nodeName);
+ if(node != null)
+ {
+ node.down();
+ }
+ }
+
+ public void updateServer(String nodeName, ServerDynamicInfo updatedInfo)
+ {
+ java.util.Map serverMap = (java.util.Map)_nodeServerInfoMap.get(nodeName);
+ if(serverMap != null)
+ {
+ if(updatedInfo.state == ServerState.Destroyed)
+ {
+ serverMap.remove(updatedInfo.name);
+ }
+ else
+ {
+ serverMap.put(updatedInfo.name, updatedInfo);
+ }
+
+ Node node = findNode(nodeName);
+ if(node != null)
+ {
+ node.updateServer(updatedInfo);
+ }
+ }
+ //
+ // Else log a warning?
+ //
+
+ }
+
+ public void updateAdapter(String nodeName, AdapterDynamicInfo updatedInfo)
+ {
+ java.util.Map adapterMap = (java.util.Map)_nodeAdapterInfoMap.get(nodeName);
+ if(adapterMap != null)
+ {
+ if(updatedInfo.proxy == null)
+ {
+ adapterMap.remove(updatedInfo.id);
+ }
+ else
+ {
+ adapterMap.put(updatedInfo.id, updatedInfo.proxy);
+ }
+
+ Node node = findNode(nodeName);
+ if(node != null)
+ {
+ node.updateAdapter(updatedInfo);
+ }
+ }
+ //
+ // Else log a warning?
+ //
+ }
+
Node findNode(String name)
{
@@ -119,4 +225,6 @@ public class NodeViewRoot extends Parent
}
private java.util.Map _nodeMap = new java.util.HashMap();
+ private java.util.Map _nodeServerInfoMap = new java.util.HashMap();
+ private java.util.Map _nodeAdapterInfoMap = new java.util.HashMap();
}
diff --git a/java/src/IceGrid/TreeNode/Parent.java b/java/src/IceGrid/TreeNode/Parent.java
index 2b275eb982e..5e53d1e6886 100755
--- a/java/src/IceGrid/TreeNode/Parent.java
+++ b/java/src/IceGrid/TreeNode/Parent.java
@@ -10,6 +10,7 @@ package IceGrid.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.event.TreeModelEvent;
+import IceGrid.Model;
import IceGrid.TreeModelI;
//
@@ -175,7 +176,7 @@ class Parent extends CommonBaseI
void removeChild(String id, boolean fireEvent)
{
- int i = 0;
+ int i = -1;
java.util.Iterator p = _children.iterator();
while(p.hasNext())
{
@@ -402,7 +403,7 @@ class Parent extends CommonBaseI
{
TreeModelEvent event = new TreeModelEvent(source, _paths[i],
childIndices, children);
- TreeModelI.getTreeModel(i).fireNodesInsertedEvent(event);
+ _model.getTreeModel(i).fireNodesInsertedEvent(event);
}
}
}
@@ -425,7 +426,7 @@ class Parent extends CommonBaseI
{
TreeModelEvent event = new TreeModelEvent(source, _paths[i],
childIndices, children);
- TreeModelI.getTreeModel(i).fireNodesRemovedEvent(event);
+ _model.getTreeModel(i).fireNodesRemovedEvent(event);
}
}
}
@@ -433,14 +434,14 @@ class Parent extends CommonBaseI
- Parent(String id, int rootForView)
+ Parent(String id, Model model, int rootForView)
{
- super(id, rootForView);
+ super(id, model, rootForView);
}
- Parent(String id)
+ Parent(String id, Model model)
{
- this(id, -1);
+ this(id, model, -1);
}
diff --git a/java/src/IceGrid/TreeNode/ServerInstance.java b/java/src/IceGrid/TreeNode/ServerInstance.java
index 2d3fac46db8..958aab0b188 100755
--- a/java/src/IceGrid/TreeNode/ServerInstance.java
+++ b/java/src/IceGrid/TreeNode/ServerInstance.java
@@ -8,14 +8,21 @@
// **********************************************************************
package IceGrid.TreeNode;
+import java.awt.Component;
import javax.swing.JPopupMenu;
import javax.swing.JPanel;
+import javax.swing.JTree;
+import javax.swing.Icon;
+import javax.swing.tree.DefaultTreeCellRenderer;
import IceGrid.TreeModelI;
import IceGrid.IceBoxDescriptor;
import IceGrid.ServerInstanceDescriptor;
import IceGrid.ServerState;
import IceGrid.TemplateDescriptor;
+import IceGrid.Utils;
+import IceGrid.Model;
+import IceGrid.ServerDynamicInfo;
class ServerInstance extends Parent
{
@@ -28,22 +35,86 @@ class ServerInstance extends Parent
{
return null;
}
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ //
+ // Initialization
+ //
+ _cellRenderer = new DefaultTreeCellRenderer();
+ _icons = new Icon[7];
+ _icons[0] = Utils.getIcon("/icons/unknown.png");
+ _icons[ServerState.Inactive.value() + 1] = Utils.getIcon("/icons/inactive.png");
+ _icons[ServerState.Activating.value() + 1] = Utils.getIcon("/icons/activating.png");
+ _icons[ServerState.Active.value() + 1] = Utils.getIcon("/icons/active.png");
+ _icons[ServerState.Deactivating.value() + 1] = Utils.getIcon("/icons/deactivating.png");
+ _icons[ServerState.Destroying.value() + 1] = Utils.getIcon("/icons/destroying.png");
+ _icons[ServerState.Destroyed.value() + 1] = Utils.getIcon("/icons/destroyed.png");
+ }
+
+ //
+ // TODO: separate icons for open and close
+ //
+ if(expanded)
+ {
+ _cellRenderer.setOpenIcon(_icons[_stateIconIndex]);
+ }
+ else
+ {
+ _cellRenderer.setClosedIcon(_icons[_stateIconIndex]);
+ }
+
+ _cellRenderer.setToolTipText(_toolTip);
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
//
// Builds the server instance and all its sub-tree
//
ServerInstance(ServerInstanceDescriptor descriptor,
- NodeViewRoot nodeViewRoot,
+ Model model,
boolean fireNodeViewEvent)
{
- super(descriptor.descriptor.name);
- _state = ServerState.Inactive;
- _pid = 0;
- _nodeViewRoot = nodeViewRoot;
+ super(descriptor.descriptor.name, model);
rebuild(descriptor, fireNodeViewEvent);
}
+
+ void removeFromNode()
+ {
+ removeFromNode(true);
+ }
+
+ private void removeFromNode(boolean fireNodeViewEvent)
+ {
+ if(_serviceInstances != null)
+ {
+ _serviceInstances.unregisterAdapters();
+ }
+ if(_adapters != null)
+ {
+ _adapters.unregisterAll();
+ }
+
+ Node node = (Node)getParent(TreeModelI.NODE_VIEW);
+ if(node != null)
+ {
+ node.removeChild(_id, fireNodeViewEvent);
+ }
+ }
+
//
// Update the server instance and all its subtree
//
@@ -51,6 +122,7 @@ class ServerInstance extends Parent
boolean fireNodeViewEvent)
{
assert(newDescriptor != null);
+ removeFromNode(fireNodeViewEvent);
clearChildren();
//
@@ -75,14 +147,19 @@ class ServerInstance extends Parent
removeParent(parent);
((Parent)parent).removeChild(this);
}
-
_descriptor = newDescriptor;
+ Node node = _model.getNodeViewRoot().findNode(_descriptor.node);
+
if(_descriptor.descriptor instanceof IceBoxDescriptor)
{
_iceBoxDescriptor = (IceBoxDescriptor)_descriptor.descriptor;
- _serviceInstances = new ServiceInstances(_iceBoxDescriptor.services);
+ //
+ // We need to pass the node to register the adapters
+ //
+ _serviceInstances = new ServiceInstances(_iceBoxDescriptor.services,
+ _model, node);
addChild(_serviceInstances);
_serviceInstances.addParent(this); // no-op when newNode == true
}
@@ -91,41 +168,43 @@ class ServerInstance extends Parent
_iceBoxDescriptor = null;
}
- _adapters = new Adapters(_descriptor.descriptor.adapters, false);
+ _adapters = new Adapters(_descriptor.descriptor.adapters, _model, node);
addChild(_adapters);
_adapters.addParent(this); // no-op when newNode == true
- _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, false);
+ _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, _model, false);
addChild(_dbEnvs);
_dbEnvs.addParent(this); // no-op when newNode == true
if(newNode)
{
- Node node = _nodeViewRoot.findNode(_descriptor.node);
+ updateDynamicInfo(node.getServerDynamicInfo(_id), false);
addParent(node); // propagates to children
node.addChild(this, fireNodeViewEvent);
}
}
+
+ void updateDynamicInfo(ServerDynamicInfo info)
+ {
+ updateDynamicInfo(info, true);
+ }
- void updateDynamicInfo(ServerState state, int pid)
+ private void updateDynamicInfo(ServerDynamicInfo info, boolean fireEvent)
{
- if(state != _state)
- {
- _state = state;
- _pid = pid;
-
- //
- // Change the node representation in all views
- //
- fireNodeChangedEvent(this);
- }
- else
+ if(info.state != _state || info.pid != _pid)
{
- //
- // We don't show the pid on the GUI, so no need
- // to fire any event.
- //
- _pid = pid;
+ _state = info.state;
+ _pid = info.pid;
+ _toolTip = toolTip(info.state, info.pid);
+ _stateIconIndex = (_state == null ? 0 : _state.value() + 1);
+
+ if(fireEvent)
+ {
+ //
+ // Change the node representation in all views
+ //
+ fireNodeChangedEvent(this);
+ }
}
}
@@ -142,10 +221,21 @@ class ServerInstance extends Parent
return result;
}
+ private static String toolTip(ServerState state, int pid)
+ {
+ String result = (state == null ? "Unknown" : state.toString());
- private NodeViewRoot _nodeViewRoot;
- private ServerState _state;
- private int _pid;
+ if(pid != 0)
+ {
+ result += ", pid: " + pid;
+ }
+ return result;
+ }
+
+ private ServerState _state = null;
+ private int _stateIconIndex = 0;
+ private int _pid = 0;
+ private String _toolTip = toolTip(_state, _pid);
private ServerInstanceDescriptor _descriptor;
private TemplateDescriptor _templateDescriptor;
@@ -157,5 +247,8 @@ class ServerInstance extends Parent
private ServiceInstances _serviceInstances;
private Adapters _adapters;
private DbEnvs _dbEnvs;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+ static private Icon[] _icons;
}
diff --git a/java/src/IceGrid/TreeNode/ServerInstances.java b/java/src/IceGrid/TreeNode/ServerInstances.java
index b3a28f12fa0..6477f03d4e9 100755
--- a/java/src/IceGrid/TreeNode/ServerInstances.java
+++ b/java/src/IceGrid/TreeNode/ServerInstances.java
@@ -9,16 +9,16 @@
package IceGrid.TreeNode;
import IceGrid.ServerInstanceDescriptor;
+import IceGrid.Model;
class ServerInstances extends Parent
{
ServerInstances(java.util.List descriptors,
- NodeViewRoot nodeViewRoot,
+ Model model,
boolean fireEvent)
{
- super("Server instances");
+ super("Server instances", model);
_descriptors = descriptors;
- _nodeViewRoot = nodeViewRoot;
java.util.Iterator p = _descriptors.iterator();
while(p.hasNext())
@@ -31,7 +31,7 @@ class ServerInstances extends Parent
(ServerInstanceDescriptor)p.next();
ServerInstance child = new ServerInstance(descriptor,
- _nodeViewRoot,
+ _model,
fireEvent);
addChild(child);
}
@@ -46,6 +46,11 @@ class ServerInstances extends Parent
//
// One big set of removes
//
+ for(int i = 0; i < removeServers.length; ++i)
+ {
+ ServerInstance server = (ServerInstance)findChild(removeServers[i]);
+ server.removeFromNode();
+ }
removeChildren(removeServers);
//
@@ -61,7 +66,7 @@ class ServerInstances extends Parent
ServerInstance child = (ServerInstance)findChild(descriptor.descriptor.name);
if(child == null)
{
- newChildren.add(new ServerInstance(descriptor, _nodeViewRoot, true));
+ newChildren.add(new ServerInstance(descriptor, _model, true));
}
else
{
@@ -74,6 +79,16 @@ class ServerInstances extends Parent
addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
}
+ void removeFromNodes()
+ {
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ ServerInstance server = (ServerInstance)p.next();
+ server.removeFromNode();
+ }
+ }
+
+
private java.util.List _descriptors;
- private NodeViewRoot _nodeViewRoot;
}
diff --git a/java/src/IceGrid/TreeNode/ServerTemplate.java b/java/src/IceGrid/TreeNode/ServerTemplate.java
index 0a93dc255aa..a195ece99a7 100755
--- a/java/src/IceGrid/TreeNode/ServerTemplate.java
+++ b/java/src/IceGrid/TreeNode/ServerTemplate.java
@@ -10,12 +10,13 @@ package IceGrid.TreeNode;
import IceGrid.IceBoxDescriptor;
import IceGrid.TemplateDescriptor;
+import IceGrid.Model;
class ServerTemplate extends Parent
{
- ServerTemplate(String name, TemplateDescriptor descriptor)
+ ServerTemplate(String name, Model model, TemplateDescriptor descriptor)
{
- super(name);
+ super(name, model);
rebuild(descriptor);
}
@@ -33,7 +34,7 @@ class ServerTemplate extends Parent
{
_iceBoxDescriptor = (IceBoxDescriptor)_descriptor.descriptor;
- _serviceInstances = new ServiceInstances(_iceBoxDescriptor.services);
+ _serviceInstances = new ServiceInstances(_iceBoxDescriptor.services, _model, null);
addChild(_serviceInstances);
}
else
@@ -42,10 +43,10 @@ class ServerTemplate extends Parent
_iceBoxDescriptor = null;
}
- _adapters = new Adapters(_descriptor.descriptor.adapters, true);
+ _adapters = new Adapters(_descriptor.descriptor.adapters, _model, null);
addChild(_adapters);
- _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, true);
+ _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, _model, true);
addChild(_dbEnvs);
}
diff --git a/java/src/IceGrid/TreeNode/ServerTemplates.java b/java/src/IceGrid/TreeNode/ServerTemplates.java
index 4882f13c32c..3c59b50620a 100755
--- a/java/src/IceGrid/TreeNode/ServerTemplates.java
+++ b/java/src/IceGrid/TreeNode/ServerTemplates.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.TemplateDescriptor;
+import IceGrid.Model;
class ServerTemplates extends Parent
{
- ServerTemplates(java.util.Map descriptors)
+ ServerTemplates(java.util.Map descriptors, Model model)
{
- super("Server templates");
+ super("Server templates", model);
_descriptors = descriptors;
@@ -23,7 +24,7 @@ class ServerTemplates extends Parent
while(p.hasNext())
{
java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
- addChild(new ServerTemplate((String)entry.getKey(),
+ addChild(new ServerTemplate((String)entry.getKey(), _model,
(TemplateDescriptor)entry.getValue()));
}
}
@@ -54,7 +55,7 @@ class ServerTemplates extends Parent
ServerTemplate child = (ServerTemplate)findChild(name);
if(child == null)
{
- newChildren.add(new ServerTemplate(name, templateDescriptor));
+ newChildren.add(new ServerTemplate(name, _model, templateDescriptor));
}
else
{
diff --git a/java/src/IceGrid/TreeNode/ServiceInstance.java b/java/src/IceGrid/TreeNode/ServiceInstance.java
index 3cf2ddf41ac..0ac0c8e7f36 100755
--- a/java/src/IceGrid/TreeNode/ServiceInstance.java
+++ b/java/src/IceGrid/TreeNode/ServiceInstance.java
@@ -10,22 +10,25 @@ package IceGrid.TreeNode;
import IceGrid.ServiceInstanceDescriptor;
import IceGrid.TemplateDescriptor;
+import IceGrid.Model;
class ServiceInstance extends Parent
{
- ServiceInstance(ServiceInstanceDescriptor descriptor)
+ ServiceInstance(ServiceInstanceDescriptor descriptor, Model model, Node node)
{
- super(descriptor.descriptor.name);
+ super(descriptor.descriptor.name, model);
_descriptor = descriptor;
- if(_descriptor.descriptor != null)
- {
- _adapters = new Adapters(_descriptor.descriptor.adapters, false);
- addChild(_adapters);
+ _adapters = new Adapters(_descriptor.descriptor.adapters, _model, node);
+ addChild(_adapters);
- _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, false);
- addChild(_dbEnvs);
- }
+ _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, _model, false);
+ addChild(_dbEnvs);
+ }
+
+ void unregisterAdapters()
+ {
+ _adapters.unregisterAll();
}
public String toString()
diff --git a/java/src/IceGrid/TreeNode/ServiceInstances.java b/java/src/IceGrid/TreeNode/ServiceInstances.java
index 745b7805746..40c2934442d 100755
--- a/java/src/IceGrid/TreeNode/ServiceInstances.java
+++ b/java/src/IceGrid/TreeNode/ServiceInstances.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.ServiceInstanceDescriptor;
+import IceGrid.Model;
class ServiceInstances extends Parent
{
- ServiceInstances(java.util.List descriptors)
+ ServiceInstances(java.util.List descriptors, Model model, Node node)
{
- super("Service instances");
+ super("Service instances", model);
_descriptors = descriptors;
java.util.Iterator p = _descriptors.iterator();
@@ -22,7 +23,17 @@ class ServiceInstances extends Parent
{
ServiceInstanceDescriptor descriptor =
(ServiceInstanceDescriptor)p.next();
- addChild(new ServiceInstance(descriptor));
+ addChild(new ServiceInstance(descriptor, _model, node));
+ }
+ }
+
+ void unregisterAdapters()
+ {
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ ServiceInstance instance = (ServiceInstance)p.next();
+ instance.unregisterAdapters();
}
}
diff --git a/java/src/IceGrid/TreeNode/ServiceTemplate.java b/java/src/IceGrid/TreeNode/ServiceTemplate.java
index 775a688ed39..f1846ec462b 100755
--- a/java/src/IceGrid/TreeNode/ServiceTemplate.java
+++ b/java/src/IceGrid/TreeNode/ServiceTemplate.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.TemplateDescriptor;
+import IceGrid.Model;
class ServiceTemplate extends Parent
{
- ServiceTemplate(String name, TemplateDescriptor descriptor)
+ ServiceTemplate(String name, Model model, TemplateDescriptor descriptor)
{
- super(name);
+ super(name, model);
rebuild(descriptor);
}
@@ -28,10 +29,10 @@ class ServiceTemplate extends Parent
//
java.util.Collections.sort(_descriptor.parameters);
- _adapters = new Adapters(_descriptor.descriptor.adapters, true);
+ _adapters = new Adapters(_descriptor.descriptor.adapters, _model, null);
addChild(_adapters);
- _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, true);
+ _dbEnvs = new DbEnvs(_descriptor.descriptor.dbEnvs, _model, true);
addChild(_dbEnvs);
}
diff --git a/java/src/IceGrid/TreeNode/ServiceTemplates.java b/java/src/IceGrid/TreeNode/ServiceTemplates.java
index b50cc633f36..aaf1609b4a1 100755
--- a/java/src/IceGrid/TreeNode/ServiceTemplates.java
+++ b/java/src/IceGrid/TreeNode/ServiceTemplates.java
@@ -9,12 +9,13 @@
package IceGrid.TreeNode;
import IceGrid.TemplateDescriptor;
+import IceGrid.Model;
class ServiceTemplates extends Parent
{
- ServiceTemplates(java.util.Map descriptors)
+ ServiceTemplates(java.util.Map descriptors, Model model)
{
- super("Service templates");
+ super("Service templates", model);
_descriptors = descriptors;
@@ -23,7 +24,7 @@ class ServiceTemplates extends Parent
while(p.hasNext())
{
java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
- addChild(new ServiceTemplate((String)entry.getKey(),
+ addChild(new ServiceTemplate((String)entry.getKey(), _model,
(TemplateDescriptor)entry.getValue()));
}
}
@@ -54,7 +55,7 @@ class ServiceTemplates extends Parent
ServiceTemplate child = (ServiceTemplate)findChild(name);
if(child == null)
{
- newChildren.add(new ServiceTemplate(name, templateDescriptor));
+ newChildren.add(new ServiceTemplate(name, _model, templateDescriptor));
}
else
{
diff --git a/java/src/IceGrid/Utils.java b/java/src/IceGrid/Utils.java
new file mode 100755
index 00000000000..14d329c71ae
--- /dev/null
+++ b/java/src/IceGrid/Utils.java
@@ -0,0 +1,22 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGrid;
+
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+
+public class Utils
+{
+ static public Icon getIcon(String path)
+ {
+ java.net.URL imgURL = Utils.class.getResource(path);
+ assert(imgURL != null);
+ return new ImageIcon(imgURL);
+ }
+}