package org.openjump.core.ui.plugin.layer;
import javax.swing.JOptionPane;
import org.openjump.core.ccordsys.srid.SRIDStyle;
import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.workbench.model.Layer;
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;
public class ChangeSRIDPlugIn extends AbstractPlugIn {
public void initialize(PlugInContext context) throws Exception {
EnableCheckFactory enableCheckFactory = new EnableCheckFactory(context
.getWorkbenchContext());
EnableCheck enableCheck = new MultiEnableCheck().add(
enableCheckFactory
.createWindowWithLayerManagerMustBeActiveCheck()).add(
enableCheckFactory.createExactlyNLayersMustBeSelectedCheck(1));
new FeatureInstaller(context.getWorkbenchContext())
.addMainMenuItemWithJava14Fix(this, new String[]{MenuNames.LAYER},
getName() + "...", false, null, enableCheck);
// new FeatureInstaller(context.getWorkbenchContext()).addPopupMenuItem(
// context.getWorkbenchFrame().getLayerNamePopupMenu(), this,
// getName() + "...", false, null, enableCheck);
}
public String getName(){
return I18N.get("org.openjump.core.ui.plugin.layer.ChangeSRIDPlugIn.Change-SRID");
}
public boolean execute(PlugInContext context) throws Exception {
reportNothingToUndoYet(context);
final Layer layer = context.getSelectedLayer(0);
final SRIDStyle sridStyle = (SRIDStyle) layer.getStyle(SRIDStyle.class);
final int oldSRID = sridStyle.getSRID();
String input = (String) JOptionPane.showInputDialog(context
.getWorkbenchFrame(), "SRID:", getName(),
JOptionPane.PLAIN_MESSAGE, null, null, "" + oldSRID);
if (input == null) {
return false;
}
final int newSRID = Integer.parseInt(input);
execute(new UndoableCommand(getName()) {
public void execute() {
sridStyle.setSRID(newSRID);
sridStyle.updateSRIDs(layer);
}
public void unexecute() {
sridStyle.setSRID(oldSRID);
sridStyle.updateSRIDs(layer);
}
}, context);
return true;
}
}