Class AbstractMapPane

    • Nested Class Summary

      • Nested classes/interfaces inherited from class JPanel

        JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class JComponent

        JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class Container

        Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class Component

        Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void addMapPaneListener​(MapPaneListener listener)
      Adds a listener to receive MapPaneEvents.
      void addMouseListener​(MapMouseListener listener)
      Registers an object that wishes to receive MapMouseEvents such as a JMapStatusBar.
      protected void afterImageMoved()
      Called after the base image has been dragged.
      protected void doSetDisplayArea​(Bounds envelope)
      Helper method for setDisplayArea(org.geotools.api.geometry.Bounds) which is also called by other methods that want to set the display area without provoking repainting of the display
      protected abstract void drawLayers​(boolean recreate)
      Draws layers into one or more images which will then be displayed by the map pane.
      CursorTool getCursorTool()
      Gets the current cursor tool.
      ReferencedEnvelope getDisplayArea()
      Gets the current display area in world coordinates.
      KeyListener getKeyHandler()
      Gets the current handler for keyboard actions.
      MapContent getMapContent()
      Gets the MapConent instance containing the layers being displayed by this map pane.
      MapMouseEventDispatcher getMouseEventDispatcher()
      Gets the current mouse event dispatcher which is responsible for converting each input Java AWT mouse event into a MapMouseEvent and forwarding it to each MapMouseListener.
      long getPaintDelay()
      Gets the current paint delay interval in milliseconds.
      RenderingExecutor getRenderingExecutor()
      Gets the rendering executor, creating a default one if necessary.
      AffineTransform getScreenToWorldTransform()
      Gets the screen to world coordinate transform.
      AffineTransform getWorldToScreenTransform()
      Gets the world to screen coordinate transform.
      boolean isAcceptingRepaints()
      Query whether the map pane is currently accepting or ignoring repaint requests from other GUI components and the system.
      void layerAdded​(MapLayerListEvent event)
      Called when a new map layer has been added.
      void layerChanged​(MapLayerListEvent event)
      Called when a map layer has changed, e.g. features added to a displayed feature collection
      void layerMoved​(MapLayerListEvent event)
      Triggered when a group of layers chenges position in the layer list
      void layerPreDispose​(MapLayerListEvent event)
      Triggered when a layer is about to be disposed.
      void layerRemoved​(MapLayerListEvent event)
      Called when a map layer has been removed
      void mapBoundsChanged​(MapBoundsEvent event)
      Called by the map content's viewport when its bounds have changed.
      void moveImage​(int dx, int dy)
      Moves the image(s) displayed by the map pane from the current origin (x,y) (device pixels) to (x+dx, y+dy).
      protected void onImageMoved()  
      void onRenderingCompleted​(RenderingExecutorEvent event)
      Called by the executor when rendering has been completed.
      void onRenderingFailed​(RenderingExecutorEvent ev)
      Called by the executor when rendering failed for some reason.
      void onRenderingStarted​(RenderingExecutorEvent ev)
      Called by the executor when rendering has started.
      protected void onShownOrResized()  
      protected void publishEvent​(MapPaneEvent ev)
      Publish a MapPaneEvent to registered listeners
      void removeMapPaneListener​(MapPaneListener listener)
      Removes the specified listener.
      void removeMouseListener​(MapMouseListener listener)
      Removes the specified listener.
      void reset()
      Reset the map area to include the full extent of all layers and redraw the display
      void setCursorTool​(CursorTool tool)
      Sets the current cursor tool.
      void setDisplayArea​(Bounds envelope)
      Sets the area to display in world units.
      protected void setForNewSize()  
      protected boolean setFullExtent()
      Determines the full extent of of
      void setIgnoreRepaint​(boolean ignoreRepaint)
      Specify whether the map pane should defer its normal repainting behaviour.
      void setKeyHandler​(KeyListener controller)
      Sets a handler for keyboard actions which control the map pane's display.
      void setMapContent​(MapContent content)
      Sets the MapContent instance containing the layers to display.
      void setMouseEventDispatcher​(MapMouseEventDispatcher dispatcher)
      Replaces the current mouse event dispatcher.
      void setPaintDelay​(int delay)
      Sets the current paint delay interval in milliseconds.
      void setRenderingExecutor​(RenderingExecutor executor)
      Sets the rendering executor.
      • Methods inherited from class JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
      • Methods inherited from class JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • Methods inherited from class Container

        add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • DEFAULT_PAINT_DELAY

        public static final int DEFAULT_PAINT_DELAY
        Default delay (500 milliseconds) before the map will be redrawn when resizing the pane or moving the displayed image. This avoids flickering and redundant rendering.
        See Also:
        Constant Field Values
      • DEFAULT_BACKGROUND_COLOR

        public static final Color DEFAULT_BACKGROUND_COLOR
        Default background color (white).
      • paneTaskExecutor

        protected final ScheduledExecutorService paneTaskExecutor
      • resizedFuture

        protected Future<?> resizedFuture
      • paintDelay

        protected int paintDelay
      • acceptRepaintRequests

        protected final AtomicBoolean acceptRepaintRequests
      • baseImageMoved

        protected final AtomicBoolean baseImageMoved
      • imageMovedFuture

        protected Future<?> imageMovedFuture
      • imageOrigin

        protected final Point imageOrigin
      • drawingLock

        protected final Lock drawingLock
      • paramsLock

        protected final ReadWriteLock paramsLock
      • keyHandler

        protected KeyListener keyHandler
      • clearLabelCache

        protected AtomicBoolean clearLabelCache
      • currentCursorTool

        protected CursorTool currentCursorTool
    • Method Detail

      • drawLayers

        protected abstract void drawLayers​(boolean recreate)
        Draws layers into one or more images which will then be displayed by the map pane.
      • getRenderingExecutor

        public RenderingExecutor getRenderingExecutor()
        Gets the rendering executor, creating a default one if necessary.
        Returns:
        the rendering executor
      • setMouseEventDispatcher

        public void setMouseEventDispatcher​(MapMouseEventDispatcher dispatcher)
        Replaces the current mouse event dispatcher. All current listeners will be removed. It is the responsibility of the client to add them to the new dispatcher if this is desired.
        Specified by:
        setMouseEventDispatcher in interface MapPane
        Parameters:
        dispatcher - the new dispatcher (may be null)
      • getKeyHandler

        public KeyListener getKeyHandler()
        Gets the current handler for keyboard actions.
        Returns:
        current handler (may be null)
      • setKeyHandler

        public void setKeyHandler​(KeyListener controller)
        Sets a handler for keyboard actions which control the map pane's display. The default handler is MapPaneKeyHandler which provides for scrolling and zooming.
        Parameters:
        controller - the new handler or null to disable key handling
      • getPaintDelay

        public long getPaintDelay()
        Gets the current paint delay interval in milliseconds. The map pane uses this delay period to avoid flickering and redundant rendering when drag-resizing the pane or panning the map image.
        Returns:
        delay in milliseconds
      • setPaintDelay

        public void setPaintDelay​(int delay)
        Sets the current paint delay interval in milliseconds. The map pane uses this delay period to avoid flickering and redundant rendering when drag-resizing the pane or panning the map image.
        Parameters:
        delay - the delay in milliseconds; if <= 0 the default delay period will be set
      • setIgnoreRepaint

        public void setIgnoreRepaint​(boolean ignoreRepaint)
        Specify whether the map pane should defer its normal repainting behaviour.

        Typical use:

        
         myMapPane.setRepaint(false);
        
         // do various things that would cause time-consuming
         // re-paints normally
        
         myMapPane.setRepaint(true);
         myMapPane.repaint();
         
        Overrides:
        setIgnoreRepaint in class Component
        Parameters:
        ignoreRepaint - if false, paint requests will be handled normally; if true, paint requests will be deferred.
        See Also:
        isAcceptingRepaints()
      • isAcceptingRepaints

        public boolean isAcceptingRepaints()
        Query whether the map pane is currently accepting or ignoring repaint requests from other GUI components and the system.
        Returns:
        true if the pane is currently accepting repaint requests; false if it is ignoring them
        See Also:
        setIgnoreRepaint(boolean)
      • onShownOrResized

        protected void onShownOrResized()
      • setForNewSize

        protected void setForNewSize()
      • moveImage

        public void moveImage​(int dx,
                              int dy)
        Moves the image(s) displayed by the map pane from the current origin (x,y) (device pixels) to (x+dx, y+dy). If this method is called when the map pane is not visible, or when the pane's visible rectangle is empty, it is ignored.
        Specified by:
        moveImage in interface MapPane
        Parameters:
        dx - the x offset in pixels
        dy - the y offset in pixels.
      • onImageMoved

        protected void onImageMoved()
      • afterImageMoved

        protected void afterImageMoved()
        Called after the base image has been dragged. Sets the new map area and transforms
      • getMapContent

        public MapContent getMapContent()
        Gets the MapConent instance containing the layers being displayed by this map pane.
        Specified by:
        getMapContent in interface MapPane
        Returns:
        the map content
      • setMapContent

        public void setMapContent​(MapContent content)
        Sets the MapContent instance containing the layers to display.
        Specified by:
        setMapContent in interface MapPane
        Parameters:
        content - the map content
      • getDisplayArea

        public ReferencedEnvelope getDisplayArea()
        Gets the current display area in world coordinates. This is a short-cut for mapPane.getMapContent().getViewport().getBounds(). If a MapContent object has not yet been associated with the map pane, an empty ReferencedEnvelope is returned.
        Specified by:
        getDisplayArea in interface MapPane
        Returns:
        the display area in world coordinates
      • setDisplayArea

        public void setDisplayArea​(Bounds envelope)
        Sets the area to display in world units.
        Specified by:
        setDisplayArea in interface MapPane
        Parameters:
        envelope - the new display area
      • doSetDisplayArea

        protected void doSetDisplayArea​(Bounds envelope)
        Helper method for setDisplayArea(org.geotools.api.geometry.Bounds) which is also called by other methods that want to set the display area without provoking repainting of the display
        Parameters:
        envelope - requested display area
      • reset

        public void reset()
        Reset the map area to include the full extent of all layers and redraw the display
        Specified by:
        reset in interface MapPane
      • getScreenToWorldTransform

        public AffineTransform getScreenToWorldTransform()
        Gets the screen to world coordinate transform. This is a short-cut for mapPane.getMapContent().getViewport().getScreenToWorld().
        Specified by:
        getScreenToWorldTransform in interface MapPane
        Returns:
        the screen to world coordinate transform
      • getWorldToScreenTransform

        public AffineTransform getWorldToScreenTransform()
        Gets the world to screen coordinate transform. This is a short-cut for mapPane.getMapContent().getViewport().getWorldToScreen().

        The returned AffineTransform can be used to determine the current drawing scale...

        
         double scale = mapPane.getWorldToScreenTransform().getScaleX();
         
        Specified by:
        getWorldToScreenTransform in interface MapPane
        Returns:
        the world to screen coordinate transform
      • removeMapPaneListener

        public void removeMapPaneListener​(MapPaneListener listener)
        Removes the specified listener.
        Specified by:
        removeMapPaneListener in interface MapPane
        Parameters:
        listener - the listener to remove
      • removeMouseListener

        public void removeMouseListener​(MapMouseListener listener)
        Removes the specified listener.
        Specified by:
        removeMouseListener in interface MapPane
        Parameters:
        listener - the listener to remove
      • getCursorTool

        public CursorTool getCursorTool()
        Gets the current cursor tool.
        Specified by:
        getCursorTool in interface MapPane
        Returns:
        the current cursor tool (may be null)
      • setCursorTool

        public void setCursorTool​(CursorTool tool)
        Sets the current cursor tool.
        Specified by:
        setCursorTool in interface MapPane
        Parameters:
        tool - the tool; or null for no cursor tool
      • layerAdded

        public void layerAdded​(MapLayerListEvent event)
        Called when a new map layer has been added. Sets the layer as selected (for queries) and, if the layer table is being used, adds the new layer to the table.
        Specified by:
        layerAdded in interface MapLayerListListener
        Parameters:
        event - encapsulating the event information
      • layerChanged

        public void layerChanged​(MapLayerListEvent event)
        Called when a map layer has changed, e.g. features added to a displayed feature collection
        Specified by:
        layerChanged in interface MapLayerListListener
        Parameters:
        event - encapsulating the event information
      • layerMoved

        public void layerMoved​(MapLayerListEvent event)
        Triggered when a group of layers chenges position in the layer list
        Specified by:
        layerMoved in interface MapLayerListListener
        Parameters:
        event - encapsulating the event information
      • mapBoundsChanged

        public void mapBoundsChanged​(MapBoundsEvent event)
        Called by the map content's viewport when its bounds have changed. Used here to watch for a changed CRS, in which case the map is re-displayed at full extent.
        Specified by:
        mapBoundsChanged in interface MapBoundsListener
        Parameters:
        event - The change event.
      • publishEvent

        protected void publishEvent​(MapPaneEvent ev)
        Publish a MapPaneEvent to registered listeners
        Parameters:
        ev - the event to publish
        See Also:
        MapPaneListener
      • setFullExtent

        protected boolean setFullExtent()
        Determines the full extent of of
        Returns:
        true if full extent was set successfully