schmitzm.geotools.gui
Class JMapPane

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.geotools.gui.swing.JMapPane
                      extended by schmitzm.geotools.gui.JMapPane
All Implemented Interfaces:
MouseListener, MouseMotionListener, ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible
Direct Known Subclasses:
JEditorPane

public class JMapPane
extends JMapPane

Diese Klasse erweitert die Geotools-Klasse JMapPane um folgende Features:

Sofern eingeschaltet, erfolgt Highlighting immer auf dem obersten sichtbaren Nicht-Raster-Layer.
Darueberhinaus besteht ueber getTransform() Zugriff auf eine affine Transformation mit der die aktuellen Fenster-Koordinaten (z.B. eines MouseEvent) in Karten-Koordinaten (Latitude/Longitude) umgerechnet werden koennen.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected static Logger LOGGER
          Logger for debug messages.
protected  HashMap<MapLayer,Boolean> mapLayerSelectable
          Holds a flag for each layer, whether it is regarded or ignored on SELECT_TOP, SELECT_ALL and SELECT_ONE_FROM_TOP actions.
protected  Vector<JMapPaneListener> mapPaneListeners
          Liste der angeschlossenen Listener, die auf Aktionen des MapPanes lauschen.
static int NONE
          Flag fuer Modus "Nichts machen".
static int Pan
          Deprecated. ersetzt durch PAN
static int PAN
          Flag fuer Modus "Kartenausschnitt bewegen".
static int Reset
          Deprecated. ersetzt durch RESET
static int RESET
          Flag fuer Modus "Zuruecksetzen".
static int Select
          Deprecated. ersetzt durch SELECT_TOP
static int SELECT_ALL
          Flag fuer Modus "Feature-Auswahl auf allen (sichtbaren) Layern".
static int SELECT_ONE_FROM_TOP
          Flag fuer Modus "Auswahl nur eines Features, das erste sichtbare von Oben".
static int SELECT_TOP
          Flag fuer Modus "Feature-Auswahl auf dem obersten (sichtbaren) Layer".
protected  int selState
          Modus fuer Window-Selektion (Default: ZOOM_IN).
protected  MouseSelectionTracker_Public selTracker
           
protected  Cursor staticCursor
          Manuell gesetzter statischer Cursor, unabhaengig von der aktuellen MapPane-Funktion
protected  AffineTransform transform
          Transformation zwischen Fenster-Koordinaten und Karten-Koordinaten (lat/lon)
static int ZOOM_IN
          Flag fuer Modus "Heran zoomen".
static int ZOOM_OUT
          Flag fuer Modus "Heraus zoomen".
static int ZoomIn
          Deprecated. ersetzt durch ZOOM_IN
static int ZoomOut
          Deprecated. ersetzt durch ZOOM_OUT
 
Fields inherited from class org.geotools.gui.swing.JMapPane
baseImage, mapArea, oldMapArea, oldRect, panningImage, reset
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JMapPane()
          Erzeugt ein neues MapPane.
JMapPane(LayoutManager layout, Boolean isDoubleBuffered, GTRenderer renderer, MapContext context)
          Erzeugt ein neues MapPane.
 
Method Summary
 void addMapPaneListener(JMapPaneListener l)
          Fuegt der Map einen Listener hinzu.
 void dispose()
          Should be called when the JMapPane is not needed no more to help the GarbageCollector Removes all JMapPaneListeners that are registered
protected  Hashtable<MapLayer,FeatureCollection> findFeatures(schmitzm.geotools.gui.JMapPane.GeomFilterGenerator filterGenerator, int mode, Envelope env)
          Ermittelt alle Features, die einen Filter erfuellen.
protected  boolean findFeaturesAndFireEvents(schmitzm.geotools.gui.JMapPane.GeomFilterGenerator filterGenerator, int mode, Envelope env)
          Ermittelt alle Features, die in einem Bereich liegen und erzeugt entsprechende FeatureSelectedEvents.
protected  Hashtable<MapLayer,GridCoverage2D> findGridCoverageSubsets(Envelope env, int mode)
          Ermittelt alle Teil-Raster, die in einem Bereich liegen.
protected  boolean findGridCoverageSubsetsAndFireEvents(Envelope env, int mode)
          Ermittelt alle Teil-Raster, die in einem Bereich liegen und erzeugt entsprechende GridCoverageSelectedEvents.
protected  Hashtable<MapLayer,double[]> findGridCoverageValues(Point2D point, int mode)
          Ermittelt alle Raster-Werte, die an einer bestimmten Geo-Position liegen.
protected  boolean findGridCoverageValuesAndFireEvents(Point2D point, int mode)
          Ermittelt die Raster-Werte, die an einem Punkt liegen und erzeugt entsprechende GridCoverageValueSelectedEvents.
protected  Hashtable<MapLayer,FeatureCollection> findVisibleFeatures(schmitzm.geotools.gui.JMapPane.GeomFilterGenerator filterGenerator, int mode, Envelope env)
          Ermittelt alle sichtbaren Features, die einen Filter erfuellen.
protected  void fireMapPaneEvent(JMapPaneEvent e)
          Propagiert ein Ereignis an alle angeschlossenen Listener.
 MapLayer getBottomLayer()
          Liefert unterste Layer (sichtbar oder unsichtbar).
static Object getLayerSourceObject(MapLayer layer)
          Liefert das Objekt (GridCoverage2D oder FeatureCollection oder AbstractGridCoverageReader auf dem ein Layer basiert.
static Point2D getMapCoordinatesFromEvent(MouseEvent e)
          Konvertiert die Maus-Koordinaten (relativ zum JMapPane) in Karten-Koordinaten.
 BufferedImage getMapImage()
          Get the BufferedImage to use as a flaoting icon in the lower right corner.
 Cursor getNormalCursor()
          Gibt den "normalen" Cursor zurueck.
 double getScale()
          Liefert die Anzahl der Einheiten, die ein Bildschirm-Pixel darstellt.
 Cursor getStaticCursor()
          Liefert den statisch eingestellten Cursor, der unabhaengig von der eingestellten MapPane-Aktion (Zoom, Auswahl, ...) verwendet wird.
 MapLayer getTopLayer()
          Liefert oberste Layer (sichtbar oder unsichtbar).
 MapLayer getTopVisibleGridCoverageLayer()
          Liefert oberste sichtbare Raster-Layer.
 MapLayer getTopVisibleLayer()
          Liefert oberste sichtbare Layer.
 MapLayer getTopVisibleNonGridCoverageLayer()
          Liefert oberste sichtbare Nicht-Raster-Layer.
 AffineTransform getTransform()
          Liefert eine affine Transformation, um von den Fenster-Koordinaten in die Karten-Koordinaten (Lat/Lon) umzurechnen.
 Component getWaitCursorComponent()
          Gibt die optional gesetzte Component zurueck, deren Cursor auch auf WAIT gesetzt werden soll
 int getWindowSelectionState()
          Liefert den Modus fuer Window-Selektion.
static boolean isGridCoverageLayer(MapLayer layer)
          Prueft, ob es sich bei einem Layer um ein Raster-Layer handelt.
 boolean isMapLayerSelectable(MapLayer layer)
          Returns whether a layer is regarded or ignored on SELECT_TOP, SELECT_ALL and SELECT_ONE_FROM_TOP actions.
 boolean isSetWaitCursorDuringNextRepaint()
           
 void mouseClicked(MouseEvent e)
          Reagiert auf Linksklick mit der ueber JMapPane.setState(int)eingestellten Aktion und auf Rechtsklick mit Zoom-Out (sofern ZOOM_IN-State fuer Linksklick eingestellt).
protected  void paintComponent(Graphics g)
          In super.paintComponent(.)
protected  void performMouseWheelEvent(MouseWheelEvent e)
          Verarbeitet die Mausrad-Aktion, indem gezoomed wird.
protected  void performSelectionEvent(int ox, int oy, int px, int py)
          Verarbeitet die Selektion eines Karten-Ausschnitts.
 void print(Graphics g)
          Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht wird) wird.
protected  void processDrag(int x1, int y1, int x2, int y2, MouseEvent e)
          SK: Nach dem Drag, soll die GeoMapPane erfahren, dass die Area veraendert wurde.
 void refresh()
          Aktualisiert die Karten-Anzeige vollstaendig.
 void removeMapPaneListener(JMapPaneListener l)
          Entfernt einen Listener von der Map.
protected  void resetTransform()
          Berechnet die Transformation zwischen Fenster- und Karten-Koordinaten neu.
 void setAntiAliasing(boolean aa)
          Aktiviert oder deaktiviert das AntiAliasing for diese JMapPane.
 void setMapArea(Envelope env)
          Setzt die sichtbare Karte.
 void setMapImage(BufferedImage mapImage)
          Set the BufferedImage to use as a flaoting icon in the lower right corner
 void setMapLayerSelectable(MapLayer layer, boolean selectable)
          Sets whether a layer is regarded or ignored on SELECT_TOP, SELECT_ALL and SELECT_ONE_FROM_TOP actions.
 void setNormalCursor(Cursor normalCursor)
          Setzt den "normalen" Cursor.
 void setStaticCursor(Cursor cursor)
          Standardmaessig wird der Cursor automatisch je nach MapPane-Aktion (Zoom, Auswahl, ...) gesetzt.
 void setWaitCursorComponent(Component parentComponent)
          Setzt eine Componente, deren Cursor zusaetzlich zu THIS noch auf WAIT gesetzt wird falls durch dies ueberhaupt durch setSetWaitCursorDuringNextRepaint(true) veranlasst wurde
 void setWaitCursorDuringNextRepaint(boolean waitCursorDuringNextRepaint)
          When setting this to true, the next repaint of this component will be accompanied by a WAIT Cursor
 void setWindowSelectionState(int newSelState)
          Setzt den Modus fuer Window-Selektion.
 Point2D tranformWindowToGeo(int x, int y)
          Transformiert eine Fenster-Koordinate in eine Geo-Koordinate.
 Envelope tranformWindowToGeo(int ox, int oy, int px, int py)
          Transformiert einen Fenster-Koordinaten-Bereich in Geo-Koordinaten.
 void updateCursor()
          Abhaengig von selState wird der Cursor gesetzt
 void zoomTo(FeatureCollection features)
          Sets the mapArea to best possibly present the given features.
 void zoomTo(org.geotools.feature.Feature feature)
          Sets the mapArea to smartly present the given features.
 void zoomToLayer(MapLayer layer)
          Setzt den Kartenausschnitt auf die Ausdehnung eines bestimmten Layers.
 void zoomToLayerIdxReverse(int index)
          Zooms the JMapPane to the Envelope of the selected layer.
 
Methods inherited from class org.geotools.gui.swing.JMapPane
bestAllowedMapArea, doSelection, drawRectangle, getContext, getHighlightLayer, getHighlightManager, getLineHighlightStyle, getLineSelectionStyle, getMapArea, getMaxZoomScale, getMinZoomScale, getPointHighlightStyle, getPointSelectionStyle, getPolygonHighlightStyle, getPolygonSelectionStyle, getRenderer, getSelection, getSelectionLayer, getSelectionManager, getState, getZoomFactor, highlightChanged, isHighlight, isReset, layerAdded, layerChanged, layerMoved, layerRemoved, mouseDragged, mouseEntered, mouseExited, mouseMoved, mousePressed, mouseReleased, propertyChange, selectionChanged, setClickable, setContext, setHighlight, setHighlightLayer, setHighlightManager, setLineHighlightStyle, setLineSelectionStyle, setMaxZoomScale, setMinZoomScale, setPointHighlightStyle, setPointSelectionStyle, setPolygonHighlightStyle, setPolygonSelectionStyle, setRenderer, setReset, setSelection, setSelectionLayer, setSelectionManager, setState, setZoomFactor
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, 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 java.awt.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, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOGGER

protected static final Logger LOGGER
Logger for debug messages.


ZoomIn

public static final int ZoomIn
Deprecated. ersetzt durch ZOOM_IN
See Also:
Constant Field Values

ZoomOut

public static final int ZoomOut
Deprecated. ersetzt durch ZOOM_OUT
See Also:
Constant Field Values

Pan

public static final int Pan
Deprecated. ersetzt durch PAN
See Also:
Constant Field Values

Reset

public static final int Reset
Deprecated. ersetzt durch RESET
See Also:
Constant Field Values

Select

public static final int Select
Deprecated. ersetzt durch SELECT_TOP
See Also:
Constant Field Values

NONE

public static final int NONE
Flag fuer Modus "Nichts machen".

See Also:
setWindowSelectionState(int), JMapPane.setState(int), Constant Field Values

RESET

public static final int RESET
Flag fuer Modus "Zuruecksetzen". Nicht fuer Window-Auswahl moeglich!

See Also:
JMapPane.setState(int), Constant Field Values

PAN

public static final int PAN
Flag fuer Modus "Kartenausschnitt bewegen". Nicht fuer Window-Auswahl moeglich!

See Also:
JMapPane.setState(int), Constant Field Values

ZOOM_IN

public static final int ZOOM_IN
Flag fuer Modus "Heran zoomen".

See Also:
setWindowSelectionState(int), JMapPane.setState(int), Constant Field Values

ZOOM_OUT

public static final int ZOOM_OUT
Flag fuer Modus "Heraus zoomen". Nicht fuer Window-Auswahl moeglich!

See Also:
JMapPane.setState(int), Constant Field Values

SELECT_TOP

public static final int SELECT_TOP
Flag fuer Modus "Feature-Auswahl auf dem obersten (sichtbaren) Layer".

See Also:
setWindowSelectionState(int), JMapPane.setState(int), Constant Field Values

SELECT_ALL

public static final int SELECT_ALL
Flag fuer Modus "Feature-Auswahl auf allen (sichtbaren) Layern".

See Also:
setWindowSelectionState(int), JMapPane.setState(int), Constant Field Values

SELECT_ONE_FROM_TOP

public static final int SELECT_ONE_FROM_TOP
Flag fuer Modus "Auswahl nur eines Features, das erste sichtbare von Oben".

See Also:
setWindowSelectionState(int), JMapPane.setState(int), Constant Field Values

selState

protected int selState
Modus fuer Window-Selektion (Default: ZOOM_IN).


transform

protected AffineTransform transform
Transformation zwischen Fenster-Koordinaten und Karten-Koordinaten (lat/lon)


mapPaneListeners

protected Vector<JMapPaneListener> mapPaneListeners
Liste der angeschlossenen Listener, die auf Aktionen des MapPanes lauschen.


selTracker

protected MouseSelectionTracker_Public selTracker

staticCursor

protected Cursor staticCursor
Manuell gesetzter statischer Cursor, unabhaengig von der aktuellen MapPane-Funktion


mapLayerSelectable

protected HashMap<MapLayer,Boolean> mapLayerSelectable
Holds a flag for each layer, whether it is regarded or ignored on SELECT_TOP, SELECT_ALL and SELECT_ONE_FROM_TOP actions.

Constructor Detail

JMapPane

public JMapPane()
Erzeugt ein neues MapPane.

Parameters:
layout - Layout-Manager fuer die GUI-Komponente (z.B. BorderLayout)
isDoubleBuffered - siehe Konstruktor der Oberklasse
renderer - Renderer fuer die graphische Darestellung (z.B. StreamingRenderer)
context - Verwaltung der einzelnen Layer (z.B. DefaultMapContext ).

JMapPane

public JMapPane(LayoutManager layout,
                Boolean isDoubleBuffered,
                GTRenderer renderer,
                MapContext context)
Erzeugt ein neues MapPane. Benutzt einen TransitionShapefileRenderer als default!

Parameters:
layout - Layout-Manager fuer die GUI-Komponente (z.B. BorderLayout)
isDoubleBuffered - siehe Konstruktor der Oberklasse. Bei null wird true andgenommen.
renderer - Renderer fuer die graphische Darestellung (z.B. StreamingRenderer)
context - Verwaltung der einzelnen Layer (z.B. DefaultMapContext ).
Method Detail

processDrag

protected void processDrag(int x1,
                           int y1,
                           int x2,
                           int y2,
                           MouseEvent e)
SK: Nach dem Drag, soll die GeoMapPane erfahren, dass die Area veraendert wurde.

Overrides:
processDrag in class JMapPane

getMapImage

public BufferedImage getMapImage()
Get the BufferedImage to use as a flaoting icon in the lower right corner.

Returns:
null if the feature is deactivated.

setMapImage

public void setMapImage(BufferedImage mapImage)
Set the BufferedImage to use as a flaoting icon in the lower right corner

Parameters:
mapImageIcon - null is allowed and deactivates this icon.

getWaitCursorComponent

public Component getWaitCursorComponent()
Gibt die optional gesetzte Component zurueck, deren Cursor auch auf WAIT gesetzt werden soll

Returns:
null oder Component

setWaitCursorComponent

public void setWaitCursorComponent(Component parentComponent)
Setzt eine Componente, deren Cursor zusaetzlich zu THIS noch auf WAIT gesetzt wird falls durch dies ueberhaupt durch setSetWaitCursorDuringNextRepaint(true) veranlasst wurde

Parameters:
parentComponent - z.b. der Frame, der diese JMapPane enhaelt

refresh

public void refresh()
Aktualisiert die Karten-Anzeige vollstaendig. Ruft JMapPane#setReset(true) auf und anschliessend Component.repaint().
SK: Der Mauszeiger wird waehrend des repaints auf WAIT gesetzt mittels setWaitCursorDuringNextRepaint(boolean)


setAntiAliasing

public void setAntiAliasing(boolean aa)
Aktiviert oder deaktiviert das AntiAliasing for diese JMapPane. AntiALiasing ist besonders fuer Textbeschriftung sehr schoen, verbraucht aber auch mehr Performance.


zoomToLayer

public void zoomToLayer(MapLayer layer)
Setzt den Kartenausschnitt auf die Ausdehnung eines bestimmten Layers. Macht nichts, wenn null uebergeben wird.
A refresh of the map is NOT called.

Parameters:
layer - ein Layer

zoomToLayerIdxReverse

public void zoomToLayerIdxReverse(int index)
Zooms the JMapPane to the Envelope of the selected layer. The layer is selected by the idx, counting from front to back, like humans would expect in a JList
A refresh of the map is not done automatically

Parameters:
index - Reverse index of the MapLayer in the MapContext

getScale

public double getScale()
Liefert die Anzahl der Einheiten, die ein Bildschirm-Pixel darstellt. Die Einheit ist die Grundeinheit des CRS


getTopLayer

public MapLayer getTopLayer()
Liefert oberste Layer (sichtbar oder unsichtbar).


getTopVisibleLayer

public MapLayer getTopVisibleLayer()
Liefert oberste sichtbare Layer.


getTopVisibleGridCoverageLayer

public MapLayer getTopVisibleGridCoverageLayer()
Liefert oberste sichtbare Raster-Layer.


getTopVisibleNonGridCoverageLayer

public MapLayer getTopVisibleNonGridCoverageLayer()
Liefert oberste sichtbare Nicht-Raster-Layer.


getBottomLayer

public MapLayer getBottomLayer()
Liefert unterste Layer (sichtbar oder unsichtbar).


setWindowSelectionState

public void setWindowSelectionState(int newSelState)
Setzt den Modus fuer Window-Selektion. Default ist ZOOM_IN.

Parameters:
newSelState - Modus fuer Window-Selektion

setStaticCursor

public void setStaticCursor(Cursor cursor)
Standardmaessig wird der Cursor automatisch je nach MapPane-Aktion (Zoom, Auswahl, ...) gesetzt. Mit dieser Methode kann ein statischer Cursor gesetzt werden, der unabhaengig von der aktuellen MapPanes-Aktion beibehalten wird. Um diesen statischen Cursor wieder zu entfernen, kann null als Parameter uebergeben werden

Parameters:
cursor - Cursor

getStaticCursor

public Cursor getStaticCursor()
Liefert den statisch eingestellten Cursor, der unabhaengig von der eingestellten MapPane-Aktion (Zoom, Auswahl, ...) verwendet wird.

Returns:
null, wenn kein statischer Cursor verwendet, sondern der Cursor automatisch je nach MapPane-Aktion eingestellt wird.

updateCursor

public void updateCursor()
Abhaengig von selState wird der Cursor gesetzt


getWindowSelectionState

public int getWindowSelectionState()
Liefert den Modus fuer Window-Selektion.

See Also:
setWindowSelectionState(int)

addMapPaneListener

public void addMapPaneListener(JMapPaneListener l)
Fuegt der Map einen Listener hinzu.

Parameters:
l - neuer Listener

removeMapPaneListener

public void removeMapPaneListener(JMapPaneListener l)
Entfernt einen Listener von der Map.

Parameters:
l - zu entfernender Listener

fireMapPaneEvent

protected void fireMapPaneEvent(JMapPaneEvent e)
Propagiert ein Ereignis an alle angeschlossenen Listener.

Parameters:
e - Ereignis

getMapCoordinatesFromEvent

public static Point2D getMapCoordinatesFromEvent(MouseEvent e)
Konvertiert die Maus-Koordinaten (relativ zum JMapPane) in Karten-Koordinaten.

Parameters:
e - Maus-Ereignis

performSelectionEvent

protected void performSelectionEvent(int ox,
                                     int oy,
                                     int px,
                                     int py)
Verarbeitet die Selektion eines Karten-Ausschnitts. Erzeugt immer ein GeneralSelectionEvent fuer den ausgewaehlten Bereich. Wurden Features oder Raster selektiert, werden zudem FeatureSelectedEvents (bzw. GridCoverageSelectedEvents GridCoverageSelectedEvents) ausgeloest.

Parameters:
ox - X-Koordinate der VON-Position
oy - Y-Koordinate der VON-Position
px - X-Koordinate der BIS-Position
py - Y-Koordinate der BIS-Position

performMouseWheelEvent

protected void performMouseWheelEvent(MouseWheelEvent e)
Verarbeitet die Mausrad-Aktion, indem gezoomed wird.

Parameters:
e - Mausrad-Event

tranformWindowToGeo

public Envelope tranformWindowToGeo(int ox,
                                    int oy,
                                    int px,
                                    int py)
Transformiert einen Fenster-Koordinaten-Bereich in Geo-Koordinaten.

Parameters:
ox - X-Koordinate der VON-Position
oy - Y-Koordinate der VON-Position
px - X-Koordinate der BIS-Position
py - Y-Koordinate der BIS-Position

tranformWindowToGeo

public Point2D tranformWindowToGeo(int x,
                                   int y)
Transformiert eine Fenster-Koordinate in eine Geo-Koordinate.

Parameters:
x - X-Koordinate
y - Y-Koordinate

resetTransform

protected void resetTransform()
Berechnet die Transformation zwischen Fenster- und Karten-Koordinaten neu.


getTransform

public AffineTransform getTransform()
Liefert eine affine Transformation, um von den Fenster-Koordinaten in die Karten-Koordinaten (Lat/Lon) umzurechnen.

Returns:
eine Kopie der aktuellen Transformation; null wenn noch keine Karte angezeigt wird

setMapArea

public void setMapArea(Envelope env)
Setzt die sichtbare Karte. Danach wird die Transformation zwischen Fenster-Koordinaten und Karten-Koordinaten neu berechnet.
Loest ein aus setMapArea(Envelope) wird ignoriert, falls durch die neue MapArea ein nicht gueltiger Massstab entstehen wuerde UND die bisherige maparea != null ist

Overrides:
setMapArea in class JMapPane
Parameters:
env - neuer Kartenausschnitt
See Also:
resetTransform(), getTransform()

mouseClicked

public void mouseClicked(MouseEvent e)
Reagiert auf Linksklick mit der ueber JMapPane.setState(int)eingestellten Aktion und auf Rechtsklick mit Zoom-Out (sofern ZOOM_IN-State fuer Linksklick eingestellt). Alle anderen Klicks werden ignoriert.

Specified by:
mouseClicked in interface MouseListener
Overrides:
mouseClicked in class JMapPane

paintComponent

protected void paintComponent(Graphics g)
In super.paintComponent(.) wird unter gewissen Umstaenden die MapArea neu gesetzt, aber leider ohne setMapArea(Envelope) aufzurufen, sondern indem einfach die Variable mapArea neu belegt wird. Damit auch die Transformation an den neuen Kartenbereich angepasst wird, muss diese Methode ueberschrieben werden.

Neu von SK: Ich habe in der Geotools JMapPane die noetigen variablen protected gemacht, um hier schon festzustellen, ob der aufruf von super.paintComponent das eigentliche aussehen der Karte veraendern wird. Die Methode paintComponent wird naemlich bei jeder Bewegung der Maus aufgerufen, und meistens wird super.paintComponent nur ein gebufferted Image auf den Ausschnitt zeichnen. Falls die "seriouseChange" zu erwarten ist, wird evt. der Mauscursor auf WAIT gesetzt, und auf jeden Fall die Methode resetTransform() aufgerufen.
Sinn des Ganzen? Ich habe versucht etwas Performance zu gewinnen, da sonst bei jeder Mausbewegung die die AffineTransform durch resetTransform() neu berechnet wurde.

Overrides:
paintComponent in class JMapPane
Parameters:
g - Graphics
See Also:
resetTransform()

findVisibleFeatures

protected Hashtable<MapLayer,FeatureCollection> findVisibleFeatures(schmitzm.geotools.gui.JMapPane.GeomFilterGenerator filterGenerator,
                                                                    int mode,
                                                                    Envelope env)
Ermittelt alle sichtbaren Features, die einen Filter erfuellen. Beim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht.

Parameters:
filterGenerator - adapts the filter to a concrete FeatureSource
mode - Suchmodus
Returns:
eine leere Hashtable falls der Filter null ist
See Also:
#findFeatures(GeometryFilterImpl, int, Envelope)

findFeatures

protected Hashtable<MapLayer,FeatureCollection> findFeatures(schmitzm.geotools.gui.JMapPane.GeomFilterGenerator filterGenerator,
                                                             int mode,
                                                             Envelope env)
Ermittelt alle Features, die einen Filter erfuellen. Beim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht. 17.4.08, Stefan

Parameters:
filter - Filter
mode - Suchmodus
Returns:
eine leere Hashtable falls der Filter null ist

findFeaturesAndFireEvents

protected boolean findFeaturesAndFireEvents(schmitzm.geotools.gui.JMapPane.GeomFilterGenerator filterGenerator,
                                            int mode,
                                            Envelope env)
Ermittelt alle Features, die in einem Bereich liegen und erzeugt entsprechende FeatureSelectedEvents. Beim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht.

Parameters:
filterGenerator - adapts a filter to a concrete FeatureSource
mode - Suchmodus
env - Bereich der durchsucht wird (fuer das Filtern irrelevant; wird nur fuer Events benoetigt!)

findGridCoverageSubsets

protected Hashtable<MapLayer,GridCoverage2D> findGridCoverageSubsets(Envelope env,
                                                                     int mode)
Ermittelt alle Teil-Raster, die in einem Bereich liegen. BefindFeaturesAndFireEventsim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht.

Parameters:
env - Bounding-Box
mode - Suchmodus
Returns:
eine leere Hashtable falls die Bounding-Box null ist

findGridCoverageSubsetsAndFireEvents

protected boolean findGridCoverageSubsetsAndFireEvents(Envelope env,
                                                       int mode)
Ermittelt alle Teil-Raster, die in einem Bereich liegen und erzeugt entsprechende GridCoverageSelectedEvents. Beim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht.

Parameters:
env - Bounding-Box
mode - Suchmodus
Returns:
eine leere Hashtable falls die Bounding-Box null ist

findGridCoverageValues

protected Hashtable<MapLayer,double[]> findGridCoverageValues(Point2D point,
                                                              int mode)
Ermittelt alle Raster-Werte, die an einer bestimmten Geo-Position liegen. Beim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht.

SK: 28.09.2007 Da ein Rasterlayer auch mehrere Baender haben kann, ist es sinnvoll, nicht Hashtable MapLayer,Double sondern Hashtable MapLayer,Double[] zurueckzugeben.

Parameters:
point - Geo-Referenzgeop
mode - Suchmodus
Returns:
eine leere Hashtable falls keine Werte ermittelt werden konnten

findGridCoverageValuesAndFireEvents

protected boolean findGridCoverageValuesAndFireEvents(Point2D point,
                                                      int mode)
Ermittelt die Raster-Werte, die an einem Punkt liegen und erzeugt entsprechende GridCoverageValueSelectedEvents. Beim Modus SELECT_TOP wird nur das oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL werden alle sichtbaren Layer durchsucht.

SK: 28.09.2007 Da ein Rasterlayer auch mehrere Baender haben kann, ist es sinnvoll, nicht Hashtable MapLayer,Double sondern Hashtable MapLayer,Double[] zurueckzugeben.

Parameters:
point - Geo-Referenz
mode - Suchmodus
Returns:
eine leere Hashtable falls der Punkt null ist

isGridCoverageLayer

public static boolean isGridCoverageLayer(MapLayer layer)
Prueft, ob es sich bei einem Layer um ein Raster-Layer handelt. Raster-Layer zeichnen sich dadurch aus, dass die zugrunde liegende FeatureCollection nur ein Feature enthaelt, das genau ein Attribut mit dem Namen "GridCoverage" hat. SK: Pyramidenlayer aka AbstractGridCoverage2DReader geben auch true zurück.

Parameters:
layer - zu ueberpruefendes Layer

getLayerSourceObject

public static Object getLayerSourceObject(MapLayer layer)
Liefert das Objekt (GridCoverage2D oder FeatureCollection oder AbstractGridCoverageReader auf dem ein Layer basiert. Ein Raster-Layer zeichnen sich dadurch aus, dass die zugrunde liegende FeatureCollection nur ein Feature enthaelt, das genau ein Attribut mit Namen "GridCoverage" und Typ GridCoverage2D oder AbstractGridCoverageReader hat. Sind diese Bedingungen erfuellt, wird das 2. Attribut zurueckgegeben, ansonsten die FeatureCollection.

Parameters:
layer - ein Layer
Returns:
null, falls das Objekt nicht ermittelt werden kann (da ein Fehler aufgetreten ist).

dispose

public void dispose()
Should be called when the JMapPane is not needed no more to help the GarbageCollector Removes all JMapPaneListeners that are registered


isSetWaitCursorDuringNextRepaint

public boolean isSetWaitCursorDuringNextRepaint()

setWaitCursorDuringNextRepaint

public void setWaitCursorDuringNextRepaint(boolean waitCursorDuringNextRepaint)
When setting this to true, the next repaint of this component will be accompanied by a WAIT Cursor


getNormalCursor

public Cursor getNormalCursor()
Gibt den "normalen" Cursor zurueck. Dieser kann neben dem "pointer" auch ein Sanduhr-Wartecursor sein.


setNormalCursor

public void setNormalCursor(Cursor normalCursor)
Setzt den "normalen" Cursor. Dieser kann neben dem default "pointer" z.B. auch ein Sanduhr-Wartecursor sein.


print

public void print(Graphics g)
Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht wird) wird. Dann werden wird der Hintergrund auf WEISS gesetzt.

Overrides:
print in class JComponent

zoomTo

public void zoomTo(org.geotools.feature.Feature feature)
Sets the mapArea to smartly present the given features. Note: The method does not call Component.repaint() on the JMapPane.


zoomTo

public void zoomTo(FeatureCollection features)
Sets the mapArea to best possibly present the given features. If only one single point is given, the window is moved over the point. Note: The method does not call Component.repaint() on the JMapPane .

Parameters:
features - if null or size==0, the function doesn nothing.

setMapLayerSelectable

public void setMapLayerSelectable(MapLayer layer,
                                  boolean selectable)
Sets whether a layer is regarded or ignored on SELECT_TOP, SELECT_ALL and SELECT_ONE_FROM_TOP actions.

Parameters:
layer - a layer
selectable - if false the layer is ignored during the upper mentioned actions

isMapLayerSelectable

public boolean isMapLayerSelectable(MapLayer layer)
Returns whether a layer is regarded or ignored on SELECT_TOP, SELECT_ALL and SELECT_ONE_FROM_TOP actions.

Parameters:
layer - a layer