diff flys-client/src/main/java/org/dive4elements/river/client/client/ui/map/LegendWindow.java @ 5834:f507086aa94b

Repaired internal references.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:31:32 +0200
parents flys-client/src/main/java/de/intevation/flys/client/client/ui/map/LegendWindow.java@c9dcce9448f2
children 821a02bbfb4e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-client/src/main/java/org/dive4elements/river/client/client/ui/map/LegendWindow.java	Thu Apr 25 12:31:32 2013 +0200
@@ -0,0 +1,100 @@
+package de.intevation.flys.client.client.ui.map;
+
+import java.util.List;
+
+import com.smartgwt.client.types.ImageStyle;
+import com.smartgwt.client.types.VerticalAlignment;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Img;
+import com.smartgwt.client.widgets.Label;
+import com.smartgwt.client.widgets.Window;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
+
+import de.intevation.flys.client.shared.MapUtils;
+import de.intevation.flys.client.shared.model.AttributedTheme;
+import de.intevation.flys.client.shared.model.Theme;
+import de.intevation.flys.client.shared.model.ThemeList;
+
+
+public class LegendWindow extends Window {
+
+    private ThemeList themeList;
+
+    private VLayout legendContainer;
+
+    public LegendWindow(ThemeList themeList) {
+        this.themeList = themeList;
+        this.legendContainer = new VLayout();
+
+        init();
+    }
+
+    public void update(ThemeList themeList) {
+        this.themeList = themeList;
+
+        Canvas[] legends = legendContainer.getMembers();
+        legendContainer.removeMembers(legends);
+
+        addLegends();
+    }
+
+    private void addLegends() {
+        List<Theme> themes = themeList.getActiveThemes();
+
+        for (Theme theme : themes) {
+            if (theme.getActive() == 0) {
+                continue;
+            }
+
+            if (theme instanceof AttributedTheme) {
+                legendContainer
+                    .addMember(createLegendGraphicsRow((AttributedTheme) theme));
+            }
+        }
+    }
+
+    private Canvas createLegendGraphicsRow(AttributedTheme at) {
+        Label label = new Label(at.getDescription());
+        Img img = createLegendGraphics(at);
+
+        HLayout row = new HLayout();
+        row.addMember(label);
+        row.addMember(img);
+
+        row.setHeight(150);
+        row.setWidth(400);
+
+        return row;
+    }
+
+    private Img createLegendGraphics(AttributedTheme at) {
+        String imgUrl = MapUtils.getLegendGraphicUrl(at.getAttr("url"),
+            at.getAttr("layers"));
+
+        Img img = new Img(imgUrl);
+        img.setImageType(ImageStyle.CENTER);
+        img.setAutoFit(true);
+
+        return img;
+    }
+
+    private void init() {
+        legendContainer.setAutoHeight();
+        legendContainer.setLayoutAlign(VerticalAlignment.TOP);
+        legendContainer.setAlign(VerticalAlignment.CENTER);
+
+        setTitle("WMS Legend");
+        setAutoSize(true);
+        setCanDragResize(true);
+        setIsModal(false);
+        setShowModalMask(false);
+        setLayoutAlign(VerticalAlignment.TOP);
+        setAlign(VerticalAlignment.TOP);
+
+        addItem(legendContainer);
+        addLegends();
+
+        centerInPage();
+    }
+}

http://dive4elements.wald.intevation.org