Mercurial > dive4elements > river
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/ExternalWMSWindow.java Fri Nov 18 15:18:29 2011 +0000 @@ -0,0 +1,277 @@ +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 :