private void insertPlacemark(ProductSceneView view) { Product product = view.getProduct(); final String[] uniqueNameAndLabel = PlacemarkNameFactory.createUniqueNameAndLabel(placemarkDescriptor, product); final String name = uniqueNameAndLabel[0]; final String label = uniqueNameAndLabel[1]; PixelPos rasterPos = new PixelPos(view.getCurrentPixelX() + 0.5f, view.getCurrentPixelY() + 0.5f); Point2D modelPos = view.getRaster().getImageToModelTransform().transform(rasterPos, new Point2D.Double()); Point2D scenePos = new Point2D.Double(); try { view.getRaster().getModelToSceneTransform().transform(modelPos, scenePos); final AffineTransform sceneToImage = Product.findImageToModelTransform(product.getSceneGeoCoding()).createInverse(); rasterPos = (PixelPos) sceneToImage.transform(modelPos, new PixelPos()); } catch (TransformException | NoninvertibleTransformException e) { Dialogs.showError("Could not place pin in image due to transformation exception: " + e.getMessage()); return; } final Placemark newPlacemark = Placemark.createPointPlacemark(placemarkDescriptor, name, label, "", rasterPos, null, product.getSceneGeoCoding()); PlacemarkGroup placemarkGroup = placemarkDescriptor.getPlacemarkGroup(product); String defaultStyleCss = placemarkGroup.getVectorDataNode().getDefaultStyleCss(); if(newPlacemark.getStyleCss().isEmpty()) { newPlacemark.setStyleCss(defaultStyleCss); } placemarkGroup.add(newPlacemark); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(UndoablePlacemarkActionFactory.createUndoablePlacemarkInsertion(product, newPlacemark, placemarkDescriptor)); } }
void removeSelectedPins() { final List<Placemark> placemarks = getSelectedPlacemarks(); for (Placemark placemark : placemarks) { getPlacemarkGroup(product).remove(placemark); } int selectedRow = placemarkTable.getSelectedRow(); if (selectedRow >= getPlacemarkGroup(product).getNodeCount()) { selectedRow = getPlacemarkGroup(product).getNodeCount() - 1; } if (selectedRow >= 0) { placemarkTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow); } UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(UndoablePlacemarkActionFactory.createUndoablePlacemarkRemoval(product, placemarks, placemarkDescriptor)); } updateUIState(); }
boolean added = super.addEdit(wrapEdit); if (isAtSavepoint()) { checkLogOp("addEdit-atSavepoint", wrapEdit); // NOI18N
undoManager.addEdit(new UndoableProductNodeInsertion<>(bandGroup, band));
@Override protected void onOK() { String uncertaintyExpression = targetExprArea.getText(); Product targetProduct = sourceBand.getProduct(); int width = sourceBand.getRasterWidth(); int height = sourceBand.getRasterHeight(); ProductNodeGroup<Band> bandGroup = targetProduct.getBandGroup(); VirtualBand uncertaintyBand = new VirtualBand(getBandName(), ProductData.TYPE_FLOAT32, width, height, uncertaintyExpression); uncertaintyBand.setDescription("Uncertainty propagated from band " + sourceBand.getName() + " = " + sourceBand.getExpression()); uncertaintyBand.setUnit(sourceBand.getUnit()); uncertaintyBand.setNoDataValue(Double.NaN); uncertaintyBand.setNoDataValueUsed(true); uncertaintyBand.setValidPixelExpression(sourceBand.getValidPixelExpression()); ProductUtils.copySpectralBandProperties(sourceBand, uncertaintyBand); bandGroup.add(uncertaintyBand); sourceBand.addAncillaryVariable(uncertaintyBand, relation); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(targetProduct); if (undoManager != null) { undoManager.addEdit(new UndoableProductNodeInsertion<>(bandGroup, uncertaintyBand)); } hide(); uncertaintyBand.setModified(true); if (SnapApp.getDefault().getPreferences().getBoolean(BandMathsDialog.PREF_KEY_AUTO_SHOW_NEW_BANDS, true)) { OpenImageViewAction.openImageView(uncertaintyBand); } }
void copyActivePlacemark() { Guardian.assertNotNull("product", product); Placemark activePlacemark = getSelectedPlacemark(); Guardian.assertNotNull("activePlacemark", activePlacemark); Placemark newPlacemark = Placemark.createPointPlacemark(activePlacemark.getDescriptor(), "copy_of_" + activePlacemark.getName(), activePlacemark.getLabel(), activePlacemark.getDescription(), activePlacemark.getPixelPos(), activePlacemark.getGeoPos(), activePlacemark.getProduct().getSceneGeoCoding()); newPlacemark.setStyleCss(activePlacemark.getStyleCss()); if (PlacemarkDialog.showEditPlacemarkDialog( SwingUtilities.getWindowAncestor(this), product, newPlacemark, placemarkDescriptor)) { makePlacemarkNameUnique(newPlacemark); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(UndoablePlacemarkActionFactory.createUndoablePlacemarkCopying(product, newPlacemark, placemarkDescriptor)); } updateUIState(); } }
void editActivePin() { Guardian.assertNotNull("product", product); Placemark activePlacemark = getSelectedPlacemark(); Placemark originalPlacemark = Placemark.createPointPlacemark(activePlacemark.getDescriptor(), activePlacemark.getName(), activePlacemark.getLabel(), activePlacemark.getDescription(), activePlacemark.getPixelPos(), activePlacemark.getGeoPos(), activePlacemark.getProduct().getSceneGeoCoding()); Guardian.assertNotNull("activePlacemark", activePlacemark); if (PlacemarkDialog.showEditPlacemarkDialog(SwingUtilities.getWindowAncestor(this), product, activePlacemark, placemarkDescriptor)) { makePlacemarkNameUnique(activePlacemark); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(UndoablePlacemarkActionFactory.createUndoablePlacemarkEditing(product, originalPlacemark, activePlacemark, placemarkDescriptor)); } updateUIState(); } }
void newPin() { Guardian.assertNotNull("product", product); String[] uniquePinNameAndLabel = PlacemarkNameFactory.createUniqueNameAndLabel(placemarkDescriptor, product); Placemark newPlacemark = Placemark.createPointPlacemark(placemarkDescriptor, uniquePinNameAndLabel[0], uniquePinNameAndLabel[1], "", new PixelPos(0, 0), null, product.getSceneGeoCoding()); if (PlacemarkDialog.showEditPlacemarkDialog( SwingUtilities.getWindowAncestor(this), product, newPlacemark, placemarkDescriptor)) { makePlacemarkNameUnique(newPlacemark); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(UndoablePlacemarkActionFactory.createUndoablePlacemarkInsertion(product, newPlacemark, placemarkDescriptor)); } updateUIState(); } }
@Override protected Throwable doInBackground() throws Exception { try { GeoCoding geoCoding = product.getSceneGeoCoding(); if (geoCoding instanceof BasicPixelGeoCoding) { final BasicPixelGeoCoding pixelGeoCoding = (BasicPixelGeoCoding) geoCoding; final GeoCoding delegate = pixelGeoCoding.getPixelPosEstimator(); product.setSceneGeoCoding(delegate); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(new UndoableDetachGeoCoding<>(product, pixelGeoCoding)); } } } catch (Throwable e) { return e; } return null; }
public static VectorDataNode createDefaultVectorDataNode(Product product, String name, String description) { CoordinateReferenceSystem modelCrs = product.getSceneCRS(); SimpleFeatureType type = PlainFeatureFactory.createDefaultFeatureType(modelCrs); VectorDataNode vectorDataNode = new VectorDataNode(name, type); vectorDataNode.setDescription(description); product.getVectorDataGroup().add(vectorDataNode); vectorDataNode.getPlacemarkGroup(); String oldLayerId = selectVectorDataLayer(vectorDataNode); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(new UndoableVectorDataNodeInsertion(product, vectorDataNode, oldLayerId)); } return vectorDataNode; }
public boolean addEdit(UndoableEdit anEdit) { return original.addEdit(anEdit); }
public void undoableEditHappened (UndoableEdit edit) { if (enabled) undoRedoManager.addEdit (edit); }
@Override protected Band[] doInBackground(ProgressMonitor pm) throws Exception { final Band[] xyDisplacementBands = createXYDisplacementBands(product, pm); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(new UndoableDisplacementBandsCreation(product, xyDisplacementBands)); } return xyDisplacementBands; }
static <T extends ProductNode> void performUndoableProductNodeEdit(String name, T productNode, UndoableProductNodeEdit.Edit<T> action, UndoableProductNodeEdit.Edit<T> undo) { action.edit(productNode); Product product = productNode.getProduct(); // be paranoid if (product != null) { UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); // be paranoid again if (undoManager != null) { undoManager.addEdit(new UndoableProductNodeEdit<>(name, productNode, undo, action)); } } }
public boolean addEdit(UndoableEdit anEdit) { if (!(anEdit instanceof BeforeModificationEdit)) { /* UndoRedo.addEdit() must not be done lazily * because the edit must be "inserted" before the current one. */ getUndoRedo().addEdit(new BeforeModificationEdit(saveTime, anEdit)); return true; } return false; }
private static <T extends ProductNode> void deleteProductNode(Product product, ProductNodeGroup<T> group, T productNode) { closeDocumentWindow(productNode); final int index = group.indexOf(productNode); group.remove(productNode); UndoRedo.Manager manager = SnapApp.getDefault().getUndoManager(product); if (manager != null) { manager.addEdit(new UndoableProductNodeDeletion<>(group, productNode, index)); } }
public boolean addEdit(UndoableEdit anEdit) { if (!(anEdit instanceof BeforeModificationEdit)) { /* UndoRedo.addEdit() must not be done lazily * because the edit must be "inserted" before the current one. */ getUndoRedo().addEdit(new BeforeModificationEdit(saveTime, anEdit)); return true; } return false; }
@Override protected Void doInBackground(ProgressMonitor pm) throws Exception { final BasicPixelGeoCoding pixelGeoCoding = GeoCodingFactory.createPixelGeoCoding(latBand, lonBand, validMask, searchRadius, pm); product.setSceneGeoCoding(pixelGeoCoding); UndoRedo.Manager undoManager = SnapApp.getDefault().getUndoManager(product); if (undoManager != null) { undoManager.addEdit(new UndoableAttachGeoCoding<>(product, pixelGeoCoding)); } return null; }
/** Consume an undoable edit. * Delegates to superclass and notifies listeners. * @param ue the edit */ @Override public void undoableEditHappened(final UndoableEditEvent ue) { addEdit(ue.getEdit()); cs.fireChange(); }