|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
schmitzm.swing.JPanel
skrueger.geotools.XMapPane
schmitzm.geotools.gui.SelectableXMapPane
public class SelectableXMapPane
Diese Klasse erweitert die Geotools-Klasse
org.geotools.swing.JMapPane
um folgende Features:
#setState(int)
eingestellte Aktion#setState(int)
)JMapPaneListener
und Ausloesung diverser
Ereignisse:
ScaleChangedEvent
: Wird ausgeloest, wenn sich die
Aufloesung der angezeigten Karte aendertMapAreaChangedEvent
: Wird ausgeloest, wenn sich die
Aufloesung angezeigte Karte-Ausschnitt aendertGeneralSelectionEvent
: Wird ausgeloest, wenn der Anwender
einen Bereich aus der Karte ausgewaehlt hat (egal ob dabei gezoomt wurde,
Features/Raster selektiert wurden, oder nicht selektiert wurde)FeatureSelectedEvent
: Wird ausgeloest, wenn der Anwender
Features aus der Karte ausgewaehlt hatGridCoverageSelectedEvent
: Wird ausgeloest, wenn der
Anwender Raster-Bereiche aus der Karte ausgewaehlt hatXMapPane.getScreenToWorld()
Zugriff auf eine
affine Transformation mit der die aktuellen
Fenster-Koordinaten (z.B. eines MouseEvent
) in
Karten-Koordinaten (Latitude/Longitude) umgerechnet werden koennen.
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. |
static int |
NONE
Flag fuer Modus "Nichts machen". |
static int |
SELECT_ALL
"SimpleFeature-Auswahl auf allen (sichtbaren) Layern". |
static int |
SELECT_ONE_FROM_TOP
"Auswahl nur eines Features, das erste sichtbare von Oben". |
static int |
SELECT_TOP
"SimpleFeature-Auswahl auf dem obersten (sichtbaren) Layer". |
Fields inherited from class skrueger.geotools.XMapPane |
---|
bgExecuter, bgMapLayerListener, DEFAULT_RESIZING_PAINT_DELAY, INITIAL_REPAINT_DELAY, labelCache, localMapLayerListener, mapArea, mapImageInvalid, mapLayerSelectable, mapPaneListeners, oldMapArea, oldScreenToWorld, paneResized, renderingErrors, REPEATING_REPAINT_DELAY, screenToWorld |
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 | |
---|---|
SelectableXMapPane()
Erzeugt ein neues MapPane. |
|
SelectableXMapPane(MapContext context)
Erzeugt ein neues MapPane. |
Method Summary | |
---|---|
boolean |
featureLayerIntersectsEnvelope(MapLayer layer,
Envelope env)
Testet (anhand der Features), ob das Objekt eines Layers eine Bounding-Box schneidet. |
protected Hashtable<MapLayer, |
findFeatures(GeomFilterGenerator filterGenerator,
int mode,
Envelope env)
Ermittelt alle Features, die einen Filter erfuellen. |
boolean |
findFeaturesAndFireEvents(GeomFilterGenerator filterGenerator,
int selectionMode,
Envelope env)
Ermittelt alle Features, die in einem Bereich liegen und erzeugt entsprechende FeatureSelectedEvents . |
protected Hashtable<MapLayer,GridCoverage2D> |
findGridCoverageSubsets(Envelope env,
int selectionMode)
Ermittelt alle Teil-Raster, die in einem Bereich liegen. |
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. |
boolean |
findGridCoverageValuesAndFireEvents(Point2D point,
int mode)
Ermittelt die Raster-Werte, die an einem Punkt liegen und erzeugt entsprechende GridCoverageValueSelectedEvents . |
Hashtable<MapLayer, |
findVisibleFeatures(GeomFilterGenerator filterGenerator,
int selectionMode,
Envelope env)
Ermittelt alle sichtbaren Features, die einen Filter erfuellen. |
void |
fireMapPaneEvent(MapPaneEvent e)
Propagiert ein Ereignis an alle angeschlossenen Listener. |
MapLayer |
getBottomLayer()
Liefert unterste Layer (sichtbar oder unsichtbar). |
double |
getScale()
Liefert die Anzahl der Einheiten, die ein Bildschirm-Pixel darstellt. |
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. |
static boolean |
isGridCoverageLayer(MapLayer layer)
Prueft, ob es sich bei einem Layer um ein Raster-Layer handelt. |
boolean |
layerIntersectsCoord(MapLayer layer,
Coordinate coord)
Testet (anhand der Bounding-Box), ob das Objekt eines Layers eine Coordinate schneidet. |
boolean |
layerIntersectsEnvelope(MapLayer layer,
Envelope env)
Testet (anhand der Bounding-Box), ob das Objekt eines Layers eine andere Bounding-Box schneidet. |
void |
performSelectionEvent(int ox,
int oy,
int px,
int py,
int selectionMode)
Verarbeitet die Selektion eines Karten-Ausschnitts. |
boolean |
setMapArea(ReferencedEnvelope newMapArea)
Setzt die sichtbare Karte. |
void |
zoomTo(SimpleFeature feature)
Sets the mapArea to smartly present the given features. |
Methods inherited from class schmitzm.swing.JPanel |
---|
print, setBackground, setEnabled |
Methods inherited from class javax.swing.JPanel |
---|
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final int SELECT_ALL
public static final int SELECT_ONE_FROM_TOP
public static final int SELECT_TOP
protected static final Logger LOGGER
public static final int NONE
#setState(int)
,
#setState(int)
,
Constant Field ValuesConstructor Detail |
---|
public SelectableXMapPane(MapContext context)
layout
- Layout-Manager fuer die GUI-Komponente (z.B.
BorderLayout
)isDoubleBuffered
- siehe Konstruktor der
Oberklasserenderer
- Renderer fuer die graphische Darestellung (z.B.
StreamingRenderer
)localContext
- Verwaltung der einzelnen Layer (z.B. DefaultMapContext
).public SelectableXMapPane()
layout
- Layout-Manager fuer die GUI-Komponente (z.B.
BorderLayout
)isDoubleBuffered
- siehe Konstruktor der
Oberklasserenderer
- Renderer fuer die graphische Darestellung (z.B.
StreamingRenderer
)localContext
- Verwaltung der einzelnen Layer (z.B. DefaultMapContext
).Method Detail |
---|
public double getScale()
public MapLayer getTopLayer()
public MapLayer getTopVisibleLayer()
public MapLayer getTopVisibleGridCoverageLayer()
public MapLayer getTopVisibleNonGridCoverageLayer()
public MapLayer getBottomLayer()
public boolean findGridCoverageValuesAndFireEvents(Point2D point, int mode)
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.
point
- Geo-Referenzmode
- Suchmodus
Hashtable
falls der Punkt null
istpublic boolean setMapArea(ReferencedEnvelope newMapArea)
aus
XMapPane.setMapArea(Envelope)
return false
, falls durch die
neue MapArea ein nicht gueltiger Massstab entstehen wuerde UND die
bisherige maparea != null ist
setMapArea
in class XMapPane
newMapArea
- neuer Kartenausschnitt im CRS des MapContext
true
if the mapArea has been changed and a repaint
has been triggered.XMapPane.resetTransforms()
,
XMapPane.getScreenToWorld()
public void zoomTo(SimpleFeature feature)
Component.repaint()
on the SelectableXMapPane
.
zoomTo
in class XMapPane
feature
- if null
or size==0, the function doesn nothing.public boolean featureLayerIntersectsEnvelope(MapLayer layer, Envelope env)
layer
- ein Layerenv
- Bounding-Box in CRS des MapPaneprotected Hashtable<MapLayer,> findFeatures(GeomFilterGenerator filterGenerator, int mode, Envelope env)
SELECT_TOP
wird nur das oberste sichtbare Layer durchsucht. Beim
Modus SELECT_ALL
werden alle sichtbaren Layer durchsucht.
17.4.08, Stefan
iterator
- Filtermode
- Suchmodus
Hashtable
falls der Filter null
istprotected Hashtable<MapLayer,double[]> findGridCoverageValues(Point2D point, int mode)
SELECT_TOP
oder SELECT_ONE_FROM_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.
point
- Geo-Referenzmode
- Suchmodus
Hashtable
falls keine Werte ermittelt werden
konntenpublic void fireMapPaneEvent(MapPaneEvent e)
e
- Ereignispublic void performSelectionEvent(int ox, int oy, int px, int py, int selectionMode)
GeneralSelectionEvent
fuer den ausgewaehlten Bereich. Wurden
Features oder Raster selektiert, werden zudem
FeatureSelectedEvents
(bzw.
GridCoverageSelectedEvents GridCoverageSelectedEvents) ausgeloest.
ox
- X-Koordinate der VON-Positionoy
- Y-Koordinate der VON-Positionpx
- X-Koordinate der BIS-Positionpy
- Y-Koordinate der BIS-PositionselectionMode
- on of SELECT_TOP, SELECT_ONE_FROM_TOP, SELECT_ALLpublic boolean findFeaturesAndFireEvents(GeomFilterGenerator filterGenerator, int selectionMode, Envelope env)
FeatureSelectedEvents
. Beim
Modus SELECT_TOP
wird nur das oberste sichtbare Layer
durchsucht. Beim Modus SELECT_ALL
werden alle sichtbaren Layer
durchsucht.
filterGenerator
- adapts a filter to a concrete FeatureSource
selectionMode
- Suchmodusenv
- Bereich der durchsucht wird (fuer das Filtern irrelevant; wird
nur fuer Events benoetigt!)protected Hashtable<MapLayer,GridCoverage2D> findGridCoverageSubsets(Envelope env, int selectionMode)
SELECT_TOP
wird nur das
oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL
werden
alle sichtbaren Layer durchsucht.
env
- Bounding-BoxselectionMode
- Suchmodus
Hashtable
falls die Bounding-Box null
istpublic boolean findGridCoverageSubsetsAndFireEvents(Envelope env, int mode)
GridCoverageSelectedEvents
. Beim Modus SELECT_TOP
wird nur das
oberste sichtbare Layer durchsucht. Beim Modus SELECT_ALL
werden
alle sichtbaren Layer durchsucht.
env
- Bounding-Boxmode
- Suchmodus
Hashtable
falls die Bounding-Box null
istpublic Hashtable<MapLayer,> findVisibleFeatures(GeomFilterGenerator filterGenerator, int selectionMode, Envelope env)
SELECT_TOP
wird nur das oberste sichtbare Layer
durchsucht. Beim Modus SELECT_ALL
werden alle sichtbaren Layer
durchsucht.MapLayer
s and the first layer returning
filterGenerator
- adapts the filter to a concrete FeatureSourceselectionMode
- Suchmodus
Hashtable
falls der Filter null
ist#findFeatures(GeometryFilterImpl, int, Envelope)
public boolean layerIntersectsEnvelope(MapLayer layer, Envelope env)
null
, returns false
. *
layer
- ein Layerenv
- Bounding-Box in CRS des MapPane
TODO movve to some utility classpublic boolean layerIntersectsCoord(MapLayer layer, Coordinate coord)
null
, returns false
.
layer
- ein Layercoord
- Coordinate in CRS des MapPane
TODO movve to some utility classpublic static boolean isGridCoverageLayer(MapLayer layer)
layer
- zu ueberpruefendes Layer
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |