# HG changeset patch # User Felix Wolfsteller # Date 1362730670 -3600 # Node ID d07abdb7ed7fd59bf15ec4464bb628648efa58e5 # Parent 92c8f8d1a3ba86a631c5c5f29cea03a20780a8e4 flys/issue1137: Allow value selection via inputhelpers in WQAdaptedPanel. diff -r 92c8f8d1a3ba -r d07abdb7ed7f flys-client/src/main/java/de/intevation/flys/client/client/ui/DoubleArrayPanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/DoubleArrayPanel.java Thu Mar 07 19:38:36 2013 +0100 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/DoubleArrayPanel.java Fri Mar 08 09:17:50 2013 +0100 @@ -9,6 +9,7 @@ import com.smartgwt.client.widgets.form.fields.StaticTextItem; import com.smartgwt.client.widgets.form.fields.TextItem; import com.smartgwt.client.widgets.form.fields.events.BlurHandler; +import com.smartgwt.client.widgets.form.fields.events.FocusHandler; import de.intevation.flys.client.client.FLYSConstants; @@ -33,7 +34,7 @@ double[] values, BlurHandler handler) { - this(title, values, handler, TitleOrientation.RIGHT); + this(title, values, handler, null, TitleOrientation.RIGHT); } @@ -44,12 +45,14 @@ * @param name The name of the TextItem. * @param title The title of the TextItem. * @param values The double values that should be displayed initially. - * @param handler The BlurHandler that is used to valide the input. + * @param blurHandler The BlurHandler that is used to valide the input. + * @param focusHandler The FocueHandler that is used to valide the input. */ public DoubleArrayPanel( String title, double[] values, - BlurHandler handler, + BlurHandler blurHandler, + FocusHandler focusHandler, TitleOrientation titleOrientation) { this.title = title; @@ -60,7 +63,8 @@ sti.setShowTitle(false); sti.setValue(title); - ti.addBlurHandler(handler); + ti.addBlurHandler(blurHandler); + ti.addFocusHandler(focusHandler); if (titleOrientation == TitleOrientation.RIGHT) { setFields(ti, sti); diff -r 92c8f8d1a3ba -r d07abdb7ed7f flys-client/src/main/java/de/intevation/flys/client/client/ui/QSegmentedInputPanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/QSegmentedInputPanel.java Thu Mar 07 19:38:36 2013 +0100 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/QSegmentedInputPanel.java Fri Mar 08 09:17:50 2013 +0100 @@ -297,7 +297,7 @@ String title = item.getLabel(); DoubleArrayPanel dap = new DoubleArrayPanel( - createLineTitle(title), null, this, TitleOrientation.LEFT); + createLineTitle(title), null, this, null, TitleOrientation.LEFT); wqranges.put(title, dap); diff -r 92c8f8d1a3ba -r d07abdb7ed7f flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java Thu Mar 07 19:38:36 2013 +0100 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/WQAdaptedInputPanel.java Fri Mar 08 09:17:50 2013 +0100 @@ -4,17 +4,23 @@ import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.data.Record; import com.smartgwt.client.types.TitleOrientation; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.FormItem; import com.smartgwt.client.widgets.form.fields.RadioGroupItem; import com.smartgwt.client.widgets.form.fields.events.BlurEvent; import com.smartgwt.client.widgets.form.fields.events.BlurHandler; import com.smartgwt.client.widgets.form.fields.events.ChangeEvent; import com.smartgwt.client.widgets.form.fields.events.ChangeHandler; +import com.smartgwt.client.widgets.form.fields.events.FocusEvent; +import com.smartgwt.client.widgets.form.fields.events.FocusHandler; +import com.smartgwt.client.widgets.grid.events.CellClickEvent; +import com.smartgwt.client.widgets.grid.events.CellClickHandler; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.tab.Tab; @@ -52,7 +58,7 @@ */ public class WQAdaptedInputPanel extends AbstractUIProvider -implements ChangeHandler, BlurHandler +implements ChangeHandler, BlurHandler, FocusHandler { private static final long serialVersionUID = -3218827566805476423L; @@ -104,6 +110,9 @@ protected TabSet tabs; + /** The currently focussed Input element. */ + protected DoubleArrayPanel itemWithFocus; + public WQAdaptedInputPanel() { wqranges = new HashMap(); @@ -111,6 +120,7 @@ wranges = new HashMap(); qdTable = new QDTable(); wTable = new WTable(); + initTableListeners(); } @@ -146,9 +156,9 @@ Tab wTab = new Tab(MESSAGE.wq_table_w()); Tab qTab = new Tab(MESSAGE.wq_table_q()); + qdTable.showSelect(); wTab.setPane(wTable); qTab.setPane(qdTable); - qdTable.hideIconFields(); tabs.addTab(wTab, 0); tabs.addTab(qTab, 1); @@ -159,6 +169,31 @@ } + /** + * Initializes the listeners of the WQD tables. + */ + // TODO dupe from WQInputPanel + protected void initTableListeners() { + CellClickHandler handler = new CellClickHandler() { + @Override + public void onCellClick(CellClickEvent e) { + if (isWMode() || qdTable.isLocked()) { + return; + } + + int idx = e.getColNum(); + Record r = e.getRecord(); + double val = r.getAttributeAsDouble("value"); + + if (itemWithFocus != null) { + itemWithFocus.setValues(new double[]{val}); + } + } + }; + + qdTable.addCellClickHandler(handler); + } + @Override public Canvas createOld(DataList dataList) { List all = dataList.getAll(); @@ -426,7 +461,7 @@ String title = item.getLabel(); String label = item.getStringValue(); DoubleArrayPanel dap = new DoubleArrayPanel( - label, null, this, TitleOrientation.LEFT); + label, null, this, this, TitleOrientation.LEFT); wqranges.put(title, dap); @@ -597,6 +632,13 @@ } + /** Store the currently focussed DoubleArrayPanel. */ + @Override + public void onFocus(FocusEvent event) { + itemWithFocus = (DoubleArrayPanel) event.getForm(); + } + + @Override public void onBlur(BlurEvent event) { DoubleArrayPanel dap = (DoubleArrayPanel) event.getForm();