# HG changeset patch # User Ingo Weinzierl # Date 1317028127 0 # Node ID 07aa1f5044915f1874d233ef9b3becb965584e90 # Parent ff012a9d9d1dd43d210b7862d27f6010667ab834 Bugfix: #323 A double click in the datacage widget triggers the DatacageDoubleClickHandler.onDoubleClick() method of all registered handlers. flys-client/trunk@2820 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r ff012a9d9d1d -r 07aa1f504491 flys-client/ChangeLog --- a/flys-client/ChangeLog Wed Sep 21 14:37:51 2011 +0000 +++ b/flys-client/ChangeLog Mon Sep 26 09:08:47 2011 +0000 @@ -1,3 +1,21 @@ +2011-09-26 Ingo Weinzierl + + flys/issue323 (Datenkorb: Doppelklick im Datenkorb sollte gewähltes Thema (Themen) laden) + + * src/main/java/de/intevation/flys/client/client/event/DatacageDoubleClickHandler.java: + New. Interface for double click handlers used in the datacage. + + * src/main/java/de/intevation/flys/client/client/ui/DatacageWindow.java: + Implements the DatacageDoubleClickHandler. After a doubleClick event has + been received, the selected Themes from datacage widget are loaded and + the window is destroyed. + + * src/main/java/de/intevation/flys/client/client/ui/DatacageWidget.java: + A double click on a tree node triggers the onDoubleClick method for each + registered DatacageDoubleClickHandler. A DatacageDoubleClickHandler + may register itself via DatacageWidget.addDatacageDoubleClickHander() + method. + 2011-09-21 Felix Wolfsteller Clone Subtrahend and Minuend in WDiff-branch of WINFO with waterlevelfactory. diff -r ff012a9d9d1d -r 07aa1f504491 flys-client/src/main/java/de/intevation/flys/client/client/event/DatacageDoubleClickHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/event/DatacageDoubleClickHandler.java Mon Sep 26 09:08:47 2011 +0000 @@ -0,0 +1,9 @@ +package de.intevation.flys.client.client.event; + +import de.intevation.flys.client.shared.model.ToLoad; + + +public interface DatacageDoubleClickHandler { + + void onDoubleClick(ToLoad toLoad); +} diff -r ff012a9d9d1d -r 07aa1f504491 flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWidget.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWidget.java Wed Sep 21 14:37:51 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWidget.java Mon Sep 26 09:08:47 2011 +0000 @@ -1,6 +1,7 @@ package de.intevation.flys.client.client.ui; import de.intevation.flys.client.client.event.DatacageHandler; +import de.intevation.flys.client.client.event.DatacageDoubleClickHandler; import com.google.gwt.core.client.GWT; @@ -64,11 +65,13 @@ protected ToLoad toLoad; - protected List handlers; + protected List handlers; + protected List doubleHandlers; public DatacageWidget() { - handlers = new ArrayList(); + handlers = new ArrayList(); + doubleHandlers = new ArrayList(); } @@ -170,6 +173,16 @@ /** + * @param h Handler to be added (notified on Double click on node). + */ + public void addDatacageDoubleClickHandler(DatacageDoubleClickHandler h) { + if (!doubleHandlers.contains(h)) { + doubleHandlers.add(h); + } + } + + + /** * @param handler Handler to remove from list. */ public void removeDatacageHandler(DatacageHandler handler) { @@ -235,11 +248,17 @@ } + protected void fireOnDoubleClick() { + for (DatacageDoubleClickHandler handler: doubleHandlers) { + handler.onDoubleClick(toLoad); + } + } + + protected void doubleClickedOnTree(RecordDoubleClickEvent event) { - TreeNode node = (TreeNode)event.getRecord(); collectToLoads(node); - destroy(); + fireOnDoubleClick(); } diff -r ff012a9d9d1d -r 07aa1f504491 flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWindow.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWindow.java Wed Sep 21 14:37:51 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWindow.java Mon Sep 26 09:08:47 2011 +0000 @@ -13,6 +13,7 @@ import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.event.DatacageHandler; +import de.intevation.flys.client.client.event.DatacageDoubleClickHandler; import de.intevation.flys.client.client.event.HasRedrawRequestHandlers; import de.intevation.flys.client.client.event.RedrawRequestHandler; import de.intevation.flys.client.client.event.RedrawRequestEvent; @@ -34,7 +35,9 @@ public class DatacageWindow extends Window -implements DatacageHandler, HasRedrawRequestHandlers +implements DatacageHandler, + DatacageDoubleClickHandler, + HasRedrawRequestHandlers { protected FLYSConstants messages = GWT.create(FLYSConstants.class); @@ -64,6 +67,7 @@ DatacageWidget dw = new DatacageWidget(artifact, user, outs); dw.addDatacageHandler(this); + dw.addDatacageDoubleClickHandler(this); addItem(dw); @@ -88,6 +92,14 @@ @Override + public void onDoubleClick(ToLoad toLoad) { + destroy(); + List recs = toLoad.toRecommendations(); + loadArtifacts(recs.toArray(new Recommendation[recs.size()])); + } + + + @Override public void addRedrawRequestHandler(RedrawRequestHandler handler) { if (handler != null) { handlers.add(handler);