Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/LinkSelection.java @ 5815:2aabd9752d5e interaktive-karte
Initial interaction model for riverselection on image map.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 24 Apr 2013 15:14:56 +0200 |
parents | b87073a05f9d |
children |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/LinkSelection.java Wed Apr 24 15:13:09 2013 +0200 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/LinkSelection.java Wed Apr 24 15:14:56 2013 +0200 @@ -1,15 +1,20 @@ package de.intevation.flys.client.client.ui; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + import com.google.gwt.core.client.GWT; - import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.Img; +import com.smartgwt.client.widgets.HTMLPane; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.LinkItem; import com.smartgwt.client.widgets.form.fields.events.ClickEvent; import com.smartgwt.client.widgets.form.fields.events.ClickHandler; +import com.smartgwt.client.widgets.form.fields.events.ItemHoverEvent; +import com.smartgwt.client.widgets.form.fields.events.ItemHoverHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; @@ -39,6 +44,35 @@ /** The selected river*/ protected Data river; + private static Map<String, LinkItem> rivers; + + private static Trigger trigger; + + private Canvas module; + + private class Trigger { + + private LinkSelection ls; + + public Trigger(LinkSelection ls) { + this.ls = ls; + // TODO Auto-generated constructor stub + } + + public void trigger(String name) { + DataItem item = new DefaultDataItem( + name, + null, + name); + + river = new DefaultData( + "river", + null, + null, + new DataItem [] {item}); + this.ls.fireStepForwardEvent (new StepForwardEvent (getData())); + } + } /** * This method currently returns a * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all @@ -50,13 +84,19 @@ */ @Override public Canvas create(DataList data) { + trigger = new Trigger(this); + createCallback(); + rivers = new HashMap<String, LinkItem>(); VLayout v = new VLayout(); v.setMembersMargin(10); v.setAlign(VerticalAlignment.TOP); if (data.getState() == null) { - Canvas module = super.createWidget(data); + module = super.createWidget(data); v.addMember(module); } + else { + module = null; + } Canvas content = createWidget(data); v.addMember(content); @@ -113,27 +153,49 @@ VLayout layout = new VLayout(); layout.setAlign(VerticalAlignment.TOP); layout.setHeight(25); - - VLayout formLayout = new VLayout(); + HLayout colums = new HLayout(); + VLayout formLayout1 = new VLayout(); + VLayout formLayout2 = new VLayout(); - formLayout.setLayoutLeftMargin(60); + formLayout1.setLayoutLeftMargin(60); + int size = data.size(); - for (int i = 0; i < size; i++) { Data d = data.get(i); Label label = new Label(d.getDescription()); label.setValign(VerticalAlignment.TOP); label.setHeight(20); + label.setWidth(400); + LinkedHashMap<String, String> it = new LinkedHashMap<String, String>(); + + boolean defaultSet = false; + boolean first = true; + + DataItem def = d.getDefault(); + String defValue = def != null ? def.getStringValue() : null; + + if (defValue != null && defValue.length() > 0) { + defaultSet = true; + } + + int counter = 0; for (DataItem item: d.getItems()) { LinkItem link = new LinkItem("river"); link.setLinkTitle(item.getLabel()); link.setTarget(item.getStringValue()); link.setShowTitle(false); DynamicForm f = new DynamicForm(); + rivers.put(item.getStringValue(), link); f.setItems(link); - formLayout.addMember(f); + if (counter < d.getItems().length/2) { + formLayout1.addMember(f); + } + else { + formLayout2.addMember(f); + } + counter++; link.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { @@ -141,7 +203,6 @@ ((LinkItem)event.getItem()).getLinkTitle(), null, ((LinkItem)event.getItem()).getLinkTitle()); - river = new DefaultData( "river", null, @@ -150,19 +211,38 @@ fireStepForwardEvent (new StepForwardEvent (getData())); } }); + link.addItemHoverHandler(new ItemHoverHandler() { + @Override + public void onItemHover(ItemHoverEvent event) { + GWT.log(((LinkItem)event.getItem()).getLinkTitle()); + String river = ((LinkItem)event.getItem()).getLinkTitle(); + for (String s : rivers.keySet()) { + LinkItem item = rivers.get(s); + if (item.getLinkTitle().equals(s)) { + item.setCellStyle("riverLinkHighlight"); + } + else { + item.setCellStyle("formCell"); + } + } + callHighlightRiver(river); + } + }); + } + if (module != null) { + getModuleSelection().setRivers(rivers); } label.setWidth(50); - layout.addMember(label); - layout.addMember(formLayout); + colums.addMember(formLayout1); + colums.addMember(formLayout2); + layout.addMember(colums); } - layout.setAlign(VerticalAlignment.TOP); - - String baseUrl = GWT.getHostPageBaseURL(); - Img map = new Img(baseUrl + messages.riverMap(), 494, 582); + layout.addMember(getNextButton()); + HTMLPane map = new HTMLPane(); + map.setContentsURL("images/FLYS_Karte_interactive.html"); helperContainer.addMember(map); - return layout; } @@ -170,6 +250,7 @@ @Override protected Data[] getData() { Data[] module = super.getData(); + if (module != null) { return new Data[] {module[0], river}; } @@ -177,5 +258,33 @@ return new Data[] {river}; } } + + private native void createCallback() /*-{ + $wnd.highlightRiver = @de.intevation.flys.client.client.ui.LinkSelection::highlightCallback(Ljava/lang/String;); + $wnd.selectRiver = @de.intevation.flys.client.client.ui.LinkSelection::selectCallback(Ljava/lang/String;); + }-*/; + + private static void highlightCallback(String name) { + for (String s : rivers.keySet()) { + if (s.equals(name)) { + LinkItem item = rivers.get(name); + item.setCellStyle("riverLinkHighlight"); + item.redraw(); + } + else { + LinkItem item = rivers.get(s); + item.setCellStyle("formCell"); + item.redraw(); + } + } + } + + private static void selectCallback(String name) { + trigger.trigger(name); + } + + private native void callHighlightRiver(String name) /*-{ + $wnd.highlight(name); + }-*/; } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :