private void updateUiState(PropertyChangeEvent evt) { if (WorldMapPaneDataModel.PROPERTY_LAYER.equals(evt.getPropertyName())) { exchangeWorldMapLayer(); } if (WorldMapPaneDataModel.PROPERTY_PRODUCTS.equals(evt.getPropertyName())) { repaint(); } if (WorldMapPaneDataModel.PROPERTY_SELECTED_PRODUCT.equals(evt.getPropertyName()) || WorldMapPaneDataModel.PROPERTY_AUTO_ZOOM_ENABLED.equals(evt.getPropertyName())) { final Product selectedProduct = dataModel.getSelectedProduct(); if (selectedProduct != null && dataModel.isAutoZoomEnabled()) { zoomToProduct(selectedProduct); } else { repaint(); } } if (WorldMapPaneDataModel.PROPERTY_ADDITIONAL_GEO_BOUNDARIES.equals(evt.getPropertyName())) { repaint(); } }
/** * Set the worldmap's scale. * * @param scale the scale. * @deprecated since 4.10.1, use layer canvas for zooming instead */ @Deprecated public void setScale(final float scale) { if (getScale() != scale && scale > 0) { final float oldValue = getScale(); getLayerCanvas().getViewport().setZoomFactor(scale); firePropertyChange("scale", oldValue, scale); } } }
public void zoomAll() { getLayerCanvas().getViewport().zoom(worldMapLayer.getModelBounds()); fireScrolled(); }
this.panSupport = new DefaultPanSupport(layerCanvas); this.zoomListeners = new HashSet<>(); getLayerCanvas().getModel().getViewport().setModelYAxisDown(false); if (overlay == null) { getLayerCanvas().addOverlay(new BoundaryOverlayImpl(dataModel)); } else { getLayerCanvas().addOverlay(overlay); final Layer rootLayer = getLayerCanvas().getLayer(); final Viewport viewport = getLayerCanvas().getViewport(); viewport.setViewBounds(new Rectangle(dimension)); setPreferredSize(dimension); setSize(dimension); setLayout(new BorderLayout()); add(getLayerCanvas(), BorderLayout.CENTER); installLayerCanvasNavigation(getLayerCanvas()); getLayerCanvas().getLayer().getChildren().add(worldMapLayer); zoomAll(); setNavControlVisible(true); addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) {
public void zoomToProduct(Product product) { if (product == null || product.getGeoCoding() == null) { return; } final GeneralPath[] generalPaths = getGeoBoundaryPaths(product); Rectangle2D modelArea = new Rectangle2D.Double(); final Viewport viewport = getLayerCanvas().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); fireScrolled(); }
@Override public JComponent createControl() { final JPanel mainPane = new JPanel(new BorderLayout(4, 4)); mainPane.setPreferredSize(new Dimension(320, 160)); worldMapDataModel = new WorldMapPaneDataModel(); final WorldMapPane worldMapPane = new WorldMapPane(worldMapDataModel); worldMapPane.setNavControlVisible(true); mainPane.add(worldMapPane, BorderLayout.CENTER); visatApp.addProductTreeListener(new WorldMapPTL()); // Add an internal frame listener to VISAT so that we can update our // world map window with the information of the currently activated // product scene view. // visatApp.addInternalFrameListener(new WorldMapIFL()); setProducts(visatApp.getProductManager().getProducts()); setSelectedProduct(visatApp.getSelectedProduct()); return mainPane; }
private void createUI() { worldMapDataModel = new WorldMapPaneDataModel(); final WorldMapPane mapPane = new WorldMapPane(worldMapDataModel); setContentPane(mapPane); if (helpId != null) { HelpSys.enableHelpKey(this, helpId); } } }
protected void drawProduct(final Graphics2D g2d, final Product product, final boolean isCurrent) { final GeoCoding geoCoding = product.getGeoCoding(); if (geoCoding == null) { return; } GeneralPath[] boundaryPaths = WorldMapPane.getGeoBoundaryPaths(product); final String text = String.valueOf(product.getRefNo()); final PixelPos textCenter = getProductCenter(product); drawGeoBoundary(g2d, boundaryPaths, isCurrent, text, textCenter); }
private void updateCursor(MouseEvent e) { final boolean cursorOutsideOfSelectionRectangle = !rectangleMap.get(DEFAULT).contains(e.getPoint()) && worldMapPane.getCursor() != cursorMap.get(DEFAULT); if (cursorOutsideOfSelectionRectangle) { worldMapPane.setCursor(cursorMap.get(DEFAULT)); } else { final String[] regionIdentifiers = { MOVE, NORTH, SOUTH, WEST, EAST, NORTH_WEST, NORTH_EAST, SOUTH_WEST, SOUTH_EAST }; for (String region : regionIdentifiers) { boolean cursorIsSet = setCursorWhenContained(cursorMap.get(region), rectangleMap.get(region), e.getPoint()); if (cursorIsSet) { break; } } } }