public void addProduct(Product product) { if (!productList.contains(product)) { final Product[] oldProducts = getProducts(); if (productList.add(product)) { firePropertyChange(PROPERTY_PRODUCTS, oldProducts, getProducts()); } } }
public void setAdditionalGeoBoundaries(final GeoPos[][] geoBoundarys) { final Boundary[] oldGeoBoundarys = getAdditionalGeoBoundaries(); if (geoBoundarys != null) { final List<Boundary> boundaryList = new ArrayList<>(); for (GeoPos[] geoBoundary : geoBoundarys) { boundaryList.add(new Boundary(geoBoundary)); } additionalGeoBoundaryList = boundaryList.toArray(new Boundary[boundaryList.size()]); } firePropertyChange(PROPERTY_ADDITIONAL_GEO_BOUNDARIES, oldGeoBoundarys, additionalGeoBoundaryList); }
public Product getSelectedProduct() { return dataModel.getSelectedProduct(); }
public void setAutoZoomEnabled(boolean autoZoomEnabled) { final boolean oldAutoZommEnabled = isAutoZommEnabled(); if (oldAutoZommEnabled != autoZoomEnabled) { this.autoZoomEnabled = autoZoomEnabled; firePropertyChange(PROPERTY_AUTO_ZOOM_ENABLED, oldAutoZommEnabled, autoZoomEnabled); } }
@Override public void paintOverlay(LayerCanvas canvas, Rendering rendering) { for (final NestWorldMapPaneDataModel.Boundary extraGeoBoundary : dataModel.getAdditionalGeoBoundaries()) { drawGeoBoundary(rendering.getGraphics(), assemblePathList(extraGeoBoundary.geoBoundary), extraGeoBoundary.isClosed, transWhiteColor, borderWhiteColor); } for (final NestWorldMapPaneDataModel.Boundary selectGeoBoundary : dataModel.getSelectedGeoBoundaries()) { drawGeoBoundary(rendering.getGraphics(), assemblePathList(selectGeoBoundary.geoBoundary), selectGeoBoundary.isClosed, transRedColor, borderRedColor); } final Product selectedProduct = dataModel.getSelectedProduct(); for (final Product product : dataModel.getProducts()) { if (product != null && selectedProduct != product) { drawProduct(rendering.getGraphics(), product, transWhiteColor, Color.WHITE); } } if (selectedProduct != null) { drawProduct(rendering.getGraphics(), selectedProduct, transWhiteColor, Color.RED); } final NestWorldMapPaneDataModel.Boundary selectionBox = dataModel.getSelectionBoundary(); drawGeoBoundary(rendering.getGraphics(), assemblePathList(selectionBox.geoBoundary),//selectionBox.boundaryPaths, selectionBox.isClosed, selectionFillColor, selectionBorderColor); }
public void setSelectedGeoBoundaries(final GeoPos[][] geoBoundarys) { final Boundary[] oldGeoBoundarys = getSelectedGeoBoundaries(); if (geoBoundarys != null) { final List<Boundary> boundaryList = new ArrayList<>(); for (GeoPos[] geoBoundary : geoBoundarys) { boundaryList.add(new Boundary(geoBoundary)); } selectedGeoBoundaryList = boundaryList.toArray(new Boundary[boundaryList.size()]); } firePropertyChange(PROPERTY_SELECTED_GEO_BOUNDARIES, oldGeoBoundarys, selectedGeoBoundaryList); }
private void updateUiState(PropertyChangeEvent evt) { if (NestWorldMapPaneDataModel.PROPERTY_LAYER.equals(evt.getPropertyName())) { exchangeWorldMapLayer(); } if (NestWorldMapPaneDataModel.PROPERTY_PRODUCTS.equals(evt.getPropertyName())) { repaint(); } if (NestWorldMapPaneDataModel.PROPERTY_SELECTED_PRODUCT.equals(evt.getPropertyName()) || NestWorldMapPaneDataModel.PROPERTY_AUTO_ZOOM_ENABLED.equals(evt.getPropertyName())) { final Product selectedProduct = dataModel.getSelectedProduct(); if (selectedProduct != null && dataModel.isAutoZommEnabled()) { zoomToProduct(selectedProduct); } else { repaint(); } } if (NestWorldMapPaneDataModel.PROPERTY_ADDITIONAL_GEO_BOUNDARIES.equals(evt.getPropertyName()) || NestWorldMapPaneDataModel.PROPERTY_SELECTED_GEO_BOUNDARIES.equals(evt.getPropertyName())) { repaint(); } }
public NestWorldMapPane(NestWorldMapPaneDataModel dataModel) { this.dataModel = dataModel; try { layerCanvas = new LayerCanvas(); layerCanvas.getModel().getViewport().setModelYAxisDown(false); installLayerCanvasNavigation(layerCanvas, dataModel); layerCanvas.addOverlay(new BoundaryOverlay()); final Layer rootLayer = layerCanvas.getLayer(); final Dimension dimension = new Dimension(400, 150); final Viewport viewport = layerCanvas.getViewport(); viewport.setViewBounds(new Rectangle(dimension)); setPreferredSize(dimension); setSize(dimension); setLayout(new BorderLayout()); add(layerCanvas, BorderLayout.CENTER); dataModel.addModelChangeListener(new ModelChangeListener()); worldMapLayer = dataModel.getWorldMapLayer(new WorldMapLayerContext(rootLayer)); layerCanvas.getLayer().getChildren().add(worldMapLayer); layerCanvas.getViewport().zoom(worldMapLayer.getModelBounds()); setNavControlVisible(true); } catch (Exception e) { SnapApp.getDefault().handleError("Error in worldmap initialization", e); } }
public GeoPos[] getSelectionBox() { return worldMapDataModel.getSelectionBox(); }
public void setSelectedProduct(Product product) { Product oldSelectedProduct = selectedProduct; if (oldSelectedProduct != product) { selectedProduct = product; firePropertyChange(PROPERTY_SELECTED_PRODUCT, oldSelectedProduct, selectedProduct); } }
public Product[] getProducts() { return dataModel.getProducts(); }
public WorldMapUI() { worldMapDataModel = new NestWorldMapPaneDataModel(); worlMapPane = new NestWorldMapPane(worldMapDataModel); worlMapPane.getLayerCanvas().addMouseListener(new MouseHandler()); }
private void exchangeWorldMapLayer() { final List<Layer> children = layerCanvas.getLayer().getChildren(); for (Layer child : children) { child.dispose(); } children.clear(); final Layer rootLayer = layerCanvas.getLayer(); worldMapLayer = dataModel.getWorldMapLayer(new WorldMapLayerContext(rootLayer)); children.add(worldMapLayer); layerCanvas.getViewport().zoom(worldMapLayer.getModelBounds()); }
public void zoomToProduct(Product product) { final NestWorldMapPaneDataModel.Boundary[] selGeoBoundaries = dataModel.getSelectedGeoBoundaries(); final GeneralPath[] generalPaths; if (product != null && product.getSceneGeoCoding() != null) { generalPaths = getGeoBoundaryPaths(product); } else if (selGeoBoundaries.length > 0) { generalPaths = assemblePathList(selGeoBoundaries[0].geoBoundary);//selGeoBoundaries[0].boundaryPaths; } else { return; } Rectangle2D modelArea = new Rectangle2D.Double(); final Viewport viewport = layerCanvas.getViewport(); for (GeneralPath generalPath : generalPaths) { final Rectangle2D rectangle2D = generalPath.getBounds2D(); if (modelArea.isEmpty()) { if (!viewport.isModelYAxisDown()) { modelArea.setFrame(rectangle2D.getX(), rectangle2D.getMaxY(), rectangle2D.getWidth(), rectangle2D.getHeight()); } modelArea = rectangle2D; } else { modelArea.add(rectangle2D); } } Rectangle2D modelBounds = modelArea.getBounds2D(); modelBounds.setFrame(modelBounds.getX() - 2, modelBounds.getY() - 2, modelBounds.getWidth() + 4, modelBounds.getHeight() + 4); modelBounds = cropToMaxModelBounds(modelBounds); viewport.zoom(modelBounds); }
public Boundary getSelectionBoundary() { return new Boundary(getSelectionBox()); }
public void removeProduct(Product product) { if (productList.contains(product)) { final Product[] oldProducts = getProducts(); if (productList.remove(product)) { firePropertyChange(PROPERTY_PRODUCTS, oldProducts, getProducts()); } } }
public void setProducts(Product[] products) { final Product[] oldProducts = getProducts(); productList.clear(); if (products != null) { productList.addAll(Arrays.asList(products)); } firePropertyChange(PROPERTY_PRODUCTS, oldProducts, getProducts()); }