diff options
author | Bernard Normier <bernard@zeroc.com> | 2005-10-13 18:38:00 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2005-10-13 18:38:00 +0000 |
commit | c14a73455bc317827e2e862d13e30fb20835f4d8 (patch) | |
tree | bc7a41217c35909d7a930c2f3248bd886ae34f22 /java/src/IceGrid/TreeNode/ReplicaGroups.java | |
parent | Fix (diff) | |
download | ice-c14a73455bc317827e2e862d13e30fb20835f4d8.tar.bz2 ice-c14a73455bc317827e2e862d13e30fb20835f4d8.tar.xz ice-c14a73455bc317827e2e862d13e30fb20835f4d8.zip |
Added editor for replica groups
Diffstat (limited to 'java/src/IceGrid/TreeNode/ReplicaGroups.java')
-rwxr-xr-x | java/src/IceGrid/TreeNode/ReplicaGroups.java | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/java/src/IceGrid/TreeNode/ReplicaGroups.java b/java/src/IceGrid/TreeNode/ReplicaGroups.java index 1ef6b629493..daa73b18961 100755 --- a/java/src/IceGrid/TreeNode/ReplicaGroups.java +++ b/java/src/IceGrid/TreeNode/ReplicaGroups.java @@ -9,6 +9,8 @@ package IceGrid.TreeNode;
import javax.swing.AbstractListModel;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
import IceGrid.ReplicaGroupDescriptor;
import IceGrid.Model;
@@ -29,6 +31,56 @@ class ReplicaGroups extends EditableParent return copy;
}
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+
+ Object descriptor = _model.getClipboard();
+ if(descriptor != null)
+ {
+ actions[PASTE] = descriptor instanceof ReplicaGroupDescriptor;
+ }
+
+ actions[NEW_REPLICA_GROUP] = true;
+ return actions;
+ }
+
+ public JPopupMenu getPopupMenu()
+ {
+ if(_popup == null)
+ {
+ _popup = new PopupMenu(_model);
+ JMenuItem item = new JMenuItem(_model.getActions()[NEW_REPLICA_GROUP]);
+ item.setText("New replica group");
+ _popup.add(item);
+ }
+ return _popup;
+ }
+
+ public void newReplicaGroup()
+ {
+ ReplicaGroupDescriptor descriptor = new
+ ReplicaGroupDescriptor(
+ makeNewChildId("NewReplicaGroup"),
+ null,
+ new java.util.LinkedList());
+
+ newReplicaGroup(descriptor);
+ }
+
+ public void paste()
+ {
+ Object descriptor = _model.getClipboard();
+
+ ReplicaGroupDescriptor d = ReplicaGroup.copyDescriptor(
+ (ReplicaGroupDescriptor)descriptor);
+ d.id = makeNewChildId(d.id);
+ newReplicaGroup(d);
+ }
+
ReplicaGroups(java.util.List descriptors, Model model)
throws UpdateFailedException
{
@@ -101,5 +153,64 @@ class ReplicaGroups extends EditableParent addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
}
+
+
+ void removeDescriptor(Object descriptor)
+ {
+ //
+ // A straight remove uses equals(), which is not the desired behavior
+ //
+ java.util.Iterator p = _descriptors.iterator();
+ while(p.hasNext())
+ {
+ if(descriptor == p.next())
+ {
+ p.remove();
+ break;
+ }
+ }
+ }
+
+ void tryAdd(ReplicaGroupDescriptor descriptor, boolean addDescriptor)
+ throws UpdateFailedException
+ {
+ try
+ {
+ addChild(createReplicaGroup(true, descriptor), true);
+ }
+ catch(UpdateFailedException e)
+ {
+ e.addParent(this);
+ throw e;
+ }
+
+ if(addDescriptor)
+ {
+ _descriptors.add(descriptor);
+ }
+ }
+
+
+ private ReplicaGroup createReplicaGroup(boolean brandNew,
+ ReplicaGroupDescriptor descriptor)
+ {
+ return new ReplicaGroup(brandNew, descriptor, _model);
+ }
+
+ private void newReplicaGroup(ReplicaGroupDescriptor descriptor)
+ {
+ ReplicaGroup replicaGroup = new ReplicaGroup(descriptor, _model);
+ try
+ {
+ addChild(replicaGroup, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false;
+ }
+ _model.setSelectionPath(replicaGroup.getPath());
+ }
+
private java.util.List _descriptors;
+ static private JPopupMenu _popup;
}
|