changeset 5609:80e8ef91223c

Fix for #802: digitized pipes and dikes should be visible now
author Christian Lins <christian.lins@intevation.de>
date Tue, 09 Apr 2013 12:44:57 +0200 (2013-04-09)
parents 62513c9183ba
children 98906446eadf 14de791bd8f7
files flys-client/src/main/java/de/intevation/flys/client/client/ui/map/DrawControl.java flys-client/src/main/java/de/intevation/flys/client/client/ui/map/FloodMap.java
diffstat 2 files changed, 45 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/DrawControl.java	Tue Apr 09 12:00:52 2013 +0200
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/DrawControl.java	Tue Apr 09 12:44:57 2013 +0200
@@ -1,7 +1,6 @@
 package de.intevation.flys.client.client.ui.map;
 
 import com.google.gwt.core.client.GWT;
-
 import com.smartgwt.client.types.SelectionType;
 import com.smartgwt.client.widgets.ImgButton;
 import com.smartgwt.client.widgets.events.ClickEvent;
@@ -30,7 +29,9 @@
 import org.gwtopenmaps.openlayers.client.layer.Vector;
 import org.gwtopenmaps.openlayers.client.util.Attributes;
 
-
+/**
+ * Widget that handles the drawing of pipes and dikes in the DigitizePanel (MapPanel).
+ */
 public class DrawControl extends HLayout implements VectorFeatureAddedListener {
 
     public static final String BARRIER_PIPE1    = "pipe1";
@@ -39,6 +40,7 @@
     public static final String BARRIER_DAM      = "dam";
     public static final String BARRIER_RINGDIKE = "ring_dike";
 
+    // FIXME: i18n
     public static final String BARRIER_PIPE1_VALUE    = "Rohr 1";
     public static final String BARRIER_PIPE2_VALUE    = "Rohr 2";
     public static final String BARRIER_DITCH_VALUE    = "Graben";
@@ -76,7 +78,7 @@
 
         button = new ImgButton();
 
-        String baseUrl = GWT.getHostPageBaseURL();
+        final String baseUrl = GWT.getHostPageBaseURL();
         button.setSrc(baseUrl + MSG.digitize());
         button.setActionType(SelectionType.CHECKBOX);
         button.setSize(20);
@@ -101,21 +103,21 @@
         form.setTitlePrefix("");
         form.setTitleSuffix("");
 
-        LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
+        final LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
         map.put(BARRIER_PIPE1, MSG.getString(BARRIER_PIPE1));
         map.put(BARRIER_PIPE2, MSG.getString(BARRIER_PIPE2));
         map.put(BARRIER_DITCH, MSG.getString(BARRIER_DITCH));
         map.put(BARRIER_DAM, MSG.getString(BARRIER_DAM));
         map.put(BARRIER_RINGDIKE, MSG.getString(BARRIER_RINGDIKE));
 
-        LinkedHashMap<String, String> ics = new LinkedHashMap<String, String>();
+        final LinkedHashMap<String, String> ics = new LinkedHashMap<String, String>();
         ics.put(BARRIER_PIPE1, BARRIER_PIPE1);
         ics.put(BARRIER_PIPE2, BARRIER_PIPE2);
         ics.put(BARRIER_DITCH, BARRIER_DITCH);
         ics.put(BARRIER_DAM, BARRIER_DAM);
         ics.put(BARRIER_RINGDIKE, BARRIER_RINGDIKE);
 
-        SelectItem box = new SelectItem(FIELD_BARRIER_TYPE);
+        final SelectItem box = new SelectItem(FIELD_BARRIER_TYPE);
         box.setTitle("");
         box.setWidth(100);
         box.setValueMap(map);
@@ -152,13 +154,13 @@
 
 
     protected void setCurrentType(VectorFeature feature) {
-        Attributes attrs = feature.getAttributes();
+        final Attributes attrs = feature.getAttributes();
         String     type  = attrs.getAttributeAsString("typ");
 
         if (type == null || type.length() == 0) {
             type = getSelectedType();
 
-            Style style = FloodMap.getStyle(type);
+            final Style style = FloodMap.getStyle(type);
             if (style != null) {
                 feature.setStyle(style);
             }
@@ -195,7 +197,7 @@
     protected void setSelectedControl() {
         removeControl();
 
-        String type = getSelectedType();
+        final String type = getSelectedType();
 
         if (type == null || type.length() == 0) {
             return;
@@ -210,6 +212,9 @@
 
         map.addControl(control);
         control.activate();
+
+        // Make sure the barrier layer is on top; sometime it looses it z-index...
+        layer.setZIndex(1000);
     }
 
 
@@ -229,7 +234,7 @@
 
 
     public void activate(boolean activate) {
-        FormItem item = form.getField(FIELD_BARRIER_TYPE);
+        final FormItem item = form.getField(FIELD_BARRIER_TYPE);
 
         if (activate) {
             button.select();
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/FloodMap.java	Tue Apr 09 12:00:52 2013 +0200
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/FloodMap.java	Tue Apr 09 12:44:57 2013 +0200
@@ -44,7 +44,7 @@
 
 
     public void recreateWidget(int width, int height) {
-        MapOptions opts = new MapOptions();
+        final MapOptions opts = new MapOptions();
         opts.setControls(new JObjectArray(new JSObject[] {}));
         opts.setNumZoomLevels(16);
         opts.setProjection(getRiverProjection());
@@ -63,22 +63,22 @@
 
     @Override
     public void onFeatureAdded(FeatureAddedEvent evt) {
-        VectorFeature feature = evt.getVectorFeature();
+        final VectorFeature feature = evt.getVectorFeature();
 
-        Attributes attrs = feature.getAttributes();
-        String     type  = attrs.getAttributeAsString("typ");
+        final Attributes attrs = feature.getAttributes();
+        final String     type  = attrs.getAttributeAsString("typ");
 
         if (type == null || type.length() == 0) {
             return;
         }
 
-        Style style = getStyle(type);
+        final Style style = getStyle(type);
         if (style != null) {
             feature.setStyle(style);
         }
 
         // necessary, otherwise the setStyle() has no effect
-        barrierLayer.redraw();
+        getBarrierLayer().redraw();
     }
 
 
@@ -91,7 +91,7 @@
      * @return an OpenLayers.Style object.
      */
     public static Style getStyle(String type) {
-        Style style = new Style();
+        final Style style = new Style();
 
         if (type == null) {
             return null;
@@ -154,7 +154,7 @@
 
     public Vector getBarrierLayer() {
         if (barrierLayer == null) {
-            VectorOptions opts = new VectorOptions();
+            final VectorOptions opts = new VectorOptions();
             opts.setProjection(getRiverProjection());
             opts.setMaxExtent(getMaxExtent());
 
@@ -175,7 +175,7 @@
         // disable features before exporting to GeoJSON
         disableFeatures();
 
-        VectorFeature[] features = barrierLayer.getFeatures();
+        final VectorFeature[] features = barrierLayer.getFeatures();
 
         if (features == null || features.length == 0) {
             return null;
@@ -188,8 +188,8 @@
     public void setSize(String width, String height) {
         mapWidget.setWidth(width);
         mapWidget.setHeight(height);
-        int currentZoom = map.getZoom();
-        LonLat currentCenter = map.getCenter();
+        final int currentZoom = map.getZoom();
+        final LonLat currentCenter = map.getCenter();
         map.updateSize();
         map.zoomTo(currentZoom);
         map.setCenter(currentCenter);
@@ -200,8 +200,8 @@
         if (layer != null) {
             map.addLayer(layer);
 
-            int index    = map.getLayerIndex(layer);
-            int newIndex = index * (-1) + 1;
+            final int index    = map.getLayerIndex(layer);
+            final int newIndex = index * (-1) + 1;
 
             map.raiseLayer(layer, newIndex);
 
@@ -211,13 +211,13 @@
 
 
     public void hideBarrierLayer () {
-        if (barrierLayer != null) {
+        if (getBarrierLayer() != null) {
             barrierLayer.setIsVisible(false);
         }
     }
 
     public void showBarrierLayer () {
-        if (barrierLayer != null) {
+        if (getBarrierLayer() != null) {
             barrierLayer.setIsVisible(true);
         }
     }
@@ -235,8 +235,8 @@
             return;
         }
 
-        for (VectorFeature feature: features) {
-            Attributes attr = feature.getAttributes();
+        for (final VectorFeature feature: features) {
+            final Attributes attr = feature.getAttributes();
 
             if (attr.getAttributeAsInt(MARK_SELECTED) == 1) {
                 continue;
@@ -244,8 +244,8 @@
 
             attr.setAttribute(MARK_SELECTED, 1);
 
-            Style style        = feature.getStyle();
-            double strokeWidth = style.getStrokeWidth();
+            final Style style        = feature.getStyle();
+            final double strokeWidth = style.getStrokeWidth();
 
             style.setStrokeWidth(strokeWidth+SELECTED_STROKE_WIDTH);
         }
@@ -255,8 +255,8 @@
 
 
     public void disableFeatures() {
-        Vector          barriers = getBarrierLayer();
-        VectorFeature[] features = barriers.getFeatures();
+        final Vector          barriers = getBarrierLayer();
+        final VectorFeature[] features = barriers.getFeatures();
 
         if (features == null || features.length == 0) {
             return;
@@ -278,8 +278,8 @@
             return;
         }
 
-        for (VectorFeature feature: features) {
-            Attributes attr = feature.getAttributes();
+        for (final VectorFeature feature: features) {
+            final Attributes attr = feature.getAttributes();
 
             if (attr.getAttributeAsInt(MARK_SELECTED) == 0) {
                 continue;
@@ -287,8 +287,8 @@
 
             attr.setAttribute(FloodMap.MARK_SELECTED, 0);
 
-            Style style        = feature.getStyle();
-            double strokeWidth = style.getStrokeWidth();
+            final Style style        = feature.getStyle();
+            final double strokeWidth = style.getStrokeWidth();
 
             style.setStrokeWidth(strokeWidth-SELECTED_STROKE_WIDTH);
         }
@@ -298,17 +298,19 @@
 
 
     public void update() {
-        Layer[] layers = map.getLayers();
+        final Layer[] layers = map.getLayers();
 
-        for (Layer l: layers) {
+        for (final Layer l: layers) {
             l.redraw();
         }
+
+        getBarrierLayer(); // Raises Z-Index to 1000 again
     }
 
 
     public void activateScaleLine(boolean activate) {
         if (activate) {
-            ScaleLineOptions slOpts = new ScaleLineOptions();
+            final ScaleLineOptions slOpts = new ScaleLineOptions();
             slOpts.setBottomInUnits("m");
             slOpts.setBottomOutUnits("km");
             slOpts.setTopInUnits("");

http://dive4elements.wald.intevation.org