[Schmitzm-commits] r401 - branches/1.0-gt2-2.6/src/schmitzm/geotools/gui
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Mon Sep 14 15:15:52 CEST 2009
Author: mojays
Date: 2009-09-14 15:15:51 +0200 (Mon, 14 Sep 2009)
New Revision: 401
Modified:
branches/1.0-gt2-2.6/src/schmitzm/geotools/gui/JMapPane.java
Log:
Reference to AttributeMetaData replaces by general is/setMapLayerSelectable(.)
Modified: branches/1.0-gt2-2.6/src/schmitzm/geotools/gui/JMapPane.java
===================================================================
--- branches/1.0-gt2-2.6/src/schmitzm/geotools/gui/JMapPane.java 2009-09-14 12:24:50 UTC (rev 400)
+++ branches/1.0-gt2-2.6/src/schmitzm/geotools/gui/JMapPane.java 2009-09-14 13:15:51 UTC (rev 401)
@@ -75,6 +75,7 @@
import org.geotools.map.DefaultMapContext;
import org.geotools.map.MapContext;
import org.geotools.map.MapLayer;
+import org.geotools.map.event.MapLayerListEvent;
import org.geotools.parameter.Parameter;
import org.geotools.referencing.CRS;
import org.geotools.renderer.GTRenderer;
@@ -109,11 +110,10 @@
import schmitzm.geotools.map.event.JMapPaneEvent;
import schmitzm.geotools.map.event.JMapPaneListener;
import schmitzm.geotools.map.event.MapAreaChangedEvent;
+import schmitzm.geotools.map.event.MapLayerListAdapter;
import schmitzm.geotools.map.event.ScaleChangedEvent;
import schmitzm.geotools.styling.StylingUtil;
import schmitzm.swing.SwingUtil;
-import skrueger.AttributeMetaData;
-import skrueger.geotools.StyledLayerUtil;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
@@ -286,44 +286,12 @@
protected gtmig.org.geotools.swing.MouseSelectionTracker selTracker = new gtmig.org.geotools.swing.MouseSelectionTracker() {
public void mouseDragged(final MouseEvent event) {
- // Wenn
- // Fenster
- // -
- // Selektions
- // -
- // Modus
- // auf
- // NICHTS
- // steht
- // (
- // z
- // .
- // B
- // .
- // Info
- // -
- // Tool
- // )
- // ,
- // keinen
- // Rahmen
- // beim
- // Draggen
- // zeichnen
+ // Wenn Fenster-Selektions-Modus auf NICHTS steht (z.B. Info-Tool),
+ // keinen Rahmen beim Draggen zeichnen
if (selState == NONE)
return;
- // Wenn
- // Zoom
- // bereits
- // durch
- // Oberklasse
- // aktiviert
- // wird
- // ,
- // malt
- // diese
- // das
- // Rectangle
+ // Wenn Zoom bereits durch Oberklasse aktiviert wird,
+ // malt diese das Rectangle
if (getState() == ZOOM_IN || getState() == ZOOM_OUT)
return;
@@ -331,70 +299,14 @@
}
protected void selectionPerformed(int ox, int oy, int px, int py) {
- // MS
- // ,
- // 20.05
- // .2008
- // :
- // In
- // performSelectionEvent
- // (
- // .
- // .
- // )
- // wurde
- // das
- // Zoomen
- // wieder
- // reingenommen
- // ,
- // damit
- // bei
- // Fenster
- // -
- // Auswahl
- // auch
- // gezoomt
- // wird
- // ,
- // wenn
- // der
- // Klick
- // -
- // Zoom
- // (
- // setState
- // (
- // .
- // )
- // )
- // deaktiviert
- // ist
- // .
- // Wenn
- // dieser
- // jedoch
- // ebenfalls
- // aktiviert
- // ist
- // ,
- // darf
- // an
- // dieser
- // Stelle
- // nicht
- // nochmal
- // gezoomt
- // werden
- // ,
- // da
- // sonst
- // 2
- // x
- // gezoomt
- // wird
- // !
- // !
+ // MS, 20.05.2008:
+ // In performSelectionEvent(.) wurde das Zoomen wieder
+ // reingenommen, damit bei Fenster-Auswahl auch gezoomt
+ // wird, wenn der Klick-Zoom (setState(.)) deaktiviert
+ // ist.
+ // Wenn dieser jedoch ebenfalls aktiviert ist, darf an
+ // dieser Stelle nicht nochmal gezoomt werden, da sonst
+ // 2x gezoomt wird!!
if (getState() != ZOOM_IN)
performSelectionEvent(ox, oy, px, py);
}
@@ -429,8 +341,7 @@
private Component mouseWaitCursorComponent;
/** Cursor wenn kein Mausbutton gedrueckt wird. default oder SwingUtil.PAN **/
- private Cursor normalCursor = Cursor
- .getPredefinedCursor(Cursor.DEFAULT_CURSOR);
+ private Cursor normalCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
/**
* Manuell gesetzter statischer Cursor, unabhaengig von der aktuellen
@@ -443,8 +354,10 @@
/** An (transparent) image to paint over the map in the lower right corner **/
private BufferedImage mapImage = null;
- /** A cache to optionally supply AttributeMetaData to the {@link JMapPane}. */
- final protected HashMap<String, Map<Integer, AttributeMetaData>> attributeMetaDataMapCache = new HashMap<String, Map<Integer, AttributeMetaData>>();
+ /** Holds a flag for each layer, whether it is regarded or ignored on
+ * {@link #SELECT_TOP}, {@link #SELECT_ALL} and {@link #SELECT_ONE_FROM_TOP}
+ * actions. */
+ protected HashMap<MapLayer, Boolean> mapLayerSelectable = new HashMap<MapLayer, Boolean>();
/**
* Erzeugt ein neues MapPane.
@@ -454,11 +367,7 @@
* {@link BorderLayout})
* @param isDoubleBuffered
* siehe Konstruktor der
-<<<<<<< .mine
* {@linkplain org.gtmig.org.geotools.swing.JMapPane#JMapPane(LayoutManager,boolean,GTRenderer,MapContext)
-=======
- * {@linkplain org.geotools.swing.JMapPane#JMapPane(LayoutManager,boolean,GTRenderer,MapContext)
->>>>>>> .r387
* Oberklasse}
* @param renderer
* Renderer fuer die graphische Darestellung (z.B.
@@ -480,11 +389,7 @@
* {@link BorderLayout})
* @param isDoubleBuffered
* siehe Konstruktor der
-<<<<<<< .mine
* {@linkplain org.gtmig.org.geotools.swing.JMapPane#JMapPane(LayoutManager,boolean,GTRenderer,MapContext)
-=======
- * {@linkplain org.geotools.swing.JMapPane#JMapPane(LayoutManager,boolean,GTRenderer,MapContext)
->>>>>>> .r387
* Oberklasse}. Bei <code>null</code> wird <code>true</code>
* andgenommen.
* @param renderer
@@ -601,9 +506,8 @@
// Wenn noch keine MapArea gesetzt wurde, wird diese vom Layer
// uebernommen
getContext().addMapLayerListListener(
- new schmitzm.geotools.map.event.MapLayerListAdapter() {
- public void layerAdded(
- org.geotools.map.event.MapLayerListEvent e) {
+ new MapLayerListAdapter() {
+ public void layerAdded(MapLayerListEvent e) {
if (getContext().getLayerCount() == 1) {
CoordinateReferenceSystem crs = null;
// CRS aus Layer ermitteln
@@ -657,6 +561,21 @@
}
}
});
+
+ // The default is to regard a layer on selection
+ // actions
+ getContext().addMapLayerListListener(
+ new MapLayerListAdapter() {
+ @Override
+ public void layerAdded(MapLayerListEvent e) {
+ setMapLayerSelectable(e.getLayer(),true);
+ }
+ @Override
+ public void layerRemoved(MapLayerListEvent e) {
+ // remove reference to layer
+ mapLayerSelectable.remove(e.getLayer());
+ }
+ });
}
public JMapPane(LayoutManager layout, boolean isDoubleBuffered,
@@ -1464,11 +1383,7 @@
* angepasst wird, muss diese Methode ueberschrieben werden.
* <p>
* Neu von SK: Ich habe in der Geotools
-<<<<<<< .mine
* {@link org.gtmig.org.geotools.swing.JMapPane} die noetigen variablen protected
-=======
- * {@link org.geotools.swing.JMapPane} die noetigen variablen protected
->>>>>>> .r387
* 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
@@ -1650,27 +1565,13 @@
MapLayer layer = layerList[i];
if (!layer.isVisible())
continue;
-
- if (attributeMetaDataMapCache.containsKey(layer.getTitle())) {
- /* AttributeMetaData is available... */
- Map<Integer, AttributeMetaData> amdMap = attributeMetaDataMapCache
- .get(layer.getTitle());
-
- if (StyledLayerUtil.getVisibleAttributeMetaData(amdMap, true)
- .size() == 0) {
- LOGGER.debug("Ignoring layer " + layer.getTitle()
- + " because it has no visible attributes");
- continue;
- }
+ if ( !isMapLayerSelectable(layer) ) {
+ LOGGER.debug("Ignoring layer " + layer.getTitle() + " because it is not declared as selectable!");
+ continue;
}
LOGGER.debug("mode = " + mode);
- /*
- * SK: Change! If AttributeMetadata is provided, we check whether
- * any attribute is
- */
-
// Bei einem Raster-Layer, das die BB schneidet, abbrechen, wenn nur
// im obersten (sichtbaren) Layer gesucht wird.
// Ansonsten Raster-Layer einfach uebergehen.
@@ -2822,15 +2723,25 @@
}
/**
- * Allows to optionally supply the {@link JMapPane} with meta information
- * about layers. This is used (when supplied) for the algorithm that selects
- * features with a mouse click.
- *
- * @param layerID
- * @param atm
+ * Sets whether a layer is regarded or ignored on
+ * {@link #SELECT_TOP}, {@link #SELECT_ALL} and {@link #SELECT_ONE_FROM_TOP}
+ * actions.
+ * @param layer a layer
+ * @param selectable if {@code false} the layer is ignored during the
+ * upper mentioned actions
*/
- public void setAttributeMetaDataFor(String layerID,
- Map<Integer, AttributeMetaData> aMDMap) {
- attributeMetaDataMapCache.put(layerID, aMDMap);
+ public void setMapLayerSelectable(MapLayer layer, boolean selectable) {
+ mapLayerSelectable.put(layer, selectable);
}
+
+ /**
+ * Returns whether a layer is regarded or ignored on
+ * {@link #SELECT_TOP}, {@link #SELECT_ALL} and {@link #SELECT_ONE_FROM_TOP}
+ * actions.
+ * @param layer a layer
+ */
+ public boolean isMapLayerSelectable(MapLayer layer) {
+ Boolean selectable = mapLayerSelectable.get(layer);
+ return selectable != null && selectable;
+ }
}
More information about the Schmitzm-commits
mailing list