private static Figure[] getFigures(VectorDataLayer vectorDataLayer, VectorDataFigureEditor figureEditor, MouseEvent mouseEvent) { Viewport viewport = figureEditor.getViewport(); AffineTransform v2mTransform = viewport.getViewToModelTransform(); Rectangle rectangle = figureEditor.getSelectionRectangle(); Figure[] figures = new Figure[0]; if (rectangle != null) { Shape shape = v2mTransform.createTransformedShape(rectangle); figures = vectorDataLayer.getFigureCollection().getFigures(shape); } else { v2mTransform.transform(mouseEvent.getPoint(), null); Point2D modelPoint = v2mTransform.transform(mouseEvent.getPoint(), null); AffineTransform m2vTransform = viewport.getModelToViewTransform(); Figure figure = vectorDataLayer.getFigureCollection().getFigure(modelPoint, m2vTransform); if (figure != null) { figures = new Figure[]{figure}; } } return figures; }
/** * Gets either the selected figures, or all the figures of the currently selected layer. * * @param selectedOnly If {@code true}, only selected figures are returned. * @return The feature figures or an empty array. * @since BEAM 4.10 */ public SimpleFeatureFigure[] getFeatureFigures(boolean selectedOnly) { ArrayList<SimpleFeatureFigure> selectedFigures = new ArrayList<>(); collectFeatureFigures(figureEditor.getFigureSelection(), selectedFigures); if (selectedFigures.isEmpty() && !selectedOnly && getSelectedLayer() instanceof VectorDataLayer) { VectorDataLayer vectorDataLayer = (VectorDataLayer) getSelectedLayer(); collectFeatureFigures(vectorDataLayer.getFigureCollection(), selectedFigures); } return selectedFigures.toArray(new SimpleFeatureFigure[selectedFigures.size()]); }
public boolean selectPlacemarks(PlacemarkGroup placemarkGroup, Placemark[] placemarks) { VectorDataLayer layer = selectVectorDataLayer(placemarkGroup.getVectorDataNode()); if (layer != null) { FigureCollection figureCollection = layer.getFigureCollection(); Figure[] figures = figureCollection.getFigures(); ArrayList<SimpleFeatureFigure> selectedFigures = new ArrayList<>(figures.length); HashSet<Placemark> placemarkSet = new HashSet<>(Arrays.asList(placemarks)); for (Figure figure : figures) { if (figure instanceof SimpleFeatureFigure) { SimpleFeatureFigure featureFigure = (SimpleFeatureFigure) figure; Placemark placemark = placemarkGroup.getPlacemark(featureFigure.getSimpleFeature()); if (placemarkSet.contains(placemark)) { selectedFigures.add(featureFigure); } } } figureEditor.getFigureSelection().removeAllFigures(); figureEditor.getFigureSelection().addFigures(selectedFigures.toArray(new Figure[selectedFigures.size()])); final int selectionStage = Math.min(selectedFigures.size(), 2); figureEditor.getFigureSelection().setSelectionStage(selectionStage); return true; } return false; }
if (vectorDataLayer.getFigureCollection().getFigureCount() > 0) { Figure figure = vectorDataLayer.getFigureCollection().getFigure(0); if (figure instanceof ShapeFigure) { return (ShapeFigure) figure;
public void vectorDataLayerSelected(VectorDataLayer vectorDataLayer) { Debug.trace("VectorDataFigureEditor.vectorDataLayerSelected: " + vectorDataLayer.getName()); this.vectorDataNode = vectorDataLayer.getVectorDataNode(); setFigureCollection(vectorDataLayer.getFigureCollection()); setFigureFactory(vectorDataLayer.getFigureFactory()); final DefaultFigureStyle style = new DefaultFigureStyle(); style.fromCssString(vectorDataLayer.getVectorDataNode().getDefaultStyleCss()); setDefaultLineStyle(style); setDefaultPolygonStyle(style); }