private ProductNodeGroup<Placemark> getPlacemarkGroup(Product product) { return placemarkDescriptor.getPlacemarkGroup(product); }
@Override public void redo() { final PlacemarkGroup placemarkGroup = placemarkDescriptor.getPlacemarkGroup(product); for (Placemark placemark : placemarks) { placemarkGroup.remove(placemark); } }
@Override public void undo() { final PlacemarkGroup placemarkGroup = placemarkDescriptor.getPlacemarkGroup(product); for (Placemark placemark : placemarks) { placemarkGroup.add(placemark); } }
private void initPlacemarkList(Product product) { if (product != null) { Placemark[] placemarks = placemarkDescriptor.getPlacemarkGroup(product).toArray(new Placemark[0]); placemarkList.addAll(Arrays.asList(placemarks)); } }
@Override public void undo() { placemarkDescriptor.getPlacemarkGroup(product).remove(newPlacemark); }
@Override public void redo() { placemarkDescriptor.getPlacemarkGroup(product).add(newPlacemark); }
@Override public void redo() { placemarkDescriptor.getPlacemarkGroup(product).add(newPlacemark); }
@Override public void undo() { placemarkDescriptor.getPlacemarkGroup(product).remove(newPlacemark); }
@Override public void nodeRemoved(ProductNodeEvent event) { ProductNode sourceNode = event.getSourceNode(); if (sourceNode instanceof Placemark) { final Placemark placemark = (Placemark) sourceNode; removePlacemarksFromRelatedPlacemarks(placemark); if (sourceNode.getOwner() == placemarkDescriptor.getPlacemarkGroup(product)) { placemarkTableModel.removePlacemark(placemark); int selectedRow = placemarkTable.getSelectedRow(); if (selectedRow >= getPlacemarkGroup(product).getNodeCount()) { selectedRow = getPlacemarkGroup(product).getNodeCount() - 1; } if (selectedRow >= 0) { placemarkTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow); } updateUIState(); } } }
@Override public void nodeChanged(ProductNodeEvent event) { ProductNode sourceNode = event.getSourceNode(); if (sourceNode instanceof Placemark && sourceNode.getOwner() == placemarkDescriptor.getPlacemarkGroup( product)) { updateUIState(); } }
@Override public void nodeDataChanged(ProductNodeEvent event) { ProductNode sourceNode = event.getSourceNode(); if (sourceNode instanceof Placemark && sourceNode.getOwner() == placemarkDescriptor.getPlacemarkGroup( product)) { updateUIState(); } }
@Override public void nodeAdded(ProductNodeEvent event) { ProductNode sourceNode = event.getSourceNode(); if (sourceNode instanceof Placemark && sourceNode.getOwner() == placemarkDescriptor.getPlacemarkGroup( product)) { placemarkTableModel.addPlacemark((Placemark) sourceNode); updateUIState(); } }
@Override public void mouseReleased(MouseEvent event) { if (started) { ProductSceneView sceneView = getProductSceneView(event); if (sceneView != null) { sceneView.selectVectorDataLayer(placemarkDescriptor.getPlacemarkGroup(sceneView.getProduct()).getVectorDataNode()); if (isSingleButton1Click(event)) { insertPlacemark(sceneView); } stopInteraction(event); } } }
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)); } }
@Override protected Object getStandardColumnValueAt(int rowIndex, int columnIndex) { Assert.notNull(getProduct()); final Placemark placemark = getPlacemarkDescriptor().getPlacemarkGroup(getProduct()).get(rowIndex);
@Override protected Object getStandardColumnValueAt(int rowIndex, int columnIndex) { Assert.notNull(getProduct()); final Placemark placemark = getPlacemarkDescriptor().getPlacemarkGroup(getProduct()).get(rowIndex); double x = Double.NaN; double y = Double.NaN;
if (!belongsToProduct) { placemarkDescriptor.getPlacemarkGroup(product).add(placemark);