summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/Application/CommunicatorSubEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGridGUI/Application/CommunicatorSubEditor.java')
-rw-r--r--java/src/IceGridGUI/Application/CommunicatorSubEditor.java177
1 files changed, 177 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/CommunicatorSubEditor.java b/java/src/IceGridGUI/Application/CommunicatorSubEditor.java
new file mode 100644
index 00000000000..49b136f999c
--- /dev/null
+++ b/java/src/IceGridGUI/Application/CommunicatorSubEditor.java
@@ -0,0 +1,177 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2011 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 IceGridGUI.Application;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JButton;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class CommunicatorSubEditor
+{
+ CommunicatorSubEditor(Editor mainEditor)
+ {
+ _mainEditor = mainEditor;
+
+ _description.getDocument().addDocumentListener(_mainEditor.getUpdateListener());
+ _description.setToolTipText("An optional description");
+
+ _propertySets.getDocument().addDocumentListener(_mainEditor.getUpdateListener());
+ _propertySets.setToolTipText("Property Set References");
+
+ _properties = new PropertiesField(mainEditor);
+ _logFiles = new SimpleMapField(mainEditor, true, "Path", "Property");
+ _logFiles.setToolTipText("Log files used by this server or service");
+ }
+
+ void appendProperties(DefaultFormBuilder builder)
+ {
+ builder.append("Description");
+ builder.nextLine();
+ builder.append("");
+ builder.nextRow(-2);
+ CellConstraints cc = new CellConstraints();
+ JScrollPane scrollPane = new JScrollPane(_description);
+ builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 3));
+ builder.nextRow(2);
+ builder.nextLine();
+
+ builder.append("Property Sets");
+ builder.append(_propertySets, 3);
+ builder.nextLine();
+
+ builder.append("Properties");
+ builder.nextLine();
+ builder.append("");
+ builder.nextLine();
+ builder.append("");
+ builder.nextLine();
+ builder.append("");
+
+ builder.nextRow(-6);
+ scrollPane = new JScrollPane(_properties);
+ builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 7));
+ builder.nextRow(6);
+ builder.nextLine();
+
+ builder.append("Log files");
+ builder.nextLine();
+ builder.append("");
+ builder.nextLine();
+ builder.append("");
+ builder.nextRow(-4);
+ scrollPane = new JScrollPane(_logFiles);
+ builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 5));
+ builder.nextRow(4);
+ builder.nextLine();
+ }
+
+ void writeDescriptor(CommunicatorDescriptor descriptor)
+ {
+ descriptor.propertySet.references = _propertySets.getList().toArray(new String[0]);
+ descriptor.propertySet.properties = _properties.getProperties();
+ descriptor.description = _description.getText();
+
+ java.util.TreeMap<String, String> tm = _logFiles.get();
+ descriptor.logs = new String[tm.size()];
+ int i = 0;
+
+ for(java.util.Map.Entry<String, String> p : tm.entrySet())
+ {
+ String path = p.getKey();
+ String prop = p.getValue().trim();
+
+ descriptor.logs[i++] = path;
+ if(!prop.equals(""))
+ {
+ setProperty((java.util.LinkedList<PropertyDescriptor>)descriptor.propertySet.properties, prop, path);
+ }
+ }
+ }
+
+ void show(CommunicatorDescriptor descriptor, boolean isEditable)
+ {
+ Utils.Resolver detailResolver = _mainEditor.getDetailResolver();
+ isEditable = isEditable && (detailResolver == null);
+
+ //
+ // Note that we don't substitute in the lookup
+ //
+ java.util.Map<String, String> map = new java.util.TreeMap<String, String>();
+ for(String log : descriptor.logs)
+ {
+ String prop = lookupKey(descriptor.propertySet.properties, log);
+ map.put(log, prop);
+ }
+ _logFiles.set(map, detailResolver, isEditable);
+
+ _propertySets.setList(java.util.Arrays.asList(descriptor.propertySet.references), detailResolver);
+ _propertySets.setEditable(isEditable);
+ _properties.setProperties(descriptor.propertySet.properties,
+ descriptor.adapters,
+ descriptor.logs,
+ detailResolver, isEditable);
+
+ _description.setText(Utils.substitute(descriptor.description, detailResolver));
+ _description.setEditable(isEditable);
+ _description.setOpaque(isEditable);
+ }
+
+ //
+ // Returns first key matching this value, if there is one
+ //
+ private String lookupKey(java.util.List<PropertyDescriptor> props, String value)
+ {
+ for(PropertyDescriptor p : props)
+ {
+ if(p.value.equals(value))
+ {
+ return p.name;
+ }
+ }
+ return "";
+ }
+
+ private void setProperty(java.util.LinkedList<PropertyDescriptor> props, String key, String newValue)
+ {
+ removeProperty(props, key);
+ props.addFirst(new PropertyDescriptor(key, newValue));
+ }
+
+ private void removeProperty(java.util.List<PropertyDescriptor> props, String key)
+ {
+ java.util.Iterator<PropertyDescriptor> p = props.iterator();
+ while(p.hasNext())
+ {
+ PropertyDescriptor pd = p.next();
+ if(pd.name.equals(key))
+ {
+ p.remove();
+ }
+ }
+ }
+
+ protected Editor _mainEditor;
+
+ private JTextArea _description = new JTextArea(3, 20);
+ private ListTextField _propertySets = new ListTextField(20);
+ private PropertiesField _properties;
+ private SimpleMapField _logFiles;
+}