diff options
author | Bernard Normier <bernard@zeroc.com> | 2006-03-29 21:21:02 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2006-03-29 21:21:02 +0000 |
commit | 20744ae1f1182d08e26b175f59d14041aabaf754 (patch) | |
tree | 937d125b80663966b3a61e13e744e28daf1f22da /java/src/IceGridGUI/Application/ReplicaGroup.java | |
parent | Java metadata (diff) | |
download | ice-20744ae1f1182d08e26b175f59d14041aabaf754.tar.bz2 ice-20744ae1f1182d08e26b175f59d14041aabaf754.tar.xz ice-20744ae1f1182d08e26b175f59d14041aabaf754.zip |
IceGrid GUI refactoring
Diffstat (limited to 'java/src/IceGridGUI/Application/ReplicaGroup.java')
-rwxr-xr-x | java/src/IceGridGUI/Application/ReplicaGroup.java | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/ReplicaGroup.java b/java/src/IceGridGUI/Application/ReplicaGroup.java new file mode 100755 index 00000000000..e360ec41bc2 --- /dev/null +++ b/java/src/IceGridGUI/Application/ReplicaGroup.java @@ -0,0 +1,222 @@ +// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import java.awt.Component;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class ReplicaGroup extends TreeNode
+{
+ static public ReplicaGroupDescriptor
+ copyDescriptor(ReplicaGroupDescriptor d)
+ {
+ return (ReplicaGroupDescriptor)d.clone();
+ }
+
+ 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/replica_group.png"));
+ }
+
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+ actions[COPY] = true;
+
+ 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()
+ {
+ ReplicaGroups replicaGroups = (ReplicaGroups)_parent;
+ replicaGroups.removeChild(this);
+
+ if(!_ephemeral)
+ {
+ replicaGroups.removeDescriptor(_descriptor);
+ replicaGroups.getEditable().removeElement(_id);
+ getRoot().updated();
+ }
+ }
+
+ public Editor getEditor()
+ {
+ if(_editor == null)
+ {
+ _editor = (ReplicaGroupEditor)getRoot().getEditor(ReplicaGroupEditor.class, this);
+ }
+ _editor.show(this);
+ return _editor;
+ }
+
+ protected Editor createEditor()
+ {
+ return new ReplicaGroupEditor(getCoordinator().getMainFrame());
+ }
+
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ Object getDescriptor()
+ {
+ return _descriptor;
+ }
+
+ Object saveDescriptor()
+ {
+ return _descriptor.clone();
+ }
+ void restoreDescriptor(Object savedDescriptor)
+ {
+ ReplicaGroupDescriptor clone = (ReplicaGroupDescriptor)savedDescriptor;
+ _descriptor.id = clone.id;
+ _descriptor.description = clone.description;
+ _descriptor.objects = clone.objects;
+ _descriptor.loadBalancing = clone.loadBalancing;
+ }
+
+ void commit()
+ {
+ _editable.commit();
+ }
+
+ Editable getEditable()
+ {
+ return _editable;
+ }
+
+ ReplicaGroup(boolean brandNew,
+ TreeNode parent,
+ ReplicaGroupDescriptor descriptor)
+ {
+ super(parent, descriptor.id);
+ _ephemeral = false;
+ _editable = new Editable(brandNew);
+ rebuild(descriptor);
+ }
+
+ ReplicaGroup(TreeNode parent, ReplicaGroupDescriptor descriptor)
+ {
+ super(parent, descriptor.id);
+ _ephemeral = true;
+ _editable = null;
+ rebuild(descriptor);
+ }
+
+ void write(XMLWriter writer) throws java.io.IOException
+ {
+ if(!_ephemeral)
+ {
+ java.util.List attributes = new java.util.LinkedList();
+ attributes.add(createAttribute("id", _descriptor.id));
+
+ if(_descriptor.loadBalancing == null &&
+ _descriptor.description.length() == 0 && _descriptor.objects.isEmpty())
+ {
+ writer.writeElement("replica-group", attributes);
+ }
+ else
+ {
+ writer.writeStartTag("replica-group", attributes);
+
+ if(_descriptor.description.length() > 0)
+ {
+ writer.writeElement("description", _descriptor.description);
+ }
+ if(_descriptor.loadBalancing != null)
+ {
+ attributes.clear();
+ if(_descriptor.loadBalancing instanceof RandomLoadBalancingPolicy)
+ {
+ attributes.add(createAttribute("type", "random"));
+ }
+ else if(_descriptor.loadBalancing instanceof RoundRobinLoadBalancingPolicy)
+ {
+ attributes.add(createAttribute("type", "round-robin"));
+ }
+ else if(_descriptor.loadBalancing instanceof AdaptiveLoadBalancingPolicy)
+ {
+ attributes.add(createAttribute("type", "adaptive"));
+ AdaptiveLoadBalancingPolicy policy =
+ (AdaptiveLoadBalancingPolicy)_descriptor.loadBalancing;
+ attributes.add(createAttribute("load-sample", policy.loadSample));
+ }
+ attributes.add(createAttribute("n-replicas",
+ _descriptor.loadBalancing.nReplicas));
+ writer.writeElement("load-balancing", attributes);
+ }
+
+ writeObjects(writer, _descriptor.objects);
+ writer.writeEndTag("replica-group");
+ }
+ }
+ }
+
+
+ void rebuild(ReplicaGroupDescriptor descriptor)
+ {
+ _descriptor = descriptor;
+ //
+ // And that's it since there is no children
+ //
+ }
+
+ private ReplicaGroupDescriptor _descriptor;
+ private final boolean _ephemeral;
+ private final Editable _editable;
+ private ReplicaGroupEditor _editor;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+}
|