Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/map/ExternalWMSWindow.java @ 1406:6c8a29abbe30
Added an initial control that allows (when it is finished) adding map layers from external WMS.
flys-client/trunk@3291 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Fri, 18 Nov 2011 15:18:29 +0000 |
parents | |
children | 5b5a20e4c4e5 |
line wrap: on
line source
package de.intevation.flys.client.client.ui.map; import com.google.gwt.user.client.ui.TextBox; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.Layout; import com.smartgwt.client.widgets.layout.VLayout; public class ExternalWMSWindow extends Window { protected Layout inputPanel; protected Layout infoPanel; protected Layout layersPanel; protected String url; public ExternalWMSWindow() { super(); } protected void setUrl(String url) { this.url = url; } protected String getUrl() { return url; } public void start() { show(); centerInPage(); goToInputPanel(); } protected void goToInputPanel() { clearItems(); inputPanel = createInputPanel(); addItem(inputPanel); setWidth(380); setHeight(140); } protected void goToInfoPanel() { clearItems(); infoPanel = createInfoPanel(); addItem(infoPanel); setWidth(500); setHeight(500); } protected void goToLayersPanel() { clearItems(); layersPanel = createLayersPanel(); addItem(layersPanel); setWidth(500); setHeight(500); } protected void clearItems() { Canvas[] items = getItems(); if (items != null) { for (Canvas item: items) { removeItem(item); } } } protected Layout createInputPanel() { // TODO I18N setTitle("Basis URL des WMS Dienstes"); final TextBox url = new TextBox(); url.setHeight("25px"); url.setWidth("326px"); String oldUrl = getUrl(); if (oldUrl != null && oldUrl.length() > 0) { url.setValue(oldUrl); } ClickHandler goHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { String newUrl = url.getValue(); if (!isUrlValid(newUrl)) { // TODO I18N SC.warn("Enter a valid URL!"); return; } setUrl(url.getValue()); goToInfoPanel(); } }; ClickHandler cancelHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { quit(); } }; VLayout root = new VLayout(); root.setHeight(75); root.setMargin(10); root.setLayoutMargin(10); root.addMember(url); root.addMember(createButtonPanel(null, goHandler, cancelHandler)); return root; } protected Layout createInfoPanel() { // TODO I18N setTitle("Informationen des WMS Dienstes"); ClickHandler backHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { goToInputPanel(); } }; ClickHandler goHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { goToLayersPanel(); } }; ClickHandler cancelHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { quit(); } }; VLayout root = new VLayout(); root.addMember(new Label("STEP 2: " + getUrl())); // TODO IMPLEMENT ME root.addMember(createButtonPanel(backHandler, goHandler, cancelHandler)); return root; } protected Layout createLayersPanel() { // TODO I18N setTitle("Ebene auswählen"); ClickHandler backHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { goToInfoPanel(); } }; ClickHandler goHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { goToLayersPanel(); } }; ClickHandler cancelHandler = new ClickHandler() { @Override public void onClick(ClickEvent e) { quit(); } }; VLayout root = new VLayout(); root.addMember(new Label("STEP 3")); // TODO IMPLEMENT ME root.addMember(createButtonPanel(backHandler, goHandler, cancelHandler)); return root; } /** * @param back * @param ok * @param cancel * * @return */ protected Layout createButtonPanel( ClickHandler backHandler, ClickHandler goHandler, ClickHandler cancelHandler ) { Button back = new Button("Back"); Button go = new Button("Go on"); Button cancel = new Button("Cancel"); if (backHandler != null) { back.addClickHandler(backHandler); } else { back.setDisabled(true); } if (goHandler != null) { go.addClickHandler(goHandler); } else { go.setDisabled(true); } if (cancelHandler != null) { cancel.addClickHandler(cancelHandler); } else { cancel.setDisabled(true); } HLayout buttonPanel = new HLayout(); buttonPanel.setHeight(25); buttonPanel.setMembersMargin(15); buttonPanel.setLayoutTopMargin(10); buttonPanel.addMember(back); buttonPanel.addMember(go); buttonPanel.addMember(cancel); return buttonPanel; } protected boolean isUrlValid(String url) { // TODO Improve URL validation return !(url == null || url.length() == 0); } protected void quit() { destroy(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :