diff options
Diffstat (limited to 'java/src')
-rwxr-xr-x | java/src/IceGrid/MainPane.java | 140 | ||||
-rwxr-xr-x | java/src/IceGrid/Model.java | 18 | ||||
-rwxr-xr-x | java/src/IceGrid/SessionKeeper.java | 2 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeModelI.java | 4 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Application.java | 6 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/CommonBase.java | 8 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/CommonBaseI.java | 38 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ServerDescriptorRenderer.java | 165 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ServerInstance.java | 148 | ||||
-rwxr-xr-x | java/src/IceGrid/Utils.java | 81 |
10 files changed, 574 insertions, 36 deletions
diff --git a/java/src/IceGrid/MainPane.java b/java/src/IceGrid/MainPane.java index 97ed8422f91..8ad3819e6a8 100755 --- a/java/src/IceGrid/MainPane.java +++ b/java/src/IceGrid/MainPane.java @@ -11,7 +11,14 @@ package IceGrid; import java.util.prefs.Preferences; import java.util.prefs.BackingStoreException; import javax.swing.*; + +import javax.swing.event.ChangeListener; +import javax.swing.event.ChangeEvent; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; + import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreeSelectionModel; import javax.swing.tree.TreePath; import java.awt.*; import java.awt.event.WindowAdapter; @@ -20,10 +27,13 @@ import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; + import com.jgoodies.looks.Options; import com.jgoodies.looks.plastic.PlasticLookAndFeel; import com.jgoodies.looks.windows.WindowsLookAndFeel; import com.jgoodies.forms.factories.Borders; +import com.jgoodies.uif_lite.panel.SimpleInternalFrame; + import javax.swing.border.EmptyBorder; import javax.swing.plaf.SplitPaneUI; @@ -33,9 +43,9 @@ import javax.swing.border.AbstractBorder; import IceGrid.TreeNode.CommonBase; -public class MainPane extends JSplitPane +public class MainPane extends JSplitPane implements Model.TreeNodeSelector { - class PopupListener extends MouseAdapter + static class PopupListener extends MouseAdapter { public void mousePressed(MouseEvent e) { @@ -68,6 +78,68 @@ public class MainPane extends JSplitPane } } + class SelectionListener implements TreeSelectionListener + { + SelectionListener(int view) + { + _view = view; + } + + public void valueChanged(TreeSelectionEvent e) + { + TreePath path = e.getPath(); + if(path != null) + { + CommonBase node = (CommonBase)path.getLastPathComponent(); + node.displayProperties(_rightPane, _view); + } + } + + private int _view; + + } + + class TabListener implements ChangeListener + { + public void stateChanged(ChangeEvent e) + { + JTabbedPane tabbedPane = (JTabbedPane)e.getSource(); + int selectedPane = tabbedPane.getSelectedIndex(); + if(selectedPane >= 0) + { + if(_treeList.size() > selectedPane) + { + JTree tree = (JTree)_treeList.get(selectedPane); + TreePath path = tree.getSelectionPath(); + if(path != null) + { + CommonBase node = (CommonBase)path.getLastPathComponent(); + + // + // Assumes the pane indexing matches the view indexing + // + node.displayProperties(_rightPane, selectedPane); + return; + } + } + } + if(_rightPane != null) + { + _rightPane.setTitle("Properties"); + _rightPane.setContent(_emptyPanel); + _rightPane.validate(); + _rightPane.repaint(); + } + } + + void add(JTree tree) + { + _treeList.add(tree); + } + + private java.util.List _treeList = new java.util.Vector(); + } + public void updateUI() { @@ -80,7 +152,7 @@ public class MainPane extends JSplitPane SplitPaneUI splitPaneUI = getUI(); if(splitPaneUI instanceof BasicSplitPaneUI) { - BasicSplitPaneUI basicUI = (BasicSplitPaneUI) splitPaneUI; + BasicSplitPaneUI basicUI = (BasicSplitPaneUI)splitPaneUI; basicUI.getDivider().setBorder(BorderFactory.createEmptyBorder()); } } @@ -90,23 +162,34 @@ public class MainPane extends JSplitPane { super(JSplitPane.HORIZONTAL_SPLIT, true); _model = model; - setBorder(new EmptyBorder(10, 10, 10, 10)); + _model.setTreeNodeSelector(this); + setBorder(new EmptyBorder(10, 10, 10, 10)); + // // Left pane // - JTabbedPane tabbedPane = new JTabbedPane(); - tabbedPane.setMinimumSize(new Dimension(200, 300)); - tabbedPane.putClientProperty(Options.NO_CONTENT_BORDER_KEY, Boolean.TRUE); - tabbedPane.setBorder(new ShadowBorder()); + _tabbedPane = new JTabbedPane(); + _tabbedPane.setMinimumSize(new Dimension(200, 300)); + _tabbedPane.putClientProperty(Options.NO_CONTENT_BORDER_KEY, Boolean.TRUE); + _tabbedPane.setBorder(new ShadowBorder()); + TabListener tabListener = new TabListener(); + _tabbedPane.addChangeListener(tabListener); TreeCellRenderer renderer = new CellRenderer(); PopupListener popupListener = new PopupListener(); + JTree nodeTree = new JTree(_model.getTreeModel(TreeModelI.NODE_VIEW)); nodeTree.setCellRenderer(renderer); ToolTipManager.sharedInstance().registerComponent(nodeTree); nodeTree.addMouseListener(popupListener); + + nodeTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + SelectionListener treeSelectionListener = new SelectionListener(TreeModelI.NODE_VIEW); + nodeTree.addTreeSelectionListener(treeSelectionListener); + nodeTree.setRootVisible(true); + _treeArray[0] = nodeTree; JScrollPane nodeScroll = @@ -116,37 +199,54 @@ public class MainPane extends JSplitPane nodeScroll.setBorder(Borders.DIALOG_BORDER); - tabbedPane.addTab("Node View", nodeScroll); + _tabbedPane.addTab("Node View", nodeScroll); + tabListener.add(nodeTree); JTree appTree = new JTree(_model.getTreeModel(TreeModelI.APPLICATION_VIEW)); appTree.setCellRenderer(renderer); ToolTipManager.sharedInstance().registerComponent(appTree); appTree.addMouseListener(popupListener); + appTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + SelectionListener appSelectionListener = new SelectionListener(TreeModelI.APPLICATION_VIEW); + appTree.addTreeSelectionListener(appSelectionListener); + appTree.setRootVisible(true); + _treeArray[1] = appTree; + JScrollPane appScroll = new JScrollPane(appTree, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); appScroll.setBorder(Borders.DIALOG_BORDER); - tabbedPane.addTab("Application View", appScroll); - + _tabbedPane.addTab("Application View", appScroll); + tabListener.add(appTree); JPanel leftPane = new JPanel(new BorderLayout()); - leftPane.add(tabbedPane); + leftPane.add(_tabbedPane); // // Right pane // - JPanel rightPane = new com.jgoodies.uif_lite.panel.SimpleInternalFrame("Properties"); + _rightPane = new SimpleInternalFrame("Properties"); + _emptyPanel = new JPanel(); + _emptyPanel.setBackground(Color.RED); + _rightPane.setContent(_emptyPanel); - /* JScrollPane rightPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, - JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - */ setLeftComponent(leftPane); - setRightComponent(rightPane); + setRightComponent(_rightPane); + } + + public void selectNode(TreePath path, int view) + { + if(_tabbedPane.getSelectedIndex() != view) + { + _tabbedPane.setSelectedIndex(view); + } + _treeArray[view].setSelectionPath(path); } + // // Adapted from JGoodies SimpleInternalFrame // @@ -199,4 +299,10 @@ public class MainPane extends JSplitPane } private Model _model; + + private JTabbedPane _tabbedPane; + private JTree[] _treeArray = new JTree[TreeModelI.VIEW_COUNT]; + private SimpleInternalFrame _rightPane; + + static private JPanel _emptyPanel; } diff --git a/java/src/IceGrid/Model.java b/java/src/IceGrid/Model.java index 2eb2d548ac8..f44db467edb 100755 --- a/java/src/IceGrid/Model.java +++ b/java/src/IceGrid/Model.java @@ -15,6 +15,7 @@ import java.awt.Cursor; import javax.swing.tree.TreeModel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
+import javax.swing.tree.TreePath;
import IceGrid.TreeNode.NodeViewRoot;
import IceGrid.TreeNode.ApplicationViewRoot;
@@ -97,6 +98,11 @@ public class Model // -- adapters, databases (see above)
+ public static interface TreeNodeSelector
+ {
+ void selectNode(TreePath path, int view);
+ }
+
public static class ConnectInfo
{
ConnectInfo(Preferences connectionPrefs,
@@ -369,6 +375,16 @@ public class Model return _statusBar;
}
+ public void setTreeNodeSelector(TreeNodeSelector selector)
+ {
+ _treeNodeSelector = selector;
+ }
+
+ public TreeNodeSelector getTreeNodeSelector()
+ {
+ return _treeNodeSelector;
+ }
+
Model(Ice.Communicator communicator, StatusBar statusBar)
{
@@ -396,4 +412,6 @@ public class Model private TreeModelI _applicationModel;
private int _latestSerial = -1;
+
+ private TreeNodeSelector _treeNodeSelector;
}
diff --git a/java/src/IceGrid/SessionKeeper.java b/java/src/IceGrid/SessionKeeper.java index 21faaa5f92f..c8f636eaeff 100755 --- a/java/src/IceGrid/SessionKeeper.java +++ b/java/src/IceGrid/SessionKeeper.java @@ -117,7 +117,7 @@ class SessionKeeper builder.nextLine();
builder.append("Username", _username);
builder.nextLine();
- builder.append(_passwordLabel,_password);
+ builder.append(_passwordLabel, _password);
builder.appendSeparator("Options");
builder.append("", _useGlacier);
builder.nextLine();
diff --git a/java/src/IceGrid/TreeModelI.java b/java/src/IceGrid/TreeModelI.java index ebb710bf348..9037500d3ee 100755 --- a/java/src/IceGrid/TreeModelI.java +++ b/java/src/IceGrid/TreeModelI.java @@ -24,8 +24,8 @@ public class TreeModelI implements TreeModel //
// Available views
//
- static public final int APPLICATION_VIEW = 0;
- static public final int NODE_VIEW = 1;
+ static public final int NODE_VIEW = 0;
+ static public final int APPLICATION_VIEW = 1;
static public final int VIEW_COUNT = 2;
diff --git a/java/src/IceGrid/TreeNode/Application.java b/java/src/IceGrid/TreeNode/Application.java index 195dd921167..0453f5283ef 100755 --- a/java/src/IceGrid/TreeNode/Application.java +++ b/java/src/IceGrid/TreeNode/Application.java @@ -112,6 +112,12 @@ class Application extends Parent _serverInstances.update(desc.servers, desc.removeServers);
}
+ ServerTemplate findServerTemplate(String id)
+ {
+ return (ServerTemplate)_serverTemplates.findChild(id);
+ }
+
+
private ApplicationDescriptor _descriptor;
//
diff --git a/java/src/IceGrid/TreeNode/CommonBase.java b/java/src/IceGrid/TreeNode/CommonBase.java index a17e06f5176..c71f3816cd2 100755 --- a/java/src/IceGrid/TreeNode/CommonBase.java +++ b/java/src/IceGrid/TreeNode/CommonBase.java @@ -13,6 +13,8 @@ import javax.swing.tree.TreeCellRenderer; import javax.swing.JPopupMenu;
import javax.swing.JPanel;
+import com.jgoodies.uif_lite.panel.SimpleInternalFrame;
+
//
// CommonBase is similar to javax.swing.tree.TreeNode
//
@@ -77,8 +79,6 @@ public interface CommonBase extends TreeCellRenderer //
JPopupMenu getPopupMenu();
- //
- // Get properties panel
- //
- JPanel getProperties(int view);
+ void displayProperties(SimpleInternalFrame frame, int view);
+
}
diff --git a/java/src/IceGrid/TreeNode/CommonBaseI.java b/java/src/IceGrid/TreeNode/CommonBaseI.java index 40c3f8515ca..e2ff879cc36 100755 --- a/java/src/IceGrid/TreeNode/CommonBaseI.java +++ b/java/src/IceGrid/TreeNode/CommonBaseI.java @@ -9,11 +9,16 @@ package IceGrid.TreeNode;
import java.awt.Component;
-import javax.swing.tree.TreePath;
-import javax.swing.JTree;
import javax.swing.JPopupMenu;
+import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JTree;
import javax.swing.event.TreeModelEvent;
+import javax.swing.tree.TreePath;
+
+import com.jgoodies.uif_lite.panel.SimpleInternalFrame;
+import com.jgoodies.forms.factories.Borders;
+import com.jgoodies.forms.factories.DefaultComponentFactory;
import IceGrid.TreeModelI;
import IceGrid.Model;
@@ -104,12 +109,20 @@ abstract class CommonBaseI implements CommonBase return null;
}
- public JPanel getProperties(int view)
+ public void displayProperties(SimpleInternalFrame frame, int view)
{
- //
- // TODO: nicer emptyx panel
- //
- return null;
+ if(_panel == null)
+ {
+ JLabel label = DefaultComponentFactory.getInstance().createTitle("This element has no property");
+ _panel = new JPanel();
+ _panel.add(label);
+ _panel.setBorder(Borders.DIALOG_BORDER);
+ }
+
+ frame.setTitle("Properties");
+ frame.setContent(_panel);
+ frame.validate();
+ frame.repaint();
}
public Component getTreeCellRendererComponent(
@@ -227,6 +240,12 @@ abstract class CommonBaseI implements CommonBase }
}
+ Model getModel()
+ {
+ return _model;
+ }
+
+
//
// view to Path/Parent arrays
//
@@ -242,4 +261,9 @@ abstract class CommonBaseI implements CommonBase // The Model
//
protected IceGrid.Model _model;
+
+ //
+ // The default panel
+ //
+ protected JPanel _panel;
}
diff --git a/java/src/IceGrid/TreeNode/ServerDescriptorRenderer.java b/java/src/IceGrid/TreeNode/ServerDescriptorRenderer.java new file mode 100755 index 00000000000..6aa8b8e5bdd --- /dev/null +++ b/java/src/IceGrid/TreeNode/ServerDescriptorRenderer.java @@ -0,0 +1,165 @@ +// **********************************************************************
+//
+// 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.TreeNode;
+
+import IceGrid.ServerDescriptor;
+import IceGrid.IceBoxDescriptor;
+import IceGrid.PropertyDescriptor;
+import IceGrid.Utils;
+
+import javax.swing.JTextField;
+import javax.swing.JTextArea;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
+
+class ServerDescriptorRenderer
+{
+ void build(DefaultFormBuilder builder)
+ {
+ builder.appendSeparator("Server Descriptor");
+ builder.append("Name");
+ builder.append(_name, 3);
+ builder.nextLine();
+ builder.append("Properties");
+ builder.append(_properties, 3);
+ builder.nextLine();
+ builder.append("Comment");
+ builder.nextLine();
+ builder.append("");
+ builder.nextRow(-2);
+ CellConstraints cc = new CellConstraints();
+ JScrollPane scrollPane = new JScrollPane(_comment);
+ builder.add(scrollPane,
+ cc.xywh(builder.getColumn(), builder.getRow(), 3, 3));
+ builder.nextRow(2);
+ builder.nextLine();
+ builder.append("Command");
+ builder.append(_exe, 3);
+ builder.nextLine();
+ builder.append("Command Arguments");
+ builder.append(_options, 3);
+ builder.nextLine();
+ builder.append("Working Directory");
+ builder.append(_pwd, 3);
+ builder.nextLine();
+ builder.append("Interpreter");
+ builder.append(_interpreter, 3);
+ builder.nextLine();
+ builder.append("Interpreter Options");
+ builder.append(_interpreterOptions, 3);
+ builder.nextLine();
+ builder.append("Environment Variables");
+ builder.append(_envs, 3);
+ builder.nextLine();
+ builder.append("Activation Mode");
+ builder.append(_activation, 3);
+ builder.nextLine();
+ builder.append(_endpointsLabel);
+ builder.append(_endpoints, 3);
+
+ //
+ // Make every component non-editable (they are just for show)
+ //
+ _name.setEditable(false);
+ _properties.setEditable(false);
+ _comment.setEditable(false);
+ _comment.setOpaque(false);
+ _exe.setEditable(false);
+ _options.setEditable(false);
+ _pwd.setEditable(false);
+ _interpreter.setEditable(false);
+ _interpreterOptions.setEditable(false);
+ _envs.setEditable(false);
+ _activation.setEditable(false);
+ _endpoints.setEditable(false);
+ }
+
+ void showDescriptor(ServerDescriptor descriptor)
+ {
+ //
+ // Unfortunately this does not resize the panel;
+ // not a big deal for just one line
+ //
+ if(descriptor instanceof IceBoxDescriptor)
+ {
+ IceBoxDescriptor iceBoxDescriptor = (IceBoxDescriptor)descriptor;
+ _endpoints.setText(iceBoxDescriptor.endpoints);
+ _endpointsLabel.setVisible(true);
+ _endpoints.setVisible(true);
+ }
+ else
+ {
+ _endpointsLabel.setVisible(false);
+ _endpoints.setVisible(false);
+ }
+
+ _name.setText(descriptor.name);
+
+ Ice.StringHolder toolTipHolder = new Ice.StringHolder();
+
+ Utils.Stringifier propertyStringifier = new Utils.Stringifier()
+ {
+ public String toString(Object obj)
+ {
+ PropertyDescriptor pd = (PropertyDescriptor)obj;
+ return pd.name + "=" + pd.value;
+ }
+ };
+
+ _properties.setText(Utils.stringify(descriptor.properties, propertyStringifier,
+ ", ", toolTipHolder));
+ _properties.setToolTipText(toolTipHolder.value);
+
+ _comment.setText(descriptor.comment);
+ _exe.setText(descriptor.exe);
+
+ _options.setText(Utils.stringify(descriptor.options, " ", toolTipHolder));
+ _options.setToolTipText(toolTipHolder.value);
+
+ _interpreter.setText(descriptor.interpreter);
+
+ _interpreterOptions.setText(Utils.stringify(descriptor.interpreterOptions, " ", toolTipHolder));
+ _interpreterOptions.setToolTipText(toolTipHolder.value);
+
+
+ _envs.setText(Utils.stringify(descriptor.envs, " ", toolTipHolder));
+ _envs.setToolTipText(toolTipHolder.value);
+
+ _activation.setText(descriptor.activation);
+ }
+
+ //
+ // ComponentDescriptor
+ //
+ private JTextField _name = new JTextField(20);
+ private JTextField _variables = new JTextField(20);
+ private JTextField _properties = new JTextField(20);
+ private JTextArea _comment = new JTextArea(3, 20);
+
+ //
+ // ServerDescriptor
+ //
+ private JTextField _exe = new JTextField(20);
+ private JTextField _pwd = new JTextField(20);
+ private JTextField _options = new JTextField(20);
+ private JTextField _interpreter = new JTextField(20);
+ private JTextField _interpreterOptions = new JTextField(20);
+ private JTextField _envs = new JTextField(20);
+ private JTextField _activation = new JTextField(20);
+
+ //
+ // IceBoxDescriptor
+ //
+ private JLabel _endpointsLabel = new JLabel("IceBox Endpoints");
+ private JTextField _endpoints = new JTextField(20);
+};
diff --git a/java/src/IceGrid/TreeNode/ServerInstance.java b/java/src/IceGrid/TreeNode/ServerInstance.java index f115b5cd02b..c3e1a6cc4c6 100755 --- a/java/src/IceGrid/TreeNode/ServerInstance.java +++ b/java/src/IceGrid/TreeNode/ServerInstance.java @@ -17,8 +17,21 @@ import javax.swing.Icon; import javax.swing.JMenuItem;
import javax.swing.Action;
import javax.swing.AbstractAction;
+import javax.swing.JTextField;
+import javax.swing.JComponent;
+import javax.swing.JScrollPane;
import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.JTextField;
+import javax.swing.JComboBox;
+import javax.swing.JButton;
+import javax.swing.JToggleButton;
+
+import com.jgoodies.uif_lite.panel.SimpleInternalFrame;
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+import com.jgoodies.forms.factories.Borders;
+
import IceGrid.TreeModelI;
import IceGrid.IceBoxDescriptor;
import IceGrid.ServerInstanceDescriptor;
@@ -30,6 +43,116 @@ import IceGrid.ServerDynamicInfo; class ServerInstance extends Parent
{
+
+ static class Editor
+ {
+ JComponent getComponent()
+ {
+ if(_scrollPane == null)
+ {
+ //
+ // Build everything using JGoodies's DefaultFormBuilder
+ //
+ FormLayout layout = new FormLayout("right:pref, 3dlu, fill:pref:grow, 3dlu, pref", "");
+ DefaultFormBuilder builder = new DefaultFormBuilder(layout);
+ builder.setBorder(Borders.DLU2_BORDER);
+ builder.setRowGroupingEnabled(true);
+
+ builder.appendSeparator("Server Instance Descriptor");
+
+ builder.append("Node");
+ builder.append(_node, 3);
+ builder.nextLine();
+
+ AbstractAction gotoTemplate = new AbstractAction("->")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ if(_server != null)
+ {
+ CommonBase parent = _server.getParent(TreeModelI.APPLICATION_VIEW);
+ if(parent != null)
+ {
+ Application app = (Application)parent.getParent(TreeModelI.APPLICATION_VIEW);
+ if(app != null)
+ {
+ ServerTemplate template = app.findServerTemplate(_template.getText());
+ if(template != null)
+ {
+ _server.getModel().getTreeNodeSelector().selectNode(
+ template.getPath(TreeModelI.APPLICATION_VIEW),
+ TreeModelI.APPLICATION_VIEW);
+ }
+ }
+ }
+ }
+ }
+ };
+ gotoTemplate.putValue(Action.SHORT_DESCRIPTION, "Goto this template");
+
+
+ builder.append("Template", _template);
+ builder.append(new JButton(gotoTemplate));
+ builder.nextLine();
+
+ builder.append("Parameters", _parameterValues);
+ builder.append(new JButton("..."));
+ builder.nextLine();
+
+ _myDescriptor = new JComboBox();
+ _myDescriptor.addItem("");
+ _myDescriptor.addItem("ServerDescriptor");
+ _myDescriptor.addItem("IceBoxDescriptor");
+ builder.append("My Descriptor", _myDescriptor);
+ builder.append(new JToggleButton("Edit"));
+
+ builder.append("Targets");
+ builder.append(_targets, 3);
+ _targets.setEditable(false);
+ builder.nextLine();
+ _serverDescriptorRenderer.build(builder);
+
+ _scrollPane = new JScrollPane(builder.getPanel(),
+ JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+ JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ _scrollPane.setBorder(Borders.DIALOG_BORDER);
+ }
+ return _scrollPane;
+ }
+
+ void show(ServerInstance server)
+ {
+ _server = server;
+ ServerInstanceDescriptor descriptor = server.getDescriptor();
+ _template.setText(descriptor.template);
+ _node.setText(descriptor.node);
+
+ Ice.StringHolder toolTipHolder = new Ice.StringHolder();
+
+ _parameterValues.setText(Utils.stringify(descriptor.parameterValues, "=",
+ ", ", toolTipHolder));
+ _parameterValues.setToolTipText(toolTipHolder.value);
+
+ _targets.setText(Utils.stringify(descriptor.targets, ", ", toolTipHolder));
+ _targets.setToolTipText(toolTipHolder.value);
+
+ _serverDescriptorRenderer.showDescriptor(descriptor.descriptor);
+ }
+
+ private JTextField _node = new JTextField(20);
+ private JTextField _template = new JTextField(20);
+ private JTextField _parameterValues = new JTextField(20);
+ private JComboBox _myDescriptor;
+ private JTextField _targets = new JTextField(20);
+
+ private ServerDescriptorRenderer _serverDescriptorRenderer =
+ new ServerDescriptorRenderer();
+
+ private ServerInstance _server;
+
+ private JScrollPane _scrollPane;
+ }
+
static class PopupMenu extends JPopupMenu
{
PopupMenu()
@@ -67,9 +190,8 @@ class ServerInstance extends Parent private ServerInstance _server;
private Action _startAction;
private Action _stopAction;
-
}
-
+
public JPopupMenu getPopupMenu()
{
@@ -81,11 +203,21 @@ class ServerInstance extends Parent return _popup;
}
- public JPanel getProperties(int view)
+ public void displayProperties(SimpleInternalFrame frame, int view)
{
- return null;
+ frame.setTitle("Properties for " + _id);
+
+ if(_editor == null)
+ {
+ _editor = new Editor();
+ }
+ _editor.show(this);
+ frame.setContent(_editor.getComponent());
+ frame.validate();
+ frame.repaint();
}
-
+
+
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
@@ -319,6 +451,11 @@ class ServerInstance extends Parent return _state;
}
+ ServerInstanceDescriptor getDescriptor()
+ {
+ return _descriptor;
+ }
+
public String toString()
{
@@ -363,5 +500,6 @@ class ServerInstance extends Parent static private DefaultTreeCellRenderer _cellRenderer;
static private Icon[] _icons;
static private PopupMenu _popup;
+ static private Editor _editor;
}
diff --git a/java/src/IceGrid/Utils.java b/java/src/IceGrid/Utils.java index 5997f1a7e62..e93d96e471b 100755 --- a/java/src/IceGrid/Utils.java +++ b/java/src/IceGrid/Utils.java @@ -18,4 +18,85 @@ public class Utils assert(imgURL != null);
return new ImageIcon(imgURL);
}
+
+ static public interface Stringifier
+ {
+ public String toString(Object obj);
+ }
+
+ //
+ // Stringify helpers
+ //
+ static public String stringify(java.util.Collection col,
+ Stringifier stringifier,
+ String separator,
+ Ice.StringHolder toolTipHolder)
+ {
+ String result = "";
+ toolTipHolder.value = null;
+ java.util.Iterator p = col.iterator();
+
+ while(p.hasNext())
+ {
+ if(result.length() > 0)
+ {
+ result += separator;
+ toolTipHolder.value += "<br>";
+ }
+ else
+ {
+ toolTipHolder.value = "<html>";
+ }
+ String elt = stringifier.toString(p.next());
+ result += elt;
+ toolTipHolder.value += elt;
+ }
+ if(toolTipHolder.value != null)
+ {
+ toolTipHolder.value += "</html>";
+ }
+
+ return result;
+ }
+
+ static public String stringify(java.util.Collection col,
+ String separator,
+ Ice.StringHolder toolTipHolder)
+ {
+
+ Stringifier stringifier = new Stringifier()
+ {
+ public String toString(Object obj)
+ {
+ return (String)obj;
+ }
+ };
+ return stringify(col, stringifier, separator, toolTipHolder);
+
+ }
+
+ static public String stringify(String[] stringSeq, String separator,
+ Ice.StringHolder toolTipHolder)
+ {
+
+ return stringify(java.util.Arrays.asList(stringSeq), separator, toolTipHolder);
+ }
+
+ static public String stringify(java.util.Map stringMap,
+ final String pairSeparator,
+ String separator,
+ Ice.StringHolder toolTipHolder)
+ {
+ Stringifier stringifier = new Stringifier()
+ {
+ public String toString(Object obj)
+ {
+ java.util.Map.Entry entry = (java.util.Map.Entry)obj;
+ return (String)entry.getKey() + pairSeparator + (String)entry.getValue();
+ }
+ };
+
+ return stringify(stringMap.entrySet(), stringifier, separator, toolTipHolder);
+ }
+
}
|