summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/AbstractServerEditor.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2005-10-10 19:36:18 +0000
committerBernard Normier <bernard@zeroc.com>2005-10-10 19:36:18 +0000
commit45dd45c2a5077196c78cabf08a48c0c2430c920e (patch)
treede3ff59f6bb9bb9201850a8ec1f878452aba37f9 /java/src/IceGrid/TreeNode/AbstractServerEditor.java
parentbug 475: remove IcePack (diff)
downloadice-45dd45c2a5077196c78cabf08a48c0c2430c920e.tar.bz2
ice-45dd45c2a5077196c78cabf08a48c0c2430c920e.tar.xz
ice-45dd45c2a5077196c78cabf08a48c0c2430c920e.zip
Server creation/deletion/edit
Diffstat (limited to 'java/src/IceGrid/TreeNode/AbstractServerEditor.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/AbstractServerEditor.java185
1 files changed, 185 insertions, 0 deletions
diff --git a/java/src/IceGrid/TreeNode/AbstractServerEditor.java b/java/src/IceGrid/TreeNode/AbstractServerEditor.java
new file mode 100755
index 00000000000..20c332d2ebf
--- /dev/null
+++ b/java/src/IceGrid/TreeNode/AbstractServerEditor.java
@@ -0,0 +1,185 @@
+// **********************************************************************
+//
+// 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 javax.swing.JOptionPane;
+
+import IceGrid.Model;
+import IceGrid.ServerDescriptor;
+import IceGrid.ServerInstanceDescriptor;
+
+//
+// Base class for ServerEditor and ServerInstanceEditor
+//
+
+abstract class AbstractServerEditor extends Editor
+{
+ abstract protected void writeDescriptor();
+ abstract protected boolean isSimpleUpdate();
+
+ protected void applyUpdate()
+ {
+ Server server = (Server)_target;
+ Model model = server.getModel();
+
+ if(model.canUpdate())
+ {
+ model.disableDisplay();
+
+ try
+ {
+ if(server.isEphemeral())
+ {
+ Node node = (Node)server.getParent();
+ writeDescriptor();
+ ServerInstanceDescriptor instanceDescriptor =
+ server.getInstanceDescriptor();
+ ServerDescriptor serverDescriptor =
+ server.getServerDescriptor();
+
+ server.destroy(); // just removes the child
+
+ try
+ {
+ node.tryAdd(instanceDescriptor, serverDescriptor);
+ }
+ catch(UpdateFailedException e)
+ {
+ //
+ // Add back ephemeral child
+ //
+ try
+ {
+ node.addChild(server, true);
+ }
+ catch(UpdateFailedException die)
+ {
+ assert false;
+ }
+ model.setSelectionPath(server.getPath());
+
+ JOptionPane.showMessageDialog(
+ model.getMainFrame(),
+ e.toString(),
+ "Apply failed",
+ JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ //
+ // Success
+ //
+ if(instanceDescriptor != null)
+ {
+ _target = node.findChildWithDescriptor(instanceDescriptor);
+ }
+ else
+ {
+ _target = node.findChildWithDescriptor(serverDescriptor);
+ }
+ model.setSelectionPath(_target.getPath());
+ model.showActions(_target);
+ }
+ else if(isSimpleUpdate())
+ {
+ writeDescriptor();
+ _target.getEditable().markModified();
+ }
+ else
+ {
+ //
+ // Save to be able to rollback
+ //
+ Object savedDescriptor = server.saveDescriptor();
+ Node node = (Node)server.getParent();
+ writeDescriptor();
+
+ ServerInstanceDescriptor instanceDescriptor =
+ server.getInstanceDescriptor();
+ ServerDescriptor serverDescriptor =
+ server.getServerDescriptor();
+
+ node.removeChild(server, true);
+ if(instanceDescriptor != null)
+ {
+ node.removeDescriptor(instanceDescriptor);
+ }
+ else
+ {
+ node.removeDescriptor(serverDescriptor);
+ }
+
+ try
+ {
+ node.tryAdd(instanceDescriptor, serverDescriptor);
+ }
+ catch(UpdateFailedException e)
+ {
+ //
+ // Restore all
+ //
+ server.restoreDescriptor(savedDescriptor);
+ if(instanceDescriptor != null)
+ {
+ node.addDescriptor(instanceDescriptor);
+ }
+ else
+ {
+ node.addDescriptor(serverDescriptor);
+ }
+
+ try
+ {
+ node.addChild(server, true);
+ }
+ catch(UpdateFailedException die)
+ {
+ assert false;
+ }
+ model.setSelectionPath(server.getPath());
+
+ JOptionPane.showMessageDialog(
+ model.getMainFrame(),
+ e.toString(),
+ "Apply failed",
+ JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+
+ //
+ // Success
+ //
+ node.removeElement(server.getId());
+
+ if(instanceDescriptor != null)
+ {
+ _target = node.findChildWithDescriptor(instanceDescriptor);
+ }
+ else
+ {
+ _target = node.findChildWithDescriptor(serverDescriptor);
+ }
+ model.setSelectionPath(_target.getPath());
+ model.showActions(_target);
+ }
+
+ _applyButton.setEnabled(false);
+ _discardButton.setEnabled(false);
+ }
+ finally
+ {
+ model.enableDisplay();
+ }
+ }
+ }
+
+
+ protected AbstractServerEditor()
+ {}
+}