01: package org.openjump.core.ui.plugin.layer;
02:
03: import javax.swing.JOptionPane;
04:
05: import org.openjump.core.ccordsys.srid.SRIDStyle;
06:
07: import com.vividsolutions.jump.I18N;
08: import com.vividsolutions.jump.workbench.model.Layer;
09: import com.vividsolutions.jump.workbench.model.UndoableCommand;
10: import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
11: import com.vividsolutions.jump.workbench.plugin.EnableCheck;
12: import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
13: import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
14: import com.vividsolutions.jump.workbench.plugin.PlugInContext;
15: import com.vividsolutions.jump.workbench.ui.MenuNames;
16: import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
17:
18: public class ChangeSRIDPlugIn extends AbstractPlugIn {
19: public void initialize(PlugInContext context) throws Exception {
20: EnableCheckFactory enableCheckFactory = new EnableCheckFactory(
21: context.getWorkbenchContext());
22: EnableCheck enableCheck = new MultiEnableCheck()
23: .add(
24: enableCheckFactory
25: .createWindowWithLayerManagerMustBeActiveCheck())
26: .add(
27: enableCheckFactory
28: .createExactlyNLayersMustBeSelectedCheck(1));
29: new FeatureInstaller(context.getWorkbenchContext())
30: .addMainMenuItemWithJava14Fix(this ,
31: new String[] { MenuNames.LAYER }, getName()
32: + "...", false, null, enableCheck);
33: // new FeatureInstaller(context.getWorkbenchContext()).addPopupMenuItem(
34: // context.getWorkbenchFrame().getLayerNamePopupMenu(), this,
35: // getName() + "...", false, null, enableCheck);
36: }
37:
38: public String getName() {
39: return I18N
40: .get("org.openjump.core.ui.plugin.layer.ChangeSRIDPlugIn.Change-SRID");
41: }
42:
43: public boolean execute(PlugInContext context) throws Exception {
44: reportNothingToUndoYet(context);
45: final Layer layer = context.getSelectedLayer(0);
46: final SRIDStyle sridStyle = (SRIDStyle) layer
47: .getStyle(SRIDStyle.class);
48: final int oldSRID = sridStyle.getSRID();
49: String input = (String) JOptionPane.showInputDialog(context
50: .getWorkbenchFrame(), "SRID:", getName(),
51: JOptionPane.PLAIN_MESSAGE, null, null, "" + oldSRID);
52: if (input == null) {
53: return false;
54: }
55: final int newSRID = Integer.parseInt(input);
56: execute(new UndoableCommand(getName()) {
57: public void execute() {
58: sridStyle.setSRID(newSRID);
59: sridStyle.updateSRIDs(layer);
60: }
61:
62: public void unexecute() {
63: sridStyle.setSRID(oldSRID);
64: sridStyle.updateSRIDs(layer);
65: }
66: }, context);
67: return true;
68: }
69: }
|