summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/Application/PropertySet.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGridGUI/Application/PropertySet.java')
-rw-r--r--java/src/IceGridGUI/Application/PropertySet.java230
1 files changed, 230 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/PropertySet.java b/java/src/IceGridGUI/Application/PropertySet.java
new file mode 100644
index 00000000000..4d4da5b716d
--- /dev/null
+++ b/java/src/IceGridGUI/Application/PropertySet.java
@@ -0,0 +1,230 @@
+// **********************************************************************
+//
+// 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.Component;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class PropertySet extends TreeNode
+{
+ static public PropertySetDescriptor
+ copyDescriptor(PropertySetDescriptor d)
+ {
+ PropertySetDescriptor psd = (PropertySetDescriptor)d.clone();
+ psd.properties = new java.util.LinkedList<PropertyDescriptor>(psd.properties);
+ return psd;
+ }
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ _cellRenderer = new DefaultTreeCellRenderer();
+ _cellRenderer.setLeafIcon(Utils.getIcon("/icons/16x16/property_set.png"));
+ }
+
+ return _cellRenderer.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+ actions[COPY] = !_ephemeral;
+
+ if(((TreeNode)_parent).getAvailableActions()[PASTE])
+ {
+ actions[PASTE] = true;
+ }
+ actions[DELETE] = true;
+
+ if(!_ephemeral)
+ {
+ actions[SHOW_VARS] = true;
+ actions[SUBSTITUTE_VARS] = true;
+ }
+ return actions;
+ }
+
+ public void copy()
+ {
+ getCoordinator().setClipboard(copyDescriptor(_descriptor));
+ getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
+
+ }
+
+ public void paste()
+ {
+ ((TreeNode)_parent).paste();
+ }
+
+ public void destroy()
+ {
+ PropertySetParent parent = (PropertySetParent)_parent;
+ parent.removePropertySet(this);
+
+ if(!_ephemeral)
+ {
+ parent.removeDescriptor(_unsubstitutedId);
+ if(_editable != null)
+ {
+ parent.getEditable().removeElement(_unsubstitutedId, _editable, PropertySet.class);
+ }
+ else
+ {
+ parent.getEditable().markModified();
+ }
+ getRoot().updated();
+ }
+ }
+
+ public Editor getEditor()
+ {
+ if(_editor == null)
+ {
+ if(_inServerInstance)
+ {
+ _editor = (PropertySetEditor)getRoot().getEditor(ServerInstancePropertySetEditor.class, this);
+ }
+ else
+ {
+ _editor = (PropertySetEditor)getRoot().getEditor(PropertySetEditor.class, this);
+ }
+ }
+ _editor.show(_unsubstitutedId, this);
+ return _editor;
+ }
+
+ protected Editor createEditor()
+ {
+ if(_inServerInstance)
+ {
+ return new ServerInstancePropertySetEditor();
+ }
+ else
+ {
+ return new PropertySetEditor();
+ }
+ }
+
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ public String unsubstitutedId()
+ {
+ return _unsubstitutedId;
+ }
+
+ Object getDescriptor()
+ {
+ return _descriptor;
+ }
+
+ Object saveDescriptor()
+ {
+ return _descriptor.clone();
+ }
+
+ void restoreDescriptor(Object savedDescriptor)
+ {
+ PropertySetDescriptor clone = (PropertySetDescriptor)savedDescriptor;
+ _descriptor.references = clone.references;
+ _descriptor.properties = clone.properties;
+ }
+
+ void commit()
+ {
+ if(_editable != null)
+ {
+ _editable.commit();
+ }
+ }
+
+ Editable getEditable()
+ {
+ if(_editable != null)
+ {
+ return _editable;
+ }
+ else
+ {
+ return ((PropertySetParent)_parent).getEditable();
+ }
+ }
+
+ PropertySet(boolean brandNew, TreeNode parent, String id, String unsubstitutedId, PropertySetDescriptor descriptor)
+ {
+ super(parent, id);
+ _unsubstitutedId = unsubstitutedId;
+ _inServerInstance = (parent instanceof ServerInstance);
+ _ephemeral = false;
+ _editable = new Editable(brandNew);
+ rebuild(descriptor);
+ }
+
+ PropertySet(TreeNode parent, String id, String unsubstitutedId, PropertySetDescriptor descriptor)
+ {
+ super(parent, id);
+ _unsubstitutedId = unsubstitutedId;
+ _inServerInstance = (parent instanceof ServerInstance);
+ _ephemeral = false;
+ _editable = null;
+ rebuild(descriptor);
+ }
+
+
+ PropertySet(TreeNode parent, String id, PropertySetDescriptor descriptor)
+ {
+ super(parent, id);
+ _unsubstitutedId = id;
+ _inServerInstance = (parent instanceof ServerInstance);
+ _ephemeral = true;
+ _editable = null;
+ rebuild(descriptor);
+ }
+
+ void write(XMLWriter writer)
+ throws java.io.IOException
+ {
+ if(!_ephemeral)
+ {
+ writePropertySet(writer, _unsubstitutedId, _inServerInstance ? "service" : "id", _descriptor, null, null);
+ }
+ }
+
+ void rebuild(PropertySetDescriptor descriptor)
+ {
+ _descriptor = descriptor;
+ }
+
+ private PropertySetDescriptor _descriptor;
+ private String _unsubstitutedId;
+ private final boolean _ephemeral;
+ private final Editable _editable;
+ private final boolean _inServerInstance;
+ private PropertySetEditor _editor;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+}