ingo@4329: package de.intevation.flys.client.client.ui.map; ingo@4329: ingo@4329: import java.util.List; ingo@4329: ingo@4329: import com.smartgwt.client.types.ImageStyle; ingo@4329: import com.smartgwt.client.types.VerticalAlignment; ingo@4329: import com.smartgwt.client.widgets.Canvas; ingo@4329: import com.smartgwt.client.widgets.Img; ingo@4329: import com.smartgwt.client.widgets.Label; ingo@4329: import com.smartgwt.client.widgets.Window; ingo@4329: import com.smartgwt.client.widgets.layout.HLayout; ingo@4329: import com.smartgwt.client.widgets.layout.VLayout; ingo@4329: ingo@4329: import de.intevation.flys.client.shared.MapUtils; ingo@4329: import de.intevation.flys.client.shared.model.AttributedTheme; ingo@4329: import de.intevation.flys.client.shared.model.Theme; ingo@4329: import de.intevation.flys.client.shared.model.ThemeList; ingo@4329: ingo@4329: ingo@4329: public class LegendWindow extends Window { ingo@4329: ingo@4329: private ThemeList themeList; ingo@4329: ingo@4329: private VLayout legendContainer; ingo@4329: ingo@4329: public LegendWindow(ThemeList themeList) { ingo@4329: this.themeList = themeList; ingo@4329: this.legendContainer = new VLayout(); ingo@4329: ingo@4329: init(); ingo@4329: } ingo@4329: ingo@4329: public void update(ThemeList themeList) { ingo@4329: this.themeList = themeList; ingo@4329: ingo@4329: Canvas[] legends = legendContainer.getMembers(); ingo@4329: legendContainer.removeMembers(legends); ingo@4329: ingo@4329: addLegends(); ingo@4329: } ingo@4329: ingo@4329: private void addLegends() { ingo@4329: List themes = themeList.getActiveThemes(); ingo@4329: ingo@4329: for (Theme theme : themes) { ingo@4329: if (theme.getActive() == 0) { ingo@4329: continue; ingo@4329: } ingo@4329: ingo@4329: if (theme instanceof AttributedTheme) { ingo@4329: legendContainer ingo@4329: .addMember(createLegendGraphicsRow((AttributedTheme) theme)); ingo@4329: } ingo@4329: } ingo@4329: } ingo@4329: ingo@4329: private Canvas createLegendGraphicsRow(AttributedTheme at) { ingo@4329: Label label = new Label(at.getDescription()); ingo@4329: Img img = createLegendGraphics(at); ingo@4329: ingo@4329: HLayout row = new HLayout(); ingo@4329: row.addMember(label); ingo@4329: row.addMember(img); ingo@4329: ingo@4329: row.setHeight(150); ingo@4329: row.setWidth(400); ingo@4329: ingo@4329: return row; ingo@4329: } ingo@4329: ingo@4329: private Img createLegendGraphics(AttributedTheme at) { ingo@4329: String imgUrl = MapUtils.getLegendGraphicUrl(at.getAttr("url"), ingo@4329: at.getAttr("layers")); ingo@4329: ingo@4329: Img img = new Img(imgUrl); ingo@4329: img.setImageType(ImageStyle.CENTER); ingo@4329: img.setAutoFit(true); ingo@4329: ingo@4329: return img; ingo@4329: } ingo@4329: ingo@4329: private void init() { ingo@4329: legendContainer.setAutoHeight(); ingo@4329: legendContainer.setLayoutAlign(VerticalAlignment.TOP); ingo@4329: legendContainer.setAlign(VerticalAlignment.CENTER); ingo@4329: ingo@4329: setTitle("WMS Legend"); ingo@4329: setAutoSize(true); ingo@4329: setCanDragResize(true); ingo@4329: setIsModal(false); ingo@4329: setShowModalMask(false); ingo@4329: setLayoutAlign(VerticalAlignment.TOP); ingo@4329: setAlign(VerticalAlignment.TOP); ingo@4329: ingo@4329: addItem(legendContainer); ingo@4329: addLegends(); ingo@4329: ingo@4329: centerInPage(); ingo@4329: } ingo@4329: }