@Override public int getRowCount() { return vectorDataNode.getPlacemarkGroup().getNodeCount(); }
@Override public Object getValueAt(int rowIndex, int columnIndex) { return vectorDataNode.getPlacemarkGroup().get(rowIndex).getFeature().getAttribute(columnIndex); } }
private void generatePlacemarkForFeature(SimpleFeature feature) { final Placemark placemark = getPlacemarkGroup().getPlacemark(feature); if (placemark == null) { placemarkGroup.add(placemarkDescriptor.createPlacemark(feature)); } }
@Override public PlacemarkGroup getPlacemarkGroup(Product product) { final VectorDataNode[] nodes = product.getVectorDataGroup().toArray(new VectorDataNode[0]); for (VectorDataNode node : nodes) { if (node.getPlacemarkDescriptor() == this) { return node.getPlacemarkGroup(); } } return null; }
private void onNodeChange(ProductNodeEvent event) { ProductNode sourceNode = event.getSourceNode(); if (sourceNode == vectorDataNode) { updateTable(); } else if (sourceNode.getOwner() == vectorDataNode.getPlacemarkGroup()) { updateTable(); } }
private synchronized PlacemarkGroup createPinGroup() { final VectorDataNode vectorDataNode = new VectorDataNode(PIN_GROUP_NAME, Placemark.createPinFeatureType()); vectorDataNode.setDefaultStyleCss( "symbol:pin; fill:#0000ff; fill-opacity:0.7; stroke:#ffffff; stroke-opacity:1.0; stroke-width:0.5"); vectorDataNode.setPermanent(true); this.vectorDataGroup.add(vectorDataNode); return vectorDataNode.getPlacemarkGroup(); }
private synchronized PlacemarkGroup createGcpGroup() { final VectorDataNode vectorDataNode = new VectorDataNode(GCP_GROUP_NAME, Placemark.createGcpFeatureType()); vectorDataNode.setDefaultStyleCss("symbol:plus; stroke:#ff8800; stroke-opacity:0.8; stroke-width:1.0"); vectorDataNode.setPermanent(true); this.vectorDataGroup.add(vectorDataNode); return vectorDataNode.getPlacemarkGroup(); }
private static boolean mustShowVectorData(Product product) { final ProductNodeGroup<VectorDataNode> vectorNodeGroup = product.getVectorDataGroup(); VectorDataNode gcpVectorDataNode = product.getGcpGroup().getVectorDataNode(); VectorDataNode pinVectorDataNode = product.getPinGroup().getVectorDataNode(); for (int i = 0; i < vectorNodeGroup.getNodeCount(); i++) { final VectorDataNode vectorDataNode = vectorNodeGroup.get(i); boolean isPinOrGcpNode = vectorDataNode.equals(gcpVectorDataNode) || vectorDataNode.equals(pinVectorDataNode); if (isPinOrGcpNode) { if(vectorDataNode.getPlacemarkGroup().getNodeCount() > 0) { return true; } } else { return true; } } return false; }
@Override public void nodeChanged(ProductNodeEvent event) { if (event.getSourceNode() == getVectorDataNode()) { Debug.trace("VectorDataLayer$VectorDataChangeHandler.nodeChanged: event = " + event); if (ProductNode.PROPERTY_NAME_NAME.equals(event.getPropertyName())) { setName(getVectorDataNode().getName()); } else if (VectorDataNode.PROPERTY_NAME_STYLE_CSS.equals(event.getPropertyName())) { if (event.getNewValue() != null) { setLayerStyle(event.getNewValue().toString()); } } else if (VectorDataNode.PROPERTY_NAME_FEATURE_COLLECTION.equals(event.getPropertyName())) { if (!reactingAgainstFigureChange) { updateFigureCollection(); // todo - compute changed modelRegion instead of passing null (nf) fireLayerDataChanged(null); } } } else if (event.getSourceNode() instanceof Placemark) { final Placemark sourceNode = (Placemark) event.getSourceNode(); if (getVectorDataNode().getPlacemarkGroup().contains(sourceNode)) { if (event.getPropertyName().equals(Placemark.PROPERTY_NAME_STYLE_CSS)) { updateFigureCollection(); } else if (event.getPropertyName().equals("geometry")) { updateFigureCollection(); } } } } }
placemark = vectorDataNode.getPlacemarkGroup().getPlacemark(feature); } else { placemark = null;
private void setFeatureStyleCss(SimpleFeatureFigure selectedFigure, FigureStyle style) { final VectorDataNode vectorDataNode = getVectorDataNode(); if (vectorDataNode != null) { // Transfer new style to associated placemark. Awful code :-( final Placemark placemark = vectorDataNode.getPlacemarkGroup().getPlacemark(selectedFigure.getSimpleFeature()); if (placemark != null) { placemark.setStyleCss(style.toCssString()); } else { final int index = selectedFigure.getSimpleFeature().getFeatureType().indexOf(Placemark.PROPERTY_NAME_STYLE_CSS); if (index != -1) { selectedFigure.getSimpleFeature().setAttribute(index, style.toCssString()); } } } } }
@Before() public void setup() { Product product = new Product("PinGroup Test", "TestType", 10, 10); VectorDataNode pinVectorDataNode = product.getVectorDataGroup().get("pins"); pinBuilder = new SimpleFeatureBuilder(pinVectorDataNode.getFeatureType()); placemarkGroup = pinVectorDataNode.getPlacemarkGroup(); pinFeatureCollection = pinVectorDataNode.getFeatureCollection(); }
@Test public void testInitialGcpVectorDataNodeState() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getGcpGroup()); final VectorDataNode node = p.getVectorDataGroup().get("ground_control_points"); assertNotNull(node); assertTrue(node.getPlacemarkDescriptor() instanceof GcpDescriptor); assertSame(p.getGcpGroup(), p.getGcpGroup()); assertSame(p.getGcpGroup(), node.getPlacemarkGroup()); assertTrue(node.getFeatureCollection().isEmpty()); assertEquals(0, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testInitialPinVectorDataNodeState() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getPinGroup()); final VectorDataNode node = p.getVectorDataGroup().get("pins"); assertNotNull(node); assertTrue(node.getPlacemarkDescriptor() instanceof PinDescriptor); assertSame(p.getPinGroup(), p.getPinGroup()); assertSame(p.getPinGroup(), node.getPlacemarkGroup()); assertTrue(node.getFeatureCollection().isEmpty()); assertEquals(0, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testVectorDataNodeAndPlacemarkGroup() { Product p = new Product("p", "pt", 512, 512); ProductNodeGroup<VectorDataNode> vectorDataGroup = p.getVectorDataGroup(); Placemark placemark = Placemark.createPointPlacemark(PointDescriptor.getInstance(), "placemark_1", null, null, new PixelPos(10, 10), null, null); VectorDataNode vectorDataNode = new VectorDataNode("Features", Placemark.createPointFeatureType("feature")); FeatureCollection<SimpleFeatureType, SimpleFeature> featureCollection = vectorDataNode.getFeatureCollection(); vectorDataGroup.add(vectorDataNode); //Also: Sets the owner of the vectorDataNode vectorDataNode.getPlacemarkGroup(); //Also: Creates the PlacemarkGroup (owner has to be set!) featureCollection.add(placemark.getFeature()); assertEquals(1, vectorDataNode.getFeatureCollection().size()); assertEquals(vectorDataNode.getFeatureCollection().size(), vectorDataNode.getPlacemarkGroup().getNodeCount()); }
public static VectorDataNode createDefaultVectorDataNode(Product product, String name, String description) { CoordinateReferenceSystem modelCrs = ImageManager.getModelCrs(product.getGeoCoding()); SimpleFeatureType type = PlainFeatureFactory.createDefaultFeatureType(modelCrs); VectorDataNode vectorDataNode = new VectorDataNode(name, type); vectorDataNode.setDescription(description); product.getVectorDataGroup().add(vectorDataNode); vectorDataNode.getPlacemarkGroup(); final ProductSceneView sceneView = VisatApp.getApp().getSelectedProductSceneView(); if (sceneView != null) { VisatApp.getApp().getProductTree().expand(vectorDataNode); sceneView.selectVectorDataLayer(vectorDataNode); final LayerFilter nodeFilter = VectorDataLayerFilterFactory.createNodeFilter(vectorDataNode); Layer vectorDataLayer = LayerUtils.getChildLayer(sceneView.getRootLayer(), LayerUtils.SEARCH_DEEP, nodeFilter); if (vectorDataLayer != null) { vectorDataLayer.setVisible(true); } } return vectorDataNode; }
@Test public void testAddingEmptyGcpVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getGcpGroup()); final VectorDataNode node = p.getVectorDataGroup().get("ground_control_points"); // add empty "GCP" VDN final VectorDataNode node2 = new VectorDataNode("ground_control_points", node.getFeatureType()); final boolean added = p.getVectorDataGroup().add(node2); assertFalse(added); assertSame(node, p.getVectorDataGroup().get("ground_control_points")); assertTrue(node.getFeatureCollection().isEmpty()); assertEquals(0, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testAddingEmptyPinVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getPinGroup()); final VectorDataNode node = p.getVectorDataGroup().get("pins"); // add empty "pins" VDN final VectorDataNode node2 = new VectorDataNode("pins", node.getFeatureType()); final boolean added = p.getVectorDataGroup().add(node2); assertFalse(added); assertSame(node, p.getVectorDataGroup().get("pins")); assertTrue(node.getFeatureCollection().isEmpty()); assertEquals(0, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }
@Test public void testAddingNonEmptyGcpVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getGcpGroup()); final VectorDataNode node = p.getVectorDataGroup().get("ground_control_points"); // add non-empty "pins" VDN final VectorDataNode node2 = new VectorDataNode("ground_control_points", node.getFeatureType()); node2.getFeatureCollection().add(new SimpleFeatureBuilder(node.getFeatureType()).buildFeature("id")); final boolean added3 = p.getVectorDataGroup().add(node2); assertFalse(added3); assertSame(node, p.getVectorDataGroup().get("ground_control_points")); assertFalse(node.getFeatureCollection().isEmpty()); assertEquals(1, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); } }
@Test public void testAddingNonEmptyPinVectorDataNode() throws Exception { final Product p = new Product("n", "t", 1, 1); assertNotNull(p.getPinGroup()); final VectorDataNode node = p.getVectorDataGroup().get("pins"); // add non-empty "pins" VDN final VectorDataNode node2 = new VectorDataNode("pins", node.getFeatureType()); node2.getFeatureCollection().add(new SimpleFeatureBuilder(node.getFeatureType()).buildFeature("id")); final boolean added3 = p.getVectorDataGroup().add(node2); assertFalse(added3); assertSame(node, p.getVectorDataGroup().get("pins")); assertFalse(node.getFeatureCollection().isEmpty()); assertEquals(1, node.getPlacemarkGroup().getNodeCount()); assertTrue(node.isPermanent()); }