summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/ServiceInstanceEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGrid/TreeNode/ServiceInstanceEditor.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceInstanceEditor.java254
1 files changed, 254 insertions, 0 deletions
diff --git a/java/src/IceGrid/TreeNode/ServiceInstanceEditor.java b/java/src/IceGrid/TreeNode/ServiceInstanceEditor.java
new file mode 100755
index 00000000000..4236bd3b1ef
--- /dev/null
+++ b/java/src/IceGrid/TreeNode/ServiceInstanceEditor.java
@@ -0,0 +1,254 @@
+// **********************************************************************
+//
+// 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 java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.JTree;
+
+import javax.swing.event.DocumentListener;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+
+
+import javax.swing.tree.TreePath;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.factories.Borders;
+import com.jgoodies.forms.factories.ButtonBarFactory;
+import com.jgoodies.forms.layout.FormLayout;
+import com.jgoodies.forms.util.LayoutStyle;
+
+import IceGrid.ServiceInstanceDescriptor;
+import IceGrid.Model;
+import IceGrid.TableDialog;
+import IceGrid.TemplateDescriptor;
+import IceGrid.Utils;
+
+class ServiceInstanceEditor extends Editor
+{
+ ServiceInstanceEditor(JFrame parentFrame)
+ {
+ _parameterValues.setEditable(false);
+
+ //
+ // Template
+ //
+ Action gotoTemplate = new AbstractAction("->")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ CommonBase t = (CommonBase)_template.getSelectedItem();
+ if(t != null)
+ {
+ t.getModel().setSelectionPath(t.getPath());
+ }
+ }
+ };
+ gotoTemplate.putValue(Action.SHORT_DESCRIPTION,
+ "Goto this template");
+ _templateButton = new JButton(gotoTemplate);
+
+
+ ListDataListener templateListener = new ListDataListener()
+ {
+ public void contentsChanged(ListDataEvent e)
+ {
+ updated();
+
+ ServiceTemplate t =
+ (ServiceTemplate)_template.getModel().getSelectedItem();
+
+ TemplateDescriptor td = (TemplateDescriptor)t.getDescriptor();
+
+ //
+ // Replace parameters but keep existing values
+ //
+ java.util.TreeMap newMap = new java.util.TreeMap();
+ java.util.Iterator p = td.parameters.iterator();
+ while(p.hasNext())
+ {
+ String name = (String)p.next();
+ newMap.put(name, _parameterValuesMap.get(name));
+ }
+ _parameterValuesMap = newMap;
+ setParameterValuesField();
+ }
+
+ public void intervalAdded(ListDataEvent e)
+ {}
+
+
+ public void intervalRemoved(ListDataEvent e)
+ {}
+ };
+
+ _template.getModel().addListDataListener(templateListener);
+
+ //
+ // Parameter values
+ //
+ _parameterValuesDialog = new TableDialog(parentFrame,
+ "Parameter values",
+ "Name",
+ "Value", false);
+
+ Action openParameterValuesDialog = new AbstractAction("...")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ java.util.Map result =
+ _parameterValuesDialog.show(_parameterValuesMap,
+ _panel);
+ if(result != null)
+ {
+ updated();
+ _parameterValuesMap = new java.util.TreeMap(result);
+ setParameterValuesField();
+ }
+ }
+ };
+ _parameterValuesButton = new JButton(openParameterValuesDialog);
+ }
+
+ ServiceInstanceDescriptor getDescriptor()
+ {
+ return (ServiceInstanceDescriptor)_target.getDescriptor();
+ }
+
+ //
+ // From Editor:
+ //
+ void writeDescriptor()
+ {
+ ServiceInstanceDescriptor descriptor = getDescriptor();
+ descriptor.template = ((ServiceTemplate)_template.getSelectedItem()).getId();
+ descriptor.parameterValues = _parameterValuesMap;
+ }
+
+ boolean isSimpleUpdate()
+ {
+ return false;
+ }
+
+ void append(DefaultFormBuilder builder)
+ {
+ builder.append("Template", _template);
+ builder.append(_templateButton);
+ builder.nextLine();
+
+ builder.append("Parameter values", _parameterValues);
+ builder.append(_parameterValuesButton);
+ builder.nextLine();
+
+ builder.appendSeparator();
+ builder.nextLine();
+
+ //
+ // TODO: add service fields (read-only)
+ //
+ }
+
+ void show(Service service)
+ {
+ detectUpdates(false);
+ setTarget(service);
+
+ //
+ // If it's not a template instance, it's shown using
+ // ServiceEditor.show()
+ //
+ assert getDescriptor().template.length() > 0;
+
+
+ ServiceInstanceDescriptor descriptor =
+ (ServiceInstanceDescriptor)service.getDescriptor();
+ Model model = service.getModel();
+
+ Utils.Resolver resolver = model.substitute() ?
+ service.getParentResolver() : null;
+
+ boolean isEditable = service.isEditable() && resolver == null;
+
+ //
+ // Need to make control enabled before changing it
+ //
+ _template.setEnabled(true);
+
+ ServiceTemplates serviceTemplates =
+ service.getApplication().getServiceTemplates();
+ _template.setModel(serviceTemplates.createComboBoxModel());
+
+ ServiceTemplate t = (ServiceTemplate)
+ serviceTemplates.findChild(descriptor.template);
+ assert t != null;
+ _template.setSelectedItem(t);
+
+ _template.setEnabled(isEditable);
+
+ _parameterValuesMap = descriptor.parameterValues;
+ setParameterValuesField();
+ _parameterValues.setEnabled(isEditable);
+
+ //
+ // TODO: sub editor
+ //
+ _applyButton.setEnabled(service.isEphemeral());
+ _discardButton.setEnabled(service.isEphemeral());
+ detectUpdates(true);
+ }
+
+ void setParameterValuesField()
+ {
+ Service service = (Service)_target;
+
+ final Utils.Resolver resolver = service.getModel().substitute() ?
+ service.getParentResolver() : null;
+
+ Ice.StringHolder toolTipHolder = new Ice.StringHolder();
+ Utils.Stringifier stringifier = new Utils.Stringifier()
+ {
+ public String toString(Object obj)
+ {
+ java.util.Map.Entry entry = (java.util.Map.Entry)obj;
+
+ return Utils.substitute((String)entry.getKey(), resolver)
+ + "="
+ + Utils.substitute((String)entry.getValue(), resolver);
+ }
+ };
+
+ _parameterValues.setText(
+ Utils.stringify(_parameterValuesMap.entrySet(), stringifier,
+ ", ", toolTipHolder));
+ _parameterValues.setToolTipText(toolTipHolder.value);
+ }
+
+
+ private JComboBox _template = new JComboBox();
+ private JButton _templateButton;
+ private JTextField _parameterValues = new JTextField(20);
+
+ private java.util.TreeMap _parameterValuesMap;
+ private TableDialog _parameterValuesDialog;
+ private JButton _parameterValuesButton;
+}