package org.openjump.core.ui.plugin.layer; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.workbench.WorkbenchContext; import com.vividsolutions.jump.workbench.model.Layerable; import com.vividsolutions.jump.workbench.model.UndoableCommand; import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; import com.vividsolutions.jump.workbench.plugin.EnableCheck; import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory; import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck; import com.vividsolutions.jump.workbench.plugin.PlugInContext; import com.vividsolutions.jump.workbench.ui.MenuNames; import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller; /** * <code>ChangeLayerableName</code> changes the name of a layer. * * @author <a href="mailto:schmitz@lat-lon.de">Andreas Schmitz</a> * @author last edited by: $Author:$ * * @version $Revision:$, $Date:$ */ public class ChangeLayerableNamePlugIn extends AbstractPlugIn { //private EnableCheck enableCheck; @Override public void initialize(PlugInContext context) throws Exception { WorkbenchContext workbenchContext = context.getWorkbenchContext(); EnableCheck enableCheck = createEnableCheck(workbenchContext); // Install in main menu FeatureInstaller installer = new FeatureInstaller(workbenchContext); installer.addMainMenuItemWithJava14Fix(this, new String[] { MenuNames.LAYER }, getName() + "...", false, null, enableCheck); // Install in layerName popup menu JPopupMenu popupMenu = workbenchContext.getWorkbench().getFrame() .getLayerNamePopupMenu(); installer.addPopupMenuItem(popupMenu, this, getName() + "{pos:5}", false, null, enableCheck); // INstall in WMSLayerName popup menu popupMenu = workbenchContext.getWorkbench().getFrame() .getWMSLayerNamePopupMenu(); installer.addPopupMenuItem(popupMenu, this, getName() + "{pos:6}", false, null, enableCheck); } @Override public String getName() { return I18N .get("org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename"); } @Override public boolean execute(PlugInContext context) throws Exception { reportNothingToUndoYet(context); final Layerable layer = (Layerable) context.getLayerNamePanel() .selectedNodes(Layerable.class).iterator().next(); final String oldName = layer.getName(); final String newName = (String)JOptionPane.showInputDialog(context.getWorkbenchFrame(), I18N.get("org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename"), getName(), JOptionPane.PLAIN_MESSAGE, null, null, oldName); if(newName != null) { execute(new UndoableCommand(getName()) { @Override public void execute() { layer.setName(newName); } @Override public void unexecute() { layer.setName(oldName); } }, context); } return true; } /** * @param workbenchContext * @return an enable check */ public EnableCheck createEnableCheck(WorkbenchContext workbenchContext) { //if (enableCheck != null) return enableCheck; EnableCheckFactory enableCheckFactory = new EnableCheckFactory(workbenchContext); MultiEnableCheck enableCheck = new MultiEnableCheck(); enableCheck.add(enableCheckFactory.createWindowWithLayerManagerMustBeActiveCheck()); enableCheck.add(enableCheckFactory.createExactlyNLayerablesMustBeSelectedCheck(1, Layerable.class)); return enableCheck; } }