public void initialize(PlugInContext context) throws Exception { WorkbenchContext workbenchContext = context.getWorkbenchContext(); EnableCheck enableCheck = createEnableCheck(workbenchContext); FeatureInstaller installer = new FeatureInstaller(workbenchContext); installer.addMainMenuItem( this, new String[] {MenuNames.FILE}, new JMenuItem(getName(), IconLoader.icon("disk_multiple_16.png")), createEnableCheck(context.getWorkbenchContext()), 9); fileChooser = new JFCWithEnterAction(); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.setDialogTitle(FILECHOOSER); }
public class PasteItemsAtPlugIn extends PasteItemsPlugIn { public static ImageIcon ICON = IconLoader.icon("items_paste_here.png"); WKTReader reader = new WKTReader(); private static final String PASTE_ITEMS_AT_POINT = I18N.get("org.openjump.core.ui.plugin.mousemenu.PasteItemsAtPlugIn.Paste-Items-At-Point"); public PasteItemsAtPlugIn() { super(PASTE_ITEMS_AT_POINT); this.setShortcutKeys(KeyEvent.VK_V); this.setShortcutModifiers(KeyEvent.CTRL_MASK + KeyEvent.SHIFT_MASK); } public void initialize(PlugInContext context) throws Exception { // WorkbenchContext workbenchContext = context.getWorkbenchContext(); // FeatureInstaller featureInstaller = new FeatureInstaller(workbenchContext); // JPopupMenu popupMenu = LayerViewPanel.popupMenu(); // featureInstaller.addPopupMenuItem(popupMenu, this, getNameWithMnemonic() // + "{pos:10}", false, this.getIcon(), // this.createEnableCheck(workbenchContext)); } public boolean execute(final PlugInContext context) throws Exception { reportNothingToUndoYet(context); Collection features; Transferable transferable = GUIUtil.getContents(Toolkit.getDefaultToolkit().getSystemClipboard()); if (transferable.isDataFlavorSupported( CollectionOfFeaturesTransferable.COLLECTION_OF_FEATURES_FLAVOR)) { features = (Collection) GUIUtil.getContents(Toolkit.getDefaultToolkit().getSystemClipboard()) .getTransferData(CollectionOfFeaturesTransferable.COLLECTION_OF_FEATURES_FLAVOR); } else { // Allow the user to paste features using WKT. [Jon Aquino] features = reader .read( new StringReader((String) transferable.getTransferData(DataFlavor.stringFlavor))) .getFeatures(); } final SelectionManager selectionManager = context.getLayerViewPanel().getSelectionManager(); final Layer layer = context.getSelectedLayer(0); final Collection featureCopies = conform(features, layer.getFeatureCollectionWrapper().getFeatureSchema()); Feature feature = ((Feature) featureCopies.iterator().next()); Coordinate firstPoint = feature.getGeometry().getCoordinate(); Coordinate cursorPt = context .getLayerViewPanel() .getViewport() .toModelCoordinate(context.getLayerViewPanel().getLastMouseLocation()); Coordinate displacement = CoordUtil.subtract(cursorPt, firstPoint); moveAll(featureCopies, displacement); execute( new UndoableCommand(getName()) { public void execute() { layer.getFeatureCollectionWrapper().addAll(featureCopies); selectionManager.clear(); selectionManager.getFeatureSelection().selectItems(layer, featureCopies); } public void unexecute() { layer.getFeatureCollectionWrapper().removeAll(featureCopies); } }, context); return true; } private void moveAll(Collection featureCopies, Coordinate displacement) { for (Iterator j = featureCopies.iterator(); j.hasNext(); ) { Feature item = (Feature) j.next(); move(item.getGeometry(), displacement); item.getGeometry().geometryChanged(); } } private void move(Geometry geometry, final Coordinate displacement) { geometry.apply( new CoordinateFilter() { public void filter(Coordinate coordinate) { // coordinate.setCoordinate(CoordUtil.add(coordinate, displacement)); coordinate.x += displacement.x; coordinate.y += displacement.y; } }); } public ImageIcon getIcon() { return ICON; } }