diff options
author | Joe George <joe@zeroc.com> | 2015-03-03 17:30:50 -0500 |
---|---|---|
committer | Joe George <joe@zeroc.com> | 2015-05-12 11:41:55 -0400 |
commit | d35bb9f5c19e34aee31f83d445695a8186ef675e (patch) | |
tree | d5324eaf44f5f9776495537c51653f50a66a7237 /java/src/IceGridGUI/Application/PropertySetEditor.java | |
download | ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.tar.bz2 ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.tar.xz ice-d35bb9f5c19e34aee31f83d445695a8186ef675e.zip |
Ice 3.4.2 Source Distributionv3.4.2
Diffstat (limited to 'java/src/IceGridGUI/Application/PropertySetEditor.java')
-rw-r--r-- | java/src/IceGridGUI/Application/PropertySetEditor.java | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/PropertySetEditor.java b/java/src/IceGridGUI/Application/PropertySetEditor.java new file mode 100644 index 00000000000..b124fc40619 --- /dev/null +++ b/java/src/IceGridGUI/Application/PropertySetEditor.java @@ -0,0 +1,276 @@ +// ********************************************************************** +// +// 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 java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +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 PropertySetEditor extends Editor +{ + protected boolean applyUpdate(boolean refresh) + { + PropertySet nps = (PropertySet)_target; + Root root = nps.getRoot(); + + root.disableSelectionListener(); + try + { + PropertySetParent parent = (PropertySetParent)nps.getParent(); + if(nps.isEphemeral()) + { + writeDescriptor(); + PropertySetDescriptor descriptor = (PropertySetDescriptor)nps.getDescriptor(); + nps.destroy(); // just removes the child + + try + { + parent.tryAdd(getIdText(), descriptor); + } + catch(UpdateFailedException e) + { + // + // Add back ephemeral child + // + try + { + parent.insertPropertySet(nps, true); + } + catch(UpdateFailedException die) + { + assert false; + } + root.setSelectedNode(_target); + + JOptionPane.showMessageDialog( + root.getCoordinator().getMainFrame(), + e.toString(), + "Apply failed", + JOptionPane.ERROR_MESSAGE); + return false; + } + + // + // Success + // + _target = ((TreeNode)parent).findChildWithDescriptor(descriptor); + root.updated(); + if(refresh) + { + root.setSelectedNode(_target); + } + } + else if(!isSimpleUpdate()) + { + PropertySetDescriptor descriptor = (PropertySetDescriptor)nps.getDescriptor(); + + try + { + parent.tryRename(_target.getId(), _oldId, getIdText()); + } + catch(UpdateFailedException e) + { + JOptionPane.showMessageDialog( + root.getCoordinator().getMainFrame(), + e.toString(), + "Apply failed", + JOptionPane.ERROR_MESSAGE); + return false; + } + + // + // Success + // + _target = ((TreeNode)parent).findChildWithDescriptor(descriptor); + writeDescriptor(); + root.updated(); + if(refresh) + { + root.setSelectedNode(_target); + } + } + else + { + writeDescriptor(); + root.updated(); + nps.getEditable().markModified(); + } + + if(refresh) + { + root.getCoordinator().getCurrentTab().showNode(_target); + } + _applyButton.setEnabled(false); + _discardButton.setEnabled(false); + return true; + } + finally + { + root.enableSelectionListener(); + } + } + + Utils.Resolver getDetailResolver() + { + Root root = _target.getRoot(); + + if(root.getCoordinator().substitute()) + { + return _target.getResolver(); + } + else + { + return null; + } + } + + PropertySetEditor() + { + this("ID"); + _id.setToolTipText("The id of this Property Set"); + _id.getDocument().addDocumentListener(_updateListener); + } + + protected PropertySetEditor(String label) + { + _idLabel = new JLabel(label); + + _propertySets.getDocument().addDocumentListener(_updateListener); + _propertySets.setToolTipText("Property Set References"); + _properties = new PropertiesField(this); + } + + void writeDescriptor() + { + PropertySetDescriptor descriptor = (PropertySetDescriptor)getPropertySet().getDescriptor(); + + descriptor.references = (String[])_propertySets.getList().toArray(new String[0]); + descriptor.properties = _properties.getProperties(); + } + + boolean isSimpleUpdate() + { + return getIdText().equals(_oldId); + } + + protected void appendProperties(DefaultFormBuilder builder) + { + builder.append(_idLabel); + builder.append(getIdComponent(), 3); + 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); + JScrollPane scrollPane = new JScrollPane(_properties); + CellConstraints cc = new CellConstraints(); + builder.add(scrollPane, cc.xywh(builder.getColumn(), builder.getRow(), 3, 7)); + builder.nextRow(6); + builder.nextLine(); + } + + protected void buildPropertiesPanel() + { + super.buildPropertiesPanel(); + _propertiesPanel.setName("Named Property Set"); + } + + protected boolean validate() + { + return check(new String[]{_idLabel.getText(), getIdText()}); + } + + void show(String unsubstitutedId, PropertySet nps) + { + detectUpdates(false); + _target = nps; + + Utils.Resolver resolver = getDetailResolver(); + boolean isEditable = (resolver == null); + + PropertySetDescriptor descriptor = (PropertySetDescriptor)nps.getDescriptor(); + + showId(unsubstitutedId, resolver); + _oldId = unsubstitutedId; + + _propertySets.setList(java.util.Arrays.asList(descriptor.references), resolver); + _propertySets.setEditable(isEditable); + + _properties.setProperties(descriptor.properties, null, null, getDetailResolver(), isEditable); + + _applyButton.setEnabled(nps.isEphemeral()); + _discardButton.setEnabled(nps.isEphemeral()); + detectUpdates(true); + if(nps.isEphemeral()) + { + updated(); + } + } + + protected JComponent getIdComponent() + { + return _id; + } + + protected String getIdText() + { + return _id.getText().trim(); + } + + protected void showId(String unsubstitutedId, Utils.Resolver resolver) + { + // + // This version does NOT substitute the ID + // + _id.setText(unsubstitutedId); + _id.setEditable(resolver == null); + } + + private PropertySet getPropertySet() + { + return (PropertySet)_target; + } + + private String _oldId; + + private final JTextField _id = new JTextField(20); + private final JLabel _idLabel; + + private ListTextField _propertySets = new ListTextField(20); + private PropertiesField _properties; +} |