001: package org.openjump.core.ui.plugin.layer;
002:
003: import javax.swing.JOptionPane;
004: import javax.swing.JPopupMenu;
005:
006: import com.vividsolutions.jump.I18N;
007: import com.vividsolutions.jump.workbench.WorkbenchContext;
008: import com.vividsolutions.jump.workbench.model.Layerable;
009: import com.vividsolutions.jump.workbench.model.UndoableCommand;
010: import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
011: import com.vividsolutions.jump.workbench.plugin.EnableCheck;
012: import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
013: import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
014: import com.vividsolutions.jump.workbench.plugin.PlugInContext;
015: import com.vividsolutions.jump.workbench.ui.MenuNames;
016: import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
017:
018: /**
019: * <code>ChangeLayerableName</code> changes the name of a layer.
020: *
021: * @author <a href="mailto:schmitz@lat-lon.de">Andreas Schmitz</a>
022: * @author last edited by: $Author:$
023: *
024: * @version $Revision:$, $Date:$
025: */
026: public class ChangeLayerableNamePlugIn extends AbstractPlugIn {
027:
028: private MultiEnableCheck enableCheck;
029:
030: @Override
031: public void initialize(PlugInContext context) throws Exception {
032: WorkbenchContext workbenchContext = context
033: .getWorkbenchContext();
034: FeatureInstaller installer = new FeatureInstaller(
035: workbenchContext);
036: installer.addMainMenuItemWithJava14Fix(this ,
037: new String[] { MenuNames.LAYER }, getName() + "...",
038: false, null, enableCheck);
039: JPopupMenu popupMenu = workbenchContext.getWorkbench()
040: .getFrame().getLayerNamePopupMenu();
041: installer.addPopupMenuItem(popupMenu, this , getName()
042: + "{pos:19}", false, null,
043: createEnableCheck(workbenchContext));
044: popupMenu = workbenchContext.getWorkbench().getFrame()
045: .getWMSLayerNamePopupMenu();
046: installer.addPopupMenuItem(popupMenu, this , getName()
047: + "{pos:6}", false, null,
048: createEnableCheck(workbenchContext));
049: }
050:
051: @Override
052: public String getName() {
053: return I18N
054: .get("org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename");
055: }
056:
057: @Override
058: public boolean execute(PlugInContext context) throws Exception {
059: reportNothingToUndoYet(context);
060: final Layerable layer = (Layerable) context.getLayerNamePanel()
061: .selectedNodes(Layerable.class).iterator().next();
062: final String oldName = layer.getName();
063: final String newName = (String) JOptionPane
064: .showInputDialog(
065: context.getWorkbenchFrame(),
066: I18N
067: .get("org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename"),
068: getName(), JOptionPane.PLAIN_MESSAGE, null,
069: null, oldName);
070: execute(new UndoableCommand(getName()) {
071: @Override
072: public void execute() {
073: layer.setName(newName);
074: }
075:
076: @Override
077: public void unexecute() {
078: layer.setName(oldName);
079: }
080: }, context);
081: return true;
082: }
083:
084: /**
085: * @param workbenchContext
086: * @return an enable check
087: */
088: public EnableCheck createEnableCheck(
089: WorkbenchContext workbenchContext) {
090: if (enableCheck != null)
091: return enableCheck;
092:
093: EnableCheckFactory enableCheckFactory = new EnableCheckFactory(
094: workbenchContext);
095: enableCheck = new MultiEnableCheck();
096: enableCheck.add(enableCheckFactory
097: .createWindowWithLayerManagerMustBeActiveCheck());
098: enableCheck.add(enableCheckFactory
099: .createExactlyNLayerablesMustBeSelectedCheck(1,
100: Layerable.class));
101: return enableCheck;
102: }
103:
104: }
|