@Override public void componentResized(ComponentEvent e) { AffineTransform transform = getLayerCanvas().getViewport().getModelToViewTransform(); Rectangle2D maxVisibleModelBounds = getLayerCanvas().getMaxVisibleModelBounds(); double minX = maxVisibleModelBounds.getMinX(); double minY = maxVisibleModelBounds.getMinY(); upperLeft.getY() - lowerRight.getY()); Rectangle layerCanvasBounds = getLayerCanvas().getBounds(); boolean isWorldMapFullyVisible = layerCanvasBounds.intersects(northBorder) || layerCanvasBounds.intersects(southBorder) ||
public float getScale() { return (float) getLayerCanvas().getViewport().getZoomFactor(); }
private void exchangeWorldMapLayer() { final List<Layer> children = getLayerCanvas().getLayer().getChildren(); for (Layer child : children) { child.dispose(); } children.clear(); final Layer rootLayer = getLayerCanvas().getLayer(); worldMapLayer = dataModel.getWorldMapLayer(new WorldMapLayerContext(rootLayer)); children.add(worldMapLayer); zoomAll(); }
@Override public void setEnabled(boolean enabled) { if (enabled == isEnabled()) { return; } super.setEnabled(enabled); if (enabled) { worldMapPane.getLayerCanvas().addMouseMotionListener(cursorChanger); worldMapPane.getLayerCanvas().removeOverlay(greyOverlay); worldMapPane.setPanSupport(panSupport); } else { worldMapPane.getLayerCanvas().removeMouseMotionListener(cursorChanger); worldMapPane.getLayerCanvas().addOverlay(greyOverlay); worldMapPane.setPanSupport(new NullPanSupport()); } }
private void updateRectangles() { AffineTransform modelToView = worldMapPane.getLayerCanvas().getViewport().getModelToViewTransform(); selectionRectangle = modelToView.createTransformedShape(getFirstFigure().getBounds()).getBounds2D(); movableRectangle.setRect(selectionRectangle); cursorChanger.updateRectanglesForDragCursor(); }
/** * 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(); }
/** * Creates a RegionSelectableWorldMapPane. * * @param dataModel The data model to be used * @param bindingContext The binding context which has to contain at least the following properties: * {@link #NORTH_BOUND northBound} , * {@link #SOUTH_BOUND southBound}, {@link #WEST_BOUND westBound}, and * {@link #EAST_BOUND eastBound}. If all these property values are null, default values * will be used. The property values are considered valid when the latitude values are * within the allowed latitude range [-90, 90], the longitude values are within the * allowed longitude range [-180, 180], the northBound is bigger than the southBound, * the eastBound is bigger than the westBound, and no value is null. In this case, * the world map will be initialized with these values.</br> * * @throws IllegalArgumentException If the bindingContext is null, it does not contain the expected properties or * the properties do not contain valid values */ public RegionSelectableWorldMapPane(WorldMapPaneDataModel dataModel, BindingContext bindingContext) { ensureValidBindingContext(bindingContext); this.bindingContext = bindingContext; worldMapPane = new FigureEditorAwareWorldMapPane(dataModel, new SelectionOverlay(dataModel)); panSupport = new RegionSelectionDecoratingPanSupport(worldMapPane.getLayerCanvas()); worldMapPane.setPanSupport(panSupport); figureEditor = new DefaultFigureEditor(worldMapPane.getLayerCanvas()); regionSelectionInteractor = new RegionSelectionInteractor(); worldMapPane.getLayerCanvas().addMouseMotionListener(cursorChanger); }
private void handleZoom() { final FigureCollection figureCollection = getFigureEditor().getFigureCollection(); if (figureCollection.getFigureCount() == 0) { return; } final Rectangle2D modelBounds = figureCollection.getFigure(0).getBounds(); final AffineTransform modelToViewTransform = worldMapPane.getLayerCanvas().getViewport().getModelToViewTransform(); final Shape transformedShape = modelToViewTransform.createTransformedShape(modelBounds); movableRectangle.setRect(transformedShape.getBounds2D()); selectionRectangle.setRect(movableRectangle); cursorChanger.updateRectanglesForDragCursor(); }
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(); }
/** * None API. Don't use this method! * * @param navControlShown true, if this canvas uses a navigation control. */ public void setNavControlVisible(boolean navControlShown) { boolean oldValue = this.navControlShown; if (oldValue != navControlShown) { if (navControlShown) { final Action[] overlayActions = getOverlayActions(); final ButtonOverlayControl navControl = new ButtonOverlayControl(overlayActions.length, overlayActions); navControlWrapper = new WakefulComponent(navControl); navControlWrapper.setMinAlpha(0.3f); getLayerCanvas().add(navControlWrapper); } else { getLayerCanvas().remove(navControlWrapper); navControlWrapper = null; } validate(); this.navControlShown = navControlShown; } }
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)); setSize(dimension); setLayout(new BorderLayout()); add(getLayerCanvas(), BorderLayout.CENTER); installLayerCanvasNavigation(getLayerCanvas()); getLayerCanvas().getLayer().getChildren().add(worldMapLayer); zoomAll(); setNavControlVisible(true);
lowerRightGeoPos = new GeoPos(southBound.floatValue(), eastBound.floatValue()); Viewport viewport = worldMapPane.getLayerCanvas().getViewport(); AffineTransform modelToViewTransform = viewport.getModelToViewTransform(); Point2D.Double lowerRight = modelToView(lowerRightGeoPos, modelToViewTransform);