# HG changeset patch
# User gernotbelger
# Date 1526051075 -7200
# Node ID b5d7a9d7983792418f1127de494c5b40493fdf33
# Parent 58af9b81a97b67a19538585812cb2615044b8f07
uinfo.inundation_duration ui
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/doc/conf/artifacts/uinfo.xml
--- a/artifacts/doc/conf/artifacts/uinfo.xml Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/doc/conf/artifacts/uinfo.xml Fri May 11 17:04:35 2018 +0200
@@ -104,6 +104,9 @@
+
+
+
@@ -116,40 +119,40 @@
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
-
+
+
-
+
@@ -179,11 +182,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -258,7 +261,7 @@
-
+
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/LoadYearSelect.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/LoadYearSelect.java Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/LoadYearSelect.java Fri May 11 17:04:35 2018 +0200
@@ -28,7 +28,7 @@
/** Year Select Widget. */
@Override
protected String getUIProvider() {
- return "minfo.sedimentload_year_select"; // TODO: eigenes Panel oder allgemeineren Code
+ return "uinfo.inundationduration.load_year_select";
}
@Override
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadEpochSelect.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadEpochSelect.java Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadEpochSelect.java Fri May 11 17:04:35 2018 +0200
@@ -23,6 +23,6 @@
@Override
protected String getUIProvider() {
- return "uinfo.inundation_duration.load_epoch_select";
+ return "uinfo.inundationduration.load_totalepoch_select";
}
}
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadScenarioSelect.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadScenarioSelect.java Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadScenarioSelect.java Fri May 11 17:04:35 2018 +0200
@@ -27,7 +27,7 @@
/** Year Select Widget. */
@Override
protected String getUIProvider() {
- return "minfo.sedimentload_year_select"; // TODO: eigenes Panel oder allgemeineren Code und an SCENARIO AUS DB ANPASSEN!
+ return "uinfo.sedimentheight_select"; // TODO: eigenes Panel oder allgemeineren Code und an SCENARIO AUS DB ANPASSEN!
}
@Override
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/YearChoice.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/YearChoice.java Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/YearChoice.java Fri May 11 17:04:35 2018 +0200
@@ -27,7 +27,7 @@
protected List makeEntries() {
final List entries = new ArrayList<>();
entries.add("state.uinfo.year");
- entries.add("state.uinfo.epoch");
+ entries.add("state.uinfo.totalepoch");
return entries;
}
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableEditState.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableEditState.java Fri May 11 17:04:35 2018 +0200
@@ -0,0 +1,25 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * Software engineering by
+ * Björnsen Beratende Ingenieure GmbH
+ * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+package org.dive4elements.river.artifacts.uinfo.vegetationzones;
+
+import org.dive4elements.river.artifacts.states.DefaultState;
+
+/**
+ * @author Domenico Nardi Tironi
+ */
+public class VegetationZonesTableEditState extends DefaultState {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected String getUIProvider() {
+ return "uinfo.vegetationzones.table.edit";
+ }
+}
\ No newline at end of file
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableState.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/vegetationzones/VegetationZonesTableState.java Wed May 09 16:36:55 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
- * Software engineering by
- * Björnsen Beratende Ingenieure GmbH
- * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
- *
- * This file is Free Software under the GNU AGPL (>=v3)
- * and comes with ABSOLUTELY NO WARRANTY! Check out the
- * documentation coming with Dive4Elements River for details.
- */
-package org.dive4elements.river.artifacts.uinfo.vegetationzones;
-
-import org.dive4elements.river.artifacts.states.DefaultState;
-
-/**
- * @author Domenico Nardi Tironi
- */
-public class VegetationZonesTableState extends DefaultState {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- protected String getUIProvider() {
- return "uinfo.vegetationzones.table";
- }
-}
\ No newline at end of file
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/resources/messages.properties
--- a/artifacts/src/main/resources/messages.properties Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/src/main/resources/messages.properties Fri May 11 17:04:35 2018 +0200
@@ -77,11 +77,14 @@
state.uinfo.vegetation_zones.table = Einteilung der Vegetationszonen und \u00dcberflutungsdauern (\u00dcFD)
+state.uinfo.year_totalepoch = Year/Gesamter Zeitraum
state.uinfo.year_epoch = Year/Epoch
state.uinfo.load.year= Year
+state.uinfo.load.totalepoch=Gesamter Zeitraum
state.uinfo.load.epoch=Epoch
state.uinfo.year=Year
state.uinfo.epoch=Epoch
+state.uinfo.totalepoch=Total Epoch
state.sinfo.year_epoch = Year/Epoch
state.sinfo.load.year= Year(s)
diff -r 58af9b81a97b -r b5d7a9d79837 artifacts/src/main/resources/messages_de.properties
--- a/artifacts/src/main/resources/messages_de.properties Wed May 09 16:36:55 2018 +0200
+++ b/artifacts/src/main/resources/messages_de.properties Fri May 11 17:04:35 2018 +0200
@@ -77,11 +77,14 @@
state.uinfo.vegetation_zones.table = Einteilung der Vegetationszonen und \u00dcberflutungsdauern (\u00dcFD)
+state.uinfo.year_totalepoch = Jahr/Gesamter Zeitraum
state.uinfo.year_epoch = Jahr/Epoche
state.uinfo.load.year= Jahr
+state.uinfo.load.totalepoch=Gesamter Zeitraum
state.uinfo.load.epoch=Epoche
state.uinfo.year=Jahr
state.uinfo.epoch=Epoche
+state.uinfo.totalepoch=Gesamter Zeitraum
state.sinfo.year_epoch = Jahr/Epoche
state.sinfo.load.year= Jahr(e)
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractUIProvider.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractUIProvider.java Wed May 09 16:36:55 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractUIProvider.java Fri May 11 17:04:35 2018 +0200
@@ -8,18 +8,11 @@
package org.dive4elements.river.client.client.ui;
-import com.google.gwt.core.client.GWT;
+import java.util.ArrayList;
+import java.util.List;
-import com.smartgwt.client.util.SC;
-import com.smartgwt.client.widgets.Button;
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.Img;
-import com.smartgwt.client.widgets.events.ClickEvent;
-import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.layout.VLayout;
-
+import org.dive4elements.river.client.client.FLYS;
import org.dive4elements.river.client.client.FLYSConstants;
-import org.dive4elements.river.client.client.FLYS;
import org.dive4elements.river.client.client.event.HasStepBackHandlers;
import org.dive4elements.river.client.client.event.HasStepForwardHandlers;
import org.dive4elements.river.client.client.event.StepBackEvent;
@@ -35,19 +28,21 @@
import org.dive4elements.river.client.shared.model.DefaultData;
import org.dive4elements.river.client.shared.model.DefaultDataItem;
-import java.util.ArrayList;
-import java.util.List;
-
+import com.google.gwt.core.client.GWT;
+import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.Button;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Img;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.layout.VLayout;
/**
* An abstract UIProvider that provides some basic methods.
*
* @author Ingo Weinzierl
*/
-public abstract class AbstractUIProvider
-implements UIProvider, HasStepForwardHandlers, ClickHandler,
- HasStepBackHandlers
-{
+public abstract class AbstractUIProvider implements UIProvider, HasStepForwardHandlers, ClickHandler, HasStepBackHandlers {
private static final long serialVersionUID = -1610874613377494184L;
/** The message class that provides i18n strings. */
@@ -75,90 +70,87 @@
* Creates a new UIProvider instance of this class.
*/
public AbstractUIProvider() {
- forwardHandlers = new ArrayList();
- backHandlers = new ArrayList();
+ this.forwardHandlers = new ArrayList();
+ this.backHandlers = new ArrayList();
}
-
/**
* Appends a StepBackHandler that wants to listen to StepBackEvents.
*
- * @param handler A new StepBackHandler.
+ * @param handler
+ * A new StepBackHandler.
*/
@Override
- public void addStepBackHandler(StepBackHandler handler) {
+ public void addStepBackHandler(final StepBackHandler handler) {
if (handler != null) {
- backHandlers.add(handler);
+ this.backHandlers.add(handler);
}
}
-
/**
* Appends a StepForwardHandler that wants to listen to StepForwardEvents.
*
- * @param handler A new StepForwardHandler.
+ * @param handler
+ * A new StepForwardHandler.
*/
@Override
- public void addStepForwardHandler(StepForwardHandler handler) {
+ public void addStepForwardHandler(final StepForwardHandler handler) {
if (handler != null) {
- forwardHandlers.add(handler);
+ this.forwardHandlers.add(handler);
}
}
-
/**
* This method is called after the user has clicked one of the buttons to
* step back to a previous state.
*
- * @param e The StepBackEvent.
+ * @param e
+ * The StepBackEvent.
*/
- protected void fireStepBackEvent(StepBackEvent e) {
- GWT.log("AbstractUIProvider - fireStepBackEvent() handlers: "
- + backHandlers.size());
- for (StepBackHandler handler: backHandlers) {
+ protected void fireStepBackEvent(final StepBackEvent e) {
+ GWT.log("AbstractUIProvider - fireStepBackEvent() handlers: " + this.backHandlers.size());
+ for (final StepBackHandler handler : this.backHandlers) {
handler.onStepBack(e);
}
}
-
/**
* This method is called after the user has clicked on the 'next' button to
* step to the next state.
*
- * @param e The StepForwardEvent.
+ * @param e
+ * The StepForwardEvent.
*/
- protected void fireStepForwardEvent(StepForwardEvent e) {
- GWT.log("AbstractUIProvider - fireStepForwardEvent() handlers: "
- + forwardHandlers.size());
- for (StepForwardHandler handler: forwardHandlers) {
+ protected void fireStepForwardEvent(final StepForwardEvent e) {
+ GWT.log("AbstractUIProvider - fireStepForwardEvent() handlers: " + this.forwardHandlers.size());
+ for (final StepForwardHandler handler : this.forwardHandlers) {
handler.onStepForward(e);
}
}
-
/**
* This method is used to listen to click events on the 'next' button. The
* fireStepForwardEvent() method is called here.
*
- * @param e The click event.
+ * @param e
+ * The click event.
*/
@Override
- public void onClick(ClickEvent e) {
- List errors = validate();
- if (errors == null || errors.isEmpty()) {
- Data[] data = getData();
- fireStepForwardEvent(new StepForwardEvent(data));
- }
- else {
- showErrors(errors);
- }
+ public void onClick(final ClickEvent e) {
+ final List errors = validate();
+ // if (errors == null || errors.isEmpty()) {
+ final Data[] data = getData();
+ fireStepForwardEvent(new StepForwardEvent(data));
+ // }
+ // else {
+ // showErrors(errors);
+ // }
}
+ protected void showErrors(final List errors) {
+ final StringBuilder sb = new StringBuilder();
- protected void showErrors(List errors) {
- StringBuilder sb = new StringBuilder();
-
- for (String error: errors) {
+ for (final String error : errors) {
sb.append(error);
sb.append("
");
}
@@ -166,43 +158,41 @@
SC.warn(sb.toString());
}
-
/**
* Creates the 'next' button to step forward to the next state.
*
* @return the 'next' button.
*/
protected Canvas getNextButton() {
- Button next = new Button(MSG.buttonNext());
+ final Button next = new Button(this.MSG.buttonNext());
next.addClickHandler(this);
return next;
}
-
@Override
- public Canvas createHelpLink(DataList dataList, Data data, FLYS instance) {
- String iUrl = GWT.getHostPageBaseURL() + MSG.getFeatureInfo();
- String helpUrl = dataList.getHelpText();
+ public Canvas createHelpLink(final DataList dataList, final Data data, final FLYS instance) {
+ final String iUrl = GWT.getHostPageBaseURL() + this.MSG.getFeatureInfo();
+ final String helpUrl = dataList.getHelpText();
return new WikiImgLink(iUrl, helpUrl, 30, 30, instance);
}
-
/**
* Creates the 'back' button to step back to a previous state.
*
- * @param targetState The identifier of the target state.
+ * @param targetState
+ * The identifier of the target state.
*
* @return the 'back' button.
*/
protected Canvas getBackButton(final String targetState) {
- String url = GWT.getHostPageBaseURL() + MSG.imageBack();
- Img back = new Img(url, 16, 16);
+ final String url = GWT.getHostPageBaseURL() + this.MSG.imageBack();
+ final Img back = new Img(url, 16, 16);
back.addClickHandler(new ClickHandler() {
@Override
- public void onClick(ClickEvent event) {
+ public void onClick(final ClickEvent event) {
fireStepBackEvent(new StepBackEvent(targetState));
}
});
@@ -210,58 +200,56 @@
return back;
}
-
/**
* This method injects a container that is used to position helper widgets.
*
- * @param helperContainer A container that is used to position helper
- * widgets.
+ * @param helperContainer
+ * A container that is used to position helper
+ * widgets.
*/
@Override
- public void setContainer(VLayout helperContainer) {
+ public void setContainer(final VLayout helperContainer) {
this.helperContainer = helperContainer;
}
-
/**
* This method injects an artifact that contains the status information.
*
- * @param art An artifact containing status information.
+ * @param art
+ * An artifact containing status information.
*/
@Override
- public void setArtifact(Artifact art) {
+ public void setArtifact(final Artifact art) {
this.artifact = art;
}
-
@Override
- public void setCollection(Collection collection) {
+ public void setCollection(final Collection collection) {
this.collection = collection;
}
-
@Override
- public void setParameterList(ParameterList list) {
+ public void setParameterList(final ParameterList list) {
this.parameterList = list;
}
-
public Collection getCollection() {
- return collection;
+ return this.collection;
}
-
/**
* This method greps the Data with name name from the list and
* returns it.
*
- * @param items A list of Data.
- * @param name The name of the Data that we are searching for.
+ * @param items
+ * A list of Data.
+ * @param name
+ * The name of the Data that we are searching for.
*
* @return the Data with the name name.
*/
- protected Data getData(List data, String name) {
- for (Data d: data) {
+ protected Data getData(final List data, final String name) {
+ for (final Data d : data) {
if (name.equals(d.getLabel())) {
return d;
}
@@ -270,17 +258,16 @@
return null;
}
+ protected String getDataValue(final String state, final String name) {
+ final ArtifactDescription desc = this.artifact.getArtifactDescription();
- protected String getDataValue(String state, String name) {
- ArtifactDescription desc = artifact.getArtifactDescription();
+ final DataList[] old = desc.getOldData();
- DataList[] old = desc.getOldData();
-
- for (DataList list: old) {
+ for (final DataList list : old) {
if (list == null) {
continue;
}
- Data d = getData(list.getAll(), name);
+ final Data d = getData(list.getAll(), name);
if (d != null) {
return d.getItems()[0].getStringValue();
@@ -294,13 +281,15 @@
* This method greps the DataItem with name name from the list and
* returns it.
*
- * @param items A list of DataItems.
- * @param name The name of the DataItem that we are searching for.
+ * @param items
+ * A list of DataItems.
+ * @param name
+ * The name of the DataItem that we are searching for.
*
* @return the DataItem with the name name.
*/
- protected DataItem getDataItem(DataItem[] items, String name) {
- for (DataItem item: items) {
+ protected DataItem getDataItem(final DataItem[] items, final String name) {
+ for (final DataItem item : items) {
if (name.equals(item.getLabel())) {
return item;
}
@@ -311,6 +300,7 @@
/**
* Validates the selection.
+ *
* @return List of internationalized errror messages (if any).
*/
public List validate() {
@@ -318,31 +308,24 @@
}
/** Create simple DefaultData with single DataItem inside. */
- public static DefaultData createDataArray(String name, String value) {
- DataItem item = new DefaultDataItem(
- name,
- name,
- value);
+ public static DefaultData createDataArray(final String name, final String value) {
+ final DataItem item = new DefaultDataItem(name, name, value);
- return new DefaultData(name,
- null,
- null,
- new DataItem[] {item});
+ return new DefaultData(name, null, null, new DataItem[] { item });
}
-
/**
* This method needs to be implemented by concrete subclasses. It should
* create a new Canvas object with a representation of data.
*
- * @param data The data that should be displayed.
+ * @param data
+ * The data that should be displayed.
*
* @return a Canvas object that displays data.
*/
@Override
public abstract Canvas create(DataList data);
-
/**
* This method needs to be implemented by concrete subclasses. It should
* return the selected data.
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/PanelHelper.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/PanelHelper.java Fri May 11 17:04:35 2018 +0200
@@ -0,0 +1,39 @@
+/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
+ * Software engineering by
+ * Björnsen Beratende Ingenieure GmbH
+ * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+package org.dive4elements.river.client.client.ui;
+
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.form.validator.Validator;
+import com.smartgwt.client.widgets.layout.VLayout;
+
+/**
+ * @author Domenico Nardi Tironi
+ *
+ */
+public class PanelHelper {
+
+ public PanelHelper() {
+
+ }
+
+ public static final TextItem createItem(final String identifier, final String title, final int width, final Validator... validator) {
+ final TextItem item = new TextItem(identifier, title);
+ item.setWidth(width);
+ item.setWrapTitle(false);
+ item.setValidators(validator);
+ return item;
+ }
+
+ public static VLayout getSpacer(final int height) {
+ final VLayout spacer = new VLayout();
+ spacer.setHeight(height);
+ return spacer;
+ }
+}
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java Wed May 09 16:36:55 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/RadioPanel.java Fri May 11 17:04:35 2018 +0200
@@ -35,14 +35,14 @@
public Canvas createOld(final DataList dataList) {
final Data data = dataList.get(0);
final DataItem[] items = data.getItems();
-
+ // hat Einfluss auf Layout in der Übersicht (oben) nach Setzen des Wertes für den State
final HLayout layout = new HLayout();
final Label label = new Label(dataList.getLabel());
final Label value = new Label(items[0].getLabel());
-
- layout.setHeight(35); // hat Einfluss auf Layout in der Übersicht (oben) nach Setzen des Wertes für den State
layout.setWidth(400);
- label.setWidth(200);
+ label.setWidth(200); // nicht ändern; scheint wohl ne Konstante zu sein!
+ value.setWidth(180); // änderbar
+ layout.setHeight(35);
layout.addMember(label);
layout.addMember(value);
@@ -60,7 +60,10 @@
final VLayout layout = new VLayout();
final Label label = new Label(data.getDescription());
+ label.setWrap(false);
final RadioGroupItem rgi = new RadioGroupItem("selection");
+ rgi.setWrapTitle(false);
+ rgi.setWrap(false);
rgi.setShowTitle(false);
GWT.log("items: " + items.length);
final LinkedHashMap elems = new LinkedHashMap();
@@ -76,6 +79,8 @@
layout.setMembersMargin(10);
layout.setHeight(35);
label.setHeight(35);
+ layout.setWidth(300);
+ label.setWidth(300);
layout.addMember(label);
layout.addMember(this.form);
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java Wed May 09 16:36:55 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java Fri May 11 17:04:35 2018 +0200
@@ -27,9 +27,11 @@
import org.dive4elements.river.client.client.ui.sinfo.FlowDepthTwinPanel;
import org.dive4elements.river.client.client.ui.sq.SQPeriodPanel;
import org.dive4elements.river.client.client.ui.uinfo.InundationDurLoadEpochPanel;
+import org.dive4elements.river.client.client.ui.uinfo.LoadSedimentHeightPanel;
import org.dive4elements.river.client.client.ui.uinfo.LoadSingleEpochPanel;
import org.dive4elements.river.client.client.ui.uinfo.LoadSingleYearPanel;
-import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTable;
+import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTableEditPanel;
+import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTablePanel;
import org.dive4elements.river.client.shared.model.User;
/**
@@ -78,8 +80,10 @@
return new LinkSelection();
} else if (uiProvider.equals("continue")) {
return new ContinuePanel();
+ } else if (uiProvider.equals("uinfo.vegetationzones.table.edit")) {
+ return new VegetationzonesTableEditPanel();
} else if (uiProvider.equals("uinfo.vegetationzones.table")) {
- return new VegetationzonesTable();
+ return new VegetationzonesTablePanel();
} else if (uiProvider.equals("wsp_datacage_panel")) {
return new WspDatacagePanel(user);
} else if (uiProvider.equals("dgm_datacage_panel")) {
@@ -156,10 +160,12 @@
return new InundationDurLoadEpochPanel();
} else if (uiProvider.equals("uinfo.inundationduration.load_year_select")) {
return new LoadSingleYearPanel();
- } else if (uiProvider.equals("uinfo.inundationduration.load_epoch_select")) {
+ } else if (uiProvider.equals("uinfo.inundationduration.load_totalepoch_select")) {
return new LoadSingleEpochPanel();
} else if (uiProvider.equals("minfo.sedimentload_sqti_select")) {
return new SedLoadSQTiPanel();
+ } else if (uiProvider.equals("uinfo.sedimentheight_select")) {
+ return new LoadSedimentHeightPanel();
} else if (uiProvider.equals("hws_datacage_panel")) {
return new HWSDatacagePanel(user);
} else if (uiProvider.equals("user_rgd_panel")) {
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSedimentHeightPanel.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSedimentHeightPanel.java Fri May 11 17:04:35 2018 +0200
@@ -0,0 +1,288 @@
+/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.client.client.ui.uinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.dive4elements.river.client.client.Config;
+import org.dive4elements.river.client.client.FLYSConstants;
+import org.dive4elements.river.client.client.services.SedimentLoadInfoService;
+import org.dive4elements.river.client.client.services.SedimentLoadInfoServiceAsync;
+import org.dive4elements.river.client.client.ui.AbstractUIProvider;
+import org.dive4elements.river.client.shared.model.ArtifactDescription;
+import org.dive4elements.river.client.shared.model.Data;
+import org.dive4elements.river.client.shared.model.DataItem;
+import org.dive4elements.river.client.shared.model.DataList;
+import org.dive4elements.river.client.shared.model.DefaultData;
+import org.dive4elements.river.client.shared.model.DefaultDataItem;
+import org.dive4elements.river.client.shared.model.SedimentLoadInfoObject;
+import org.dive4elements.river.client.shared.model.SedimentLoadInfoRecord;
+
+import com.google.gwt.core.client.GWT;
+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.ListGridFieldType;
+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.IntegerItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
+import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
+
+public class LoadSedimentHeightPanel extends AbstractUIProvider {
+ private static final long serialVersionUID = 1L;
+
+ protected SedimentLoadInfoServiceAsync sedLoadInfoService = GWT.create(SedimentLoadInfoService.class); // TODO: find right datasource
+
+ private static final String datakey = "sedimentheight";
+ protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
+
+ private TextItem inputItem;
+
+ private ListGrid sedLoadTable;
+
+ protected List validInputs;
+
+ public LoadSedimentHeightPanel() {
+ }
+
+ @Override
+ public Canvas createOld(final DataList dataList) {
+ final List items = dataList.getAll();
+ final Data item = getData(items, datakey);
+ final DataItem[] alreadySetItems = item.getItems();
+
+ final String v1 = alreadySetItems[0].getStringValue().replace(" ", ", ");
+
+ final Label old = new Label(v1);
+ final HLayout layout = new HLayout();
+ layout.setWidth("400px");
+
+ final Label label = new Label(dataList.getLabel());
+ label.setWidth("200px");
+
+ final Canvas back = getBackButton(dataList.getState());
+
+ layout.addMember(label);
+ layout.addMember(old);
+ layout.addMember(back);
+
+ return layout;
+ }
+
+ @Override
+ public List validate() {
+ return validateYears();
+ }
+
+ @Override
+ public Canvas create(final DataList data) {
+ final VLayout layout = new VLayout();
+
+ final Canvas helper = createHelper();
+ this.helperContainer.addMember(helper);
+
+ final Canvas submit = getNextButton();
+ final Canvas widget = createWidget(data);
+
+ layout.addMember(widget);
+ layout.addMember(submit);
+
+ fetchSedimentLoadData();
+
+ return layout;
+ }
+
+ private Canvas createHelper() {
+ this.sedLoadTable = new ListGrid();
+ this.sedLoadTable.setShowHeaderContextMenu(false);
+ this.sedLoadTable.setWidth100();
+ this.sedLoadTable.setShowRecordComponents(true);
+ this.sedLoadTable.setShowRecordComponentsByCell(true);
+ this.sedLoadTable.setHeight100();
+ this.sedLoadTable.setEmptyMessage(this.MSG.empty_table());
+ this.sedLoadTable.setCanReorderFields(false);
+
+ final ListGridField date = new ListGridField("date", this.MSG.year());
+ date.setType(ListGridFieldType.TEXT);
+ date.setWidth(100);
+
+ final ListGridField descr = new ListGridField("description", this.MSG.description());
+ descr.setType(ListGridFieldType.TEXT);
+ descr.setWidth("*");
+
+ final String baseUrl = GWT.getHostPageBaseURL();
+ final ListGridField pinFrom = new ListGridField("fromIcon", this.MESSAGES.selection());
+ pinFrom.setWidth(60);
+ pinFrom.setType(ListGridFieldType.ICON);
+ pinFrom.setCellIcon(baseUrl + this.MESSAGES.markerGreen());
+
+ pinFrom.addRecordClickHandler(new RecordClickHandler() {
+ @Override
+ public void onRecordClick(final RecordClickEvent e) {
+ final Record r = e.getRecord();
+ appendValue(r.getAttribute("date"));
+ }
+ });
+
+ this.sedLoadTable.setFields(pinFrom, date, descr);
+ return this.sedLoadTable;
+ }
+
+ public Canvas createWidget(final DataList data) {
+ final VLayout layout = new VLayout();
+
+ final Label title = new Label(data.get(0).getDescription());
+ title.setHeight("35px");
+
+ final DynamicForm form = new DynamicForm();
+ form.setNumCols(4);
+
+ final StaticTextItem textItem = new StaticTextItem("TEST");
+ textItem.setValue("cm");
+ textItem.setShowTitle(false);
+
+ this.inputItem = new IntegerItem(this.MSG.year());
+ this.inputItem.setShowTitle(false);
+ form.setFields(this.inputItem, textItem);
+
+ layout.addMember(title);
+ layout.addMember(form);
+
+ return layout;
+ }
+
+ @Override
+ protected Data[] getData() {
+ validateYears();
+ if (this.inputItem != null && !this.inputItem.getValueAsString().isEmpty()) {
+ final List data = new ArrayList();
+
+ final DataItem yearsdata = new DefaultDataItem(datakey, datakey, this.inputItem.getValueAsString().trim()); // DATA-STRING: years (in
+ // uinfo.xml)
+ data.add(new DefaultData(datakey, null, null, new DataItem[] { yearsdata }));
+
+ return data.toArray(new Data[data.size()]);
+ }
+ return new Data[0];
+ }
+
+ protected List validateYears() {
+ final List errors = new ArrayList();
+ final NumberFormat nf = NumberFormat.getDecimalFormat();
+
+ if (this.inputItem.getValueAsString() == null || this.inputItem.getValueAsString().trim().isEmpty()) {
+ errors.add(this.MESSAGES.empty_filter());
+ return errors;
+ }
+
+ final String sValue = this.inputItem.getValueAsString();// .trim().split(" ");
+ String filtered = "";
+ int goodValues = 0;
+
+ int value = 0;
+ try {
+ value = Integer.parseInt(sValue);
+ }
+ catch (final NumberFormatException e) {
+ errors.add(this.MESSAGES.wrongFormat() + ": " + sValue);
+
+ }
+ boolean isGood = false;
+ for (final String validYear : this.validInputs) {
+ /* No list contains for strings? */
+ if (sValue.equals(validYear)) {
+ isGood = true;
+ break;
+ }
+ }
+ if (!isGood) {
+ String tmp = this.MESSAGES.no_data_for_year();
+ tmp = tmp.replace("$1", sValue);
+ errors.add(tmp);
+ // continue;
+ }
+ goodValues++;
+ if (goodValues > 1) {
+ filtered += " " + Integer.toString(value);
+ } else {
+ filtered = Integer.toString(value);
+ }
+
+ return errors;
+ }
+
+ protected void fetchSedimentLoadData() {
+ final Config config = Config.getInstance();
+ final String locale = config.getLocale();
+
+ final ArtifactDescription adescr = this.artifact.getArtifactDescription();
+ final DataList[] data = adescr.getOldData();
+
+ final double[] km = this.artifact.getArtifactDescription().getKMRange();
+ final String river = this.artifact.getArtifactDescription().getRiver();
+
+ String sq_ti_id = "";
+ this.validInputs = new ArrayList(data.length);
+ for (final DataList element : data) {
+ final Data str = getData(element.getAll(), "sq_ti_id");
+ if (str != null) {
+ final DataItem[] strItems = str.getItems();
+ sq_ti_id = strItems[0].getStringValue();
+ break;
+ }
+ }
+
+ if (sq_ti_id.isEmpty()) {
+ GWT.log("Failed to find sq time interval id in data.");
+ }
+
+ this.sedLoadInfoService.getSedimentLoadInfo(locale, river, "single", km[0], km[1], sq_ti_id, new AsyncCallback() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ GWT.log("Could not recieve sediment load informations.");
+ SC.warn(LoadSedimentHeightPanel.this.MSG.getString(caught.getMessage()));
+ }
+
+ @Override
+ public void onSuccess(final SedimentLoadInfoObject[] sedLoad) {
+ final int num = sedLoad != null ? sedLoad.length : 0;
+ GWT.log("Recieved " + num + " sediment load informations.");
+
+ if (num == 0) {
+ return;
+ }
+
+ addSedimentLoadInfo(sedLoad);
+ }
+ });
+ }
+
+ protected void addSedimentLoadInfo(final SedimentLoadInfoObject[] sedLoad) {
+ for (final SedimentLoadInfoObject sl : sedLoad) {
+ final SedimentLoadInfoRecord rec = new SedimentLoadInfoRecord(sl);
+ this.sedLoadTable.addData(rec);
+ this.validInputs.add(rec.getDate());
+ }
+ }
+
+ protected void appendValue(final String year) { // SINGLE-Input
+ final String oldYears = this.inputItem.getValueAsString();
+ this.inputItem.setValue(year);
+ }
+}
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSingleEpochPanel.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSingleEpochPanel.java Wed May 09 16:36:55 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSingleEpochPanel.java Fri May 11 17:04:35 2018 +0200
@@ -16,6 +16,7 @@
import org.dive4elements.river.client.client.services.SedimentLoadInfoService;
import org.dive4elements.river.client.client.services.SedimentLoadInfoServiceAsync;
import org.dive4elements.river.client.client.ui.AbstractUIProvider;
+import org.dive4elements.river.client.client.ui.PanelHelper;
import org.dive4elements.river.client.shared.model.ArtifactDescription;
import org.dive4elements.river.client.shared.model.Data;
import org.dive4elements.river.client.shared.model.DataItem;
@@ -30,23 +31,21 @@
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.ListGridFieldType;
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.events.ClickEvent;
-import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
public class LoadSingleEpochPanel extends AbstractUIProvider {
+ private static final long serialVersionUID = 1L;
+
protected SedimentLoadInfoServiceAsync sedLoadInfoService = GWT.create(SedimentLoadInfoService.class);
protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
@@ -59,12 +58,9 @@
protected List validYears;
public Canvas createWidget(final DataList data) {
- final HLayout input = new HLayout();
+ // final HLayout input = new HLayout();
final VLayout root = new VLayout();
- final VLayout grid = new VLayout();
- final VLayout intFields = new VLayout();
- final Button add = new Button(this.MSG.add_date());
- this.elements = new ListGrid();
+ // final VLayout intFields = new VLayout();
final Label title = new Label(data.get(0).getDescription());
title.setHeight("25px");
@@ -73,76 +69,23 @@
form.setNumCols(4);
this.start = new TextItem(this.MSG.from());
this.start.setWidth(60);
+ this.start.setValue(2000);// TODO: get minDate
+ this.start.setCanEdit(false);
this.start.setValidators(new IsIntegerValidator());
this.end = new TextItem(this.MSG.to());
this.end.setWidth(60);
this.end.setValidators(new IsIntegerValidator());
+ this.end.setCanEdit(false);
+ this.end.setValue(2005);// TODO: get maxDate
form.setFields(this.start, this.end);
- add.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent ce) {
- final String v1 = LoadSingleEpochPanel.this.start.getValueAsString();
- final String v2 = LoadSingleEpochPanel.this.end.getValueAsString();
- if (v1 == null || v2 == null) {
- return;
- }
- if (!isValidEpoch(v1, v2)) {
- return;
- }
- final ListGridRecord r = new ListGridRecord();
- r.setAttribute("from", v1);
- r.setAttribute("to", v2);
- LoadSingleEpochPanel.this.elements.addData(r);
- }
- });
-
- final Label sel = new Label(this.MSG.select());
- sel.setHeight(25);
- this.elements.setWidth(185);
- this.elements.setHeight(120);
- this.elements.setShowHeaderContextMenu(false);
- this.elements.setCanReorderFields(false);
- this.elements.setCanSort(false);
- this.elements.setCanEdit(false);
- final ListGridField from = new ListGridField("from", this.MSG.from());
- final ListGridField to = new ListGridField("to", this.MSG.to());
- from.setWidth(70);
- to.setWidth(70);
- final ListGridField removeField = new ListGridField("_removeRecord", "Remove Record") {
- {
- setType(ListGridFieldType.ICON);
- setIcon(GWT.getHostPageBaseURL() + LoadSingleEpochPanel.this.MSG.removeFeature());
- setCanEdit(false);
- setCanFilter(false);
- setCanSort(false);
- setCanGroupBy(false);
- setCanFreeze(false);
- setWidth(25);
- }
- };
+ // intFields.addMember(form);
+ // input.addMember(intFields);
+ root.addMember(title);
+ root.addMember(PanelHelper.getSpacer(10));
+ root.addMember(form);
- this.elements.addRecordClickHandler(new RecordClickHandler() {
- @Override
- public void onRecordClick(final RecordClickEvent event) {
- // Just handle remove-clicks
- if (!event.getField().getName().equals(removeField.getName())) {
- return;
- }
- event.getViewer().removeData(event.getRecord());
- }
- });
-
- this.elements.setFields(from, to, removeField);
-
- intFields.addMember(form);
- intFields.addMember(add);
- grid.addMember(sel);
- grid.addMember(this.elements);
- input.addMember(intFields);
- input.addMember(grid);
- root.addMember(title);
- root.addMember(input);
+ // root.addMember(input);
return root;
}
@@ -158,7 +101,7 @@
label.setHeight(25);
final List items = dataList.getAll();
- final Data str = getData(items, "epochs");
+ final Data str = getData(items, "totalepoch");
final DataItem[] strItems = str.getItems();
final String[] pairs = strItems[0].getLabel().split(";");
@@ -194,7 +137,7 @@
}
private Canvas createHelper() {
- this.sedLoadTable = new ListGrid();
+ this.sedLoadTable = new ListGrid(); // TODO: get minMax from right datasource
this.sedLoadTable.setShowHeaderContextMenu(false);
this.sedLoadTable.setWidth100();
this.sedLoadTable.setShowRecordComponents(true);
@@ -219,7 +162,7 @@
@Override
public void onRecordClick(final RecordClickEvent e) {
final Record r = e.getRecord();
- LoadSingleEpochPanel.this.start.setValue(r.getAttribute("date"));
+ LoadSingleEpochPanel.this.start.setValue("darf nicht geändert werden");// r.getAttribute("date"));
}
});
@@ -227,7 +170,7 @@
@Override
public void onRecordClick(final RecordClickEvent e) {
final Record r = e.getRecord();
- LoadSingleEpochPanel.this.end.setValue(r.getAttribute("date"));
+ LoadSingleEpochPanel.this.end.setValue("darf nicht geändert werden");
}
});
@@ -247,19 +190,21 @@
protected Data[] getData() {
final List data = new ArrayList();
- final ListGridRecord[] lgr = this.elements.getRecords();
- if (lgr.length == 0) {
- return new Data[0];
- }
+ // final ListGridRecord[] lgr = this.elements.getRecords();
+ // if (lgr.length == 0) {
+ // return new Data[0];
+ // }
String d = "";
- for (final ListGridRecord element : lgr) {
- final Record r = element;
- d += r.getAttribute("from") + "," + r.getAttribute("to");
- d += ";";
- }
+ // // for (final ListGridRecord element : lgr) {
+ // final Record r = element;
+ // d += r.getAttribute("from") + "," + r.getAttribute("to");
+ // d += ";";
+ // }
- final DataItem item = new DefaultDataItem("epochs", null, d);
- data.add(new DefaultData("epochs", null, null, new DataItem[] { item }));
+ d = this.start.getValueAsString() + "," + this.end.getValueAsString() + ";";
+
+ final DataItem item = new DefaultDataItem("totalepoch", null, d);
+ data.add(new DefaultData("totalepoch", null, null, new DataItem[] { item }));
return data.toArray(new Data[data.size()]);
}
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSingleYearPanel.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSingleYearPanel.java Wed May 09 16:36:55 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/LoadSingleYearPanel.java Fri May 11 17:04:35 2018 +0200
@@ -11,24 +11,6 @@
import java.util.ArrayList;
import java.util.List;
-import com.google.gwt.core.client.GWT;
-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.ListGridFieldType;
-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.TextItem;
-import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
-import com.smartgwt.client.widgets.grid.ListGrid;
-import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.layout.HLayout;
-import com.smartgwt.client.widgets.layout.VLayout;
-import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
-import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
-
import org.dive4elements.river.client.client.Config;
import org.dive4elements.river.client.client.FLYSConstants;
import org.dive4elements.river.client.client.services.SedimentLoadInfoService;
@@ -43,40 +25,55 @@
import org.dive4elements.river.client.shared.model.SedimentLoadInfoObject;
import org.dive4elements.river.client.shared.model.SedimentLoadInfoRecord;
+import com.google.gwt.core.client.GWT;
+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.ListGridFieldType;
+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.IntegerItem;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
+import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
-public class LoadSingleYearPanel
-extends AbstractUIProvider
-{
- protected SedimentLoadInfoServiceAsync sedLoadInfoService =
- GWT.create(SedimentLoadInfoService.class);
+public class LoadSingleYearPanel extends AbstractUIProvider {
+ protected SedimentLoadInfoServiceAsync sedLoadInfoService = GWT.create(SedimentLoadInfoService.class); // TODO: find right datasource
+ private static final String datakey = "singleyear";
protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
- private TextItem yearsItem;
+ private TextItem inputItem;
private ListGrid sedLoadTable;
- protected List validYears;
+ protected List validInputs;
- public LoadSingleYearPanel () {
+ public LoadSingleYearPanel() {
}
@Override
- public Canvas createOld(DataList dataList) {
- List items = dataList.getAll();
- Data years = getData(items, "years");
- DataItem[] yearsItems = years.getItems();
+ public Canvas createOld(final DataList dataList) {
+ final List items = dataList.getAll();
+ final Data item = getData(items, datakey);
+ final DataItem[] alreadySetItems = item.getItems();
- String v1 = yearsItems[0].getStringValue().replace(" ", ", ");
+ final String v1 = alreadySetItems[0].getStringValue().replace(" ", ", ");
- Label old = new Label(v1);
- HLayout layout = new HLayout();
+ final Label old = new Label(v1);
+ final HLayout layout = new HLayout();
layout.setWidth("400px");
- Label label = new Label(dataList.getLabel());
+ final Label label = new Label(dataList.getLabel());
label.setWidth("200px");
- Canvas back = getBackButton(dataList.getState());
+ final Canvas back = getBackButton(dataList.getState());
layout.addMember(label);
layout.addMember(old);
@@ -91,14 +88,14 @@
}
@Override
- public Canvas create(DataList data) {
- VLayout layout = new VLayout();
+ public Canvas create(final DataList data) {
+ final VLayout layout = new VLayout();
- Canvas helper = createHelper();
+ final Canvas helper = createHelper();
this.helperContainer.addMember(helper);
- Canvas submit = getNextButton();
- Canvas widget = createWidget(data);
+ final Canvas submit = getNextButton();
+ final Canvas widget = createWidget(data);
layout.addMember(widget);
layout.addMember(submit);
@@ -109,54 +106,52 @@
}
private Canvas createHelper() {
- sedLoadTable = new ListGrid();
- sedLoadTable.setShowHeaderContextMenu(false);
- sedLoadTable.setWidth100();
- sedLoadTable.setShowRecordComponents(true);
- sedLoadTable.setShowRecordComponentsByCell(true);
- sedLoadTable.setHeight100();
- sedLoadTable.setEmptyMessage(MSG.empty_table());
- sedLoadTable.setCanReorderFields(false);
+ this.sedLoadTable = new ListGrid();
+ this.sedLoadTable.setShowHeaderContextMenu(false);
+ this.sedLoadTable.setWidth100();
+ this.sedLoadTable.setShowRecordComponents(true);
+ this.sedLoadTable.setShowRecordComponentsByCell(true);
+ this.sedLoadTable.setHeight100();
+ this.sedLoadTable.setEmptyMessage(this.MSG.empty_table());
+ this.sedLoadTable.setCanReorderFields(false);
- ListGridField date = new ListGridField("date", MSG.year());
+ final ListGridField date = new ListGridField("date", this.MSG.year());
date.setType(ListGridFieldType.TEXT);
date.setWidth(100);
- ListGridField descr =
- new ListGridField("description", MSG.description());
+ final ListGridField descr = new ListGridField("description", this.MSG.description());
descr.setType(ListGridFieldType.TEXT);
descr.setWidth("*");
- String baseUrl = GWT.getHostPageBaseURL();
- ListGridField pinFrom = new ListGridField(
- "fromIcon", MESSAGES.selection());
- pinFrom.setWidth (60);
- pinFrom.setType (ListGridFieldType.ICON);
- pinFrom.setCellIcon(baseUrl + MESSAGES.markerGreen());
+ final String baseUrl = GWT.getHostPageBaseURL();
+ final ListGridField pinFrom = new ListGridField("fromIcon", this.MESSAGES.selection());
+ pinFrom.setWidth(60);
+ pinFrom.setType(ListGridFieldType.ICON);
+ pinFrom.setCellIcon(baseUrl + this.MESSAGES.markerGreen());
- pinFrom.addRecordClickHandler (new RecordClickHandler () {
+ pinFrom.addRecordClickHandler(new RecordClickHandler() {
@Override
- public void onRecordClick (RecordClickEvent e) {
- Record r = e.getRecord();
- appendYear(r.getAttribute("date"));
+ public void onRecordClick(final RecordClickEvent e) {
+ final Record r = e.getRecord();
+ appendValue(r.getAttribute("date"));
}
});
- sedLoadTable.setFields(pinFrom, date, descr);
- return sedLoadTable;
+ this.sedLoadTable.setFields(pinFrom, date, descr);
+ return this.sedLoadTable;
}
- public Canvas createWidget(DataList data) {
- VLayout layout = new VLayout();
+ public Canvas createWidget(final DataList data) {
+ final VLayout layout = new VLayout();
- Label title = new Label(data.get(0).getDescription());
+ final Label title = new Label(data.get(0).getDescription());
title.setHeight("25px");
- DynamicForm form = new DynamicForm();
+ final DynamicForm form = new DynamicForm();
form.setNumCols(4);
- yearsItem = new TextItem(MSG.years());
- yearsItem.setValidators(new IsIntegerValidator());
- form.setFields(yearsItem);
+ this.inputItem = new IntegerItem(this.MSG.year());
+ this.inputItem.setShowTitle(false);
+ form.setFields(this.inputItem);
layout.addMember(title);
layout.addMember(form);
@@ -167,16 +162,12 @@
@Override
protected Data[] getData() {
validateYears();
- if (yearsItem != null && !yearsItem.getValueAsString().isEmpty()) {
- List data = new ArrayList();
+ if (this.inputItem != null && !this.inputItem.getValueAsString().isEmpty()) {
+ final List data = new ArrayList();
- DataItem yearsdata = new DefaultDataItem(
- "years", "years", yearsItem.getValueAsString().trim());
- data.add(new DefaultData(
- "years",
- null,
- null,
- new DataItem[] { yearsdata }));
+ final DataItem yearsdata = new DefaultDataItem(datakey, datakey, this.inputItem.getValueAsString().trim()); // DATA-STRING: years (in
+ // uinfo.xml)
+ data.add(new DefaultData(datakey, null, null, new DataItem[] { yearsdata }));
return data.toArray(new Data[data.size()]);
}
@@ -184,113 +175,106 @@
}
protected List validateYears() {
- List errors = new ArrayList();
- NumberFormat nf = NumberFormat.getDecimalFormat();
+ final List errors = new ArrayList();
+ final NumberFormat nf = NumberFormat.getDecimalFormat();
- if (yearsItem.getValueAsString() == null ||
- yearsItem.getValueAsString().trim().isEmpty()) {
- errors.add(MESSAGES.empty_filter());
+ if (this.inputItem.getValueAsString() == null || this.inputItem.getValueAsString().trim().isEmpty()) {
+ errors.add(this.MESSAGES.empty_filter());
return errors;
}
- String [] sValues = yearsItem.getValueAsString().trim().split(" ");
+ final String sValue = this.inputItem.getValueAsString();// .trim().split(" ");
String filtered = "";
int goodValues = 0;
- for (String sValue: sValues) {
- int value;
- try {
- value = Integer.parseInt(sValue);
- } catch (NumberFormatException e) {
- errors.add(MESSAGES.wrongFormat() + ": " + sValue);
- continue;
+
+ int value = 0;
+ try {
+ value = Integer.parseInt(sValue);
+ }
+ catch (final NumberFormatException e) {
+ errors.add(this.MESSAGES.wrongFormat() + ": " + sValue);
+
+ }
+ boolean isGood = false;
+ for (final String validYear : this.validInputs) {
+ /* No list contains for strings? */
+ if (sValue.equals(validYear)) {
+ isGood = true;
+ break;
}
- boolean isGood = false;
- for (String validYear: validYears) {
- /* No list contains for strings? */
- if (sValue.equals(validYear)) {
- isGood = true;
- break;
- }
- }
- if (!isGood) {
- String tmp = MESSAGES.no_data_for_year();
- tmp = tmp.replace("$1", sValue);
- errors.add(tmp);
- continue;
- }
- goodValues++;
- if (goodValues > 1) {
- filtered += " " + Integer.toString(value);
- } else {
- filtered = Integer.toString(value);
- }
+ }
+ if (!isGood) {
+ String tmp = this.MESSAGES.no_data_for_year();
+ tmp = tmp.replace("$1", sValue);
+ errors.add(tmp);
+ // continue;
+ }
+ goodValues++;
+ if (goodValues > 1) {
+ filtered += " " + Integer.toString(value);
+ } else {
+ filtered = Integer.toString(value);
}
return errors;
}
- protected void fetchSedimentLoadData() {
- Config config = Config.getInstance();
- String locale = config.getLocale ();
+ protected void fetchSedimentLoadData() {
+ final Config config = Config.getInstance();
+ final String locale = config.getLocale();
- ArtifactDescription adescr = artifact.getArtifactDescription();
- DataList[] data = adescr.getOldData();
+ final ArtifactDescription adescr = this.artifact.getArtifactDescription();
+ final DataList[] data = adescr.getOldData();
- double[] km = artifact.getArtifactDescription().getKMRange();
- String river = artifact.getArtifactDescription().getRiver();
+ final double[] km = this.artifact.getArtifactDescription().getKMRange();
+ final String river = this.artifact.getArtifactDescription().getRiver();
String sq_ti_id = "";
- validYears = new ArrayList(data.length);
- for (int i = 0; i < data.length; i++) {
- Data str = getData(data[i].getAll(), "sq_ti_id");
+ this.validInputs = new ArrayList(data.length);
+ for (final DataList element : data) {
+ final Data str = getData(element.getAll(), "sq_ti_id");
if (str != null) {
- DataItem[] strItems = str.getItems();
+ final DataItem[] strItems = str.getItems();
sq_ti_id = strItems[0].getStringValue();
break;
}
}
- if (sq_ti_id.isEmpty()){
+ if (sq_ti_id.isEmpty()) {
GWT.log("Failed to find sq time interval id in data.");
}
- sedLoadInfoService.getSedimentLoadInfo(
- locale, river, "single", km[0], km[1], sq_ti_id,
- new AsyncCallback() {
- public void onFailure(Throwable caught) {
- GWT.log("Could not recieve sediment load informations.");
- SC.warn(MSG.getString(caught.getMessage()));
+ this.sedLoadInfoService.getSedimentLoadInfo(locale, river, "single", km[0], km[1], sq_ti_id, new AsyncCallback() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ GWT.log("Could not recieve sediment load informations.");
+ SC.warn(LoadSingleYearPanel.this.MSG.getString(caught.getMessage()));
+ }
+
+ @Override
+ public void onSuccess(final SedimentLoadInfoObject[] sedLoad) {
+ final int num = sedLoad != null ? sedLoad.length : 0;
+ GWT.log("Recieved " + num + " sediment load informations.");
+
+ if (num == 0) {
+ return;
}
- public void onSuccess(SedimentLoadInfoObject[] sedLoad) {
- int num = sedLoad != null ? sedLoad.length :0;
- GWT.log("Recieved " + num + " sediment load informations.");
-
- if (num == 0) {
- return;
- }
-
- addSedimentLoadInfo(sedLoad);
- }
+ addSedimentLoadInfo(sedLoad);
}
- );
+ });
}
-
- protected void addSedimentLoadInfo (SedimentLoadInfoObject[] sedLoad) {
- for(SedimentLoadInfoObject sl: sedLoad) {
- SedimentLoadInfoRecord rec = new SedimentLoadInfoRecord(sl);
- sedLoadTable.addData(rec);
- validYears.add(rec.getDate());
+ protected void addSedimentLoadInfo(final SedimentLoadInfoObject[] sedLoad) {
+ for (final SedimentLoadInfoObject sl : sedLoad) {
+ final SedimentLoadInfoRecord rec = new SedimentLoadInfoRecord(sl);
+ this.sedLoadTable.addData(rec);
+ this.validInputs.add(rec.getDate());
}
}
- protected void appendYear (String year) {
- String oldYears = yearsItem.getValueAsString();
- if (oldYears != null && !oldYears.isEmpty()) {
- yearsItem.setValue(oldYears.trim() + " " + year);
- } else {
- yearsItem.setValue(year);
- }
+ protected void appendValue(final String year) { // SINGLE-Input
+ final String oldYears = this.inputItem.getValueAsString();
+ this.inputItem.setValue(year);
}
}
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTable.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTable.java Wed May 09 16:36:55 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
- * Software engineering by Intevation GmbH
- *
- * This file is Free Software under the GNU AGPL (>=v3)
- * and comes with ABSOLUTELY NO WARRANTY! Check out the
- * documentation coming with Dive4Elements River for details.
- */
-
-package org.dive4elements.river.client.client.ui.uinfo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.dive4elements.river.client.client.ui.AbstractUIProvider;
-import org.dive4elements.river.client.shared.model.Data;
-import org.dive4elements.river.client.shared.model.DataItem;
-import org.dive4elements.river.client.shared.model.DataList;
-import org.dive4elements.river.client.shared.model.DefaultData;
-import org.dive4elements.river.client.shared.model.DefaultDataItem;
-
-import com.google.gwt.core.client.GWT;
-import com.smartgwt.client.data.Record;
-import com.smartgwt.client.types.ListGridFieldType;
-import com.smartgwt.client.widgets.Button;
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.Label;
-import com.smartgwt.client.widgets.events.ClickEvent;
-import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.form.DynamicForm;
-import com.smartgwt.client.widgets.form.fields.TextItem;
-import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
-import com.smartgwt.client.widgets.form.validator.IsStringValidator;
-import com.smartgwt.client.widgets.form.validator.Validator;
-import com.smartgwt.client.widgets.grid.ListGrid;
-import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
-import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
-import com.smartgwt.client.widgets.layout.HLayout;
-import com.smartgwt.client.widgets.layout.VLayout;
-
-public class VegetationzonesTable extends AbstractUIProvider {
- private static final long serialVersionUID = 1L;
-
- protected ListGrid elements;
- private TextItem vegzone;
- private TextItem start;
- private TextItem end;
- private ListGrid table;
-
- private TextItem createItem(final String identifier, final String title, final int width, final Validator... validator) {
- final TextItem item = new TextItem(identifier, title);
- item.setWidth(width);
- item.setWrapTitle(false);
- item.setValidators(validator);// eigentlich überflüssig, oder?
- return item;
- }
-
- public Canvas createWidget(final DataList data) {
-
- final VLayout root = new VLayout();
- final HLayout input = new HLayout();
- final VLayout tableLayout = new VLayout();
- final HLayout fields = new HLayout();
- final HLayout fields2 = new HLayout();
- final VLayout spacer = new VLayout();
- spacer.setHeight(10);
-
- final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific
- this.elements = new ListGrid();
-
- final Label title = new Label(data.get(0).getDescription());
- title.setHeight("35px"); // orig:25
-
- this.vegzone = createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator());
- this.start = createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator());
- this.end = createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator());
-
- final DynamicForm form1 = new DynamicForm();
- final DynamicForm form2 = new DynamicForm();
- form2.setNumCols(5);
- form1.setNumCols(7);
- form1.setFields(this.vegzone);
- form2.setFields(this.start, this.end);
-
- add.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent ce) {
- final String v1 = VegetationzonesTable.this.start.getValueAsString();
- final String v2 = VegetationzonesTable.this.end.getValueAsString();
- final String v3 = VegetationzonesTable.this.vegzone.getValueAsString();
- if (v1 == null || v2 == null || v3 == null) {
- return;
- }
-
- final ListGridRecord r = new ListGridRecord();
- r.setAttribute("vegzone", v3);
- r.setAttribute("from", v1);
- r.setAttribute("to", v2);
- VegetationzonesTable.this.elements.addData(r);
- }
- });
-
- final Label sel = new Label(this.MSG.select());
- sel.setHeight(25);
- this.elements.setWidth(450); // 185
- this.elements.setHeight(500); // 120
- this.elements.setShowHeaderContextMenu(false);
- this.elements.setCanReorderFields(false);
- this.elements.setCanSort(false);
- this.elements.setCanEdit(false);
- final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label());
- final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from());
- final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to());
- vegzone.setWidth(285);
- from.setWidth(70);
- to.setWidth(70);
-
- final ListGridField removeField = new ListGridField("_removeRecord", "Remove Record") {
- {
- setType(ListGridFieldType.ICON);
- setIcon(GWT.getHostPageBaseURL() + VegetationzonesTable.this.MSG.removeFeature());
- setCanEdit(false);
- setCanFilter(false);
- setCanSort(false);
- setCanGroupBy(false);
- setCanFreeze(false);
- setWidth(25);
- }
- };
-
- this.elements.addRecordClickHandler(new RecordClickHandler() {
- @Override
- public void onRecordClick(final RecordClickEvent event) {
- // Just handle remove-clicks
- if (!event.getField().getName().equals(removeField.getName())) {
- return;
- }
- event.getViewer().removeData(event.getRecord());
- }
- });
-
- this.elements.setFields(vegzone, from, to, removeField);
-
- fields.addMember(form1);
- fields2.addMember(form2);
- // fields2.addMember(add);
-
- tableLayout.addMember(this.elements);
- root.addMember(title);
- root.addMember(input);
- root.addMember(tableLayout);
- root.addMember(spacer);
- root.addMember(fields);
- root.addMember(fields2);
- root.addMember(spacer);
- root.addMember(add);
- root.addMember(spacer);
- root.addMember(spacer);
-
- return root;
- }
-
- @Override
- public Canvas createOld(final DataList dataList) {
- final HLayout layout = new HLayout();
- layout.setWidth("400px");
- final VLayout vLayout = new VLayout();
- vLayout.setWidth(130);
- final Label label = new Label(dataList.getLabel());
- label.setWidth("200px");
- label.setHeight(25);
-
- final List items = dataList.getAll();
- final Data str = getData(items, "vegzones");
- final DataItem[] strItems = str.getItems();
-
- final String[] entries = strItems[0].getLabel().split(";");
- for (final String entry : entries) {
- final String[] vals = entry.split(",");
- final Label dateLabel = new Label(vals[0] + " - " + vals[1]);
- dateLabel.setHeight(20);
- vLayout.addMember(dateLabel);
- }
- final Canvas back = getBackButton(dataList.getState());
- layout.addMember(label);
- layout.addMember(vLayout);
- layout.addMember(back);
-
- return layout;
- }
-
- @Override
- public Canvas create(final DataList data) {
- final VLayout layout = new VLayout();
- final Canvas helper = createHelper();
- this.helperContainer.addMember(helper);
-
- final Canvas submit = getNextButton();
- final Canvas widget = createWidget(data);
-
- layout.addMember(widget);
- layout.addMember(submit); // TODO: SUBMIT
-
- // fetchSedimentLoadData(); //TODO: feed from database...
-
- return layout;
- }
-
- private Canvas createHelper() {
- this.table = new ListGrid();
- this.table.setShowHeaderContextMenu(false);
- this.table.setWidth100();
- this.table.setShowRecordComponents(true);
- this.table.setShowRecordComponentsByCell(true);
- this.table.setHeight100();
- this.table.setEmptyMessage(this.MSG.empty_table());
- this.table.setCanReorderFields(false);
-
- /* Input support pins */
- // final String baseUrl = GWT.getHostPageBaseURL();
- // final ListGridField pinFrom = new ListGridField("fromIcon", this.MSG.uinfo_vegetation_zones_from());
- // pinFrom.setWidth(300);
- // pinFrom.setType(ListGridFieldType.ICON);
- // pinFrom.setCellIcon(baseUrl + this.MSG.markerGreen());
- //
- // final ListGridField pinTo = new ListGridField("toIcon", this.MSG.uinfo_vegetation_zones_to());
- // pinTo.setType(ListGridFieldType.ICON);
- // pinTo.setWidth(300);
- // pinTo.setCellIcon(baseUrl + this.MSG.markerRed());
- //
- // pinFrom.addRecordClickHandler(new RecordClickHandler() {
- // @Override
- // public void onRecordClick(final RecordClickEvent e) {
- // final Record r = e.getRecord();
- // VegetationzonesTable.this.vegzone.setValue(r.getAttribute("date")); // date??
- // }
- // });
- //
- // pinFrom.addRecordClickHandler(new RecordClickHandler() {
- // @Override
- // public void onRecordClick(final RecordClickEvent e) {
- // final Record r = e.getRecord();
- // VegetationzonesTable.this.start.setValue(r.getAttribute("date"));
- // }
- // });
- //
- // pinTo.addRecordClickHandler(new RecordClickHandler() {
- // @Override
- // public void onRecordClick(final RecordClickEvent e) {
- // final Record r = e.getRecord();
- // VegetationzonesTable.this.end.setValue(r.getAttribute("date"));
- // }
- // });
- //
- // final ListGridField date = new ListGridField("date", this.MSG.year());
- // date.setType(ListGridFieldType.TEXT);
- // date.setWidth(100);
- //
- // final ListGridField descr = new ListGridField("description", this.MSG.description());
- // descr.setType(ListGridFieldType.TEXT);
- // descr.setWidth("*");
- //
- // this.table.setFields(pinFrom, pinTo, date, descr);
- return this.table;
- }
-
- @Override
- protected Data[] getData() {
- final List data = new ArrayList();
-
- final ListGridRecord[] lgr = this.elements.getRecords();
- if (lgr.length == 0) {
- return new Data[0];
- }
- String d = "";
- for (final ListGridRecord element : lgr) {
- final Record r = element;
- d += r.getAttribute("vegzone") + "," + r.getAttribute("from") + "," + r.getAttribute("to");
- d += ";";
- }
-
- final DataItem item = new DefaultDataItem("vegzones", null, d); // DATA-key
- data.add(new DefaultData("vegzones", null, null, new DataItem[] { item }));
- return data.toArray(new Data[data.size()]);
- }
-
-}
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTableEditPanel.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTableEditPanel.java Fri May 11 17:04:35 2018 +0200
@@ -0,0 +1,279 @@
+/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.client.client.ui.uinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.dive4elements.river.client.client.ui.AbstractUIProvider;
+import org.dive4elements.river.client.client.ui.PanelHelper;
+import org.dive4elements.river.client.shared.model.Data;
+import org.dive4elements.river.client.shared.model.DataItem;
+import org.dive4elements.river.client.shared.model.DataList;
+import org.dive4elements.river.client.shared.model.DefaultData;
+import org.dive4elements.river.client.shared.model.DefaultDataItem;
+
+import com.google.gwt.core.client.GWT;
+import com.smartgwt.client.data.Record;
+import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.widgets.Button;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Label;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
+import com.smartgwt.client.widgets.form.validator.IsStringValidator;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
+import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
+
+public class VegetationzonesTableEditPanel extends AbstractUIProvider {
+ private static final long serialVersionUID = 1L;
+
+ protected ListGrid elements;
+ private TextItem vegzone;
+ private TextItem start;
+ private TextItem end;
+ private ListGrid table;
+
+ private static final String datakey = "vegzones";
+
+ public Canvas createWidget(final DataList data) {
+
+ final VLayout root = new VLayout();
+ final HLayout input = new HLayout();
+ final VLayout tableLayout = new VLayout();
+ final HLayout fields = new HLayout();
+ final HLayout fields2 = new HLayout();
+
+ final Button add = new Button(this.MSG.add_date()); // TODO: make key more generic or change to more specific
+ this.elements = new ListGrid();
+
+ final Label title = new Label(data.get(0).getDescription());
+ title.setHeight("35px"); // orig:25
+
+ this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator());
+ this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator());
+ this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator());
+
+ final DynamicForm form1 = new DynamicForm();
+ final DynamicForm form2 = new DynamicForm();
+ form2.setNumCols(5);
+ form1.setNumCols(7);
+ form1.setFields(this.vegzone);
+ form2.setFields(this.start, this.end);
+
+ add.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent ce) {
+ final String v1 = VegetationzonesTableEditPanel.this.start.getValueAsString();
+ final String v2 = VegetationzonesTableEditPanel.this.end.getValueAsString();
+ final String v3 = VegetationzonesTableEditPanel.this.vegzone.getValueAsString();
+ if (v1 == null || v2 == null || v3 == null) {
+ return;
+ }
+
+ final ListGridRecord r = new ListGridRecord();
+ r.setAttribute("vegzone", v3);
+ r.setAttribute("from", v1);
+ r.setAttribute("to", v2);
+ VegetationzonesTableEditPanel.this.elements.addData(r);
+ }
+ });
+
+ final Label sel = new Label(this.MSG.select());
+ sel.setHeight(25);
+ this.elements.setWidth(450); // 185
+ this.elements.setHeight(500); // 120
+ this.elements.setShowHeaderContextMenu(false);
+ this.elements.setCanReorderFields(false);
+ this.elements.setCanSort(false);
+ this.elements.setCanEdit(false);
+ final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label());
+ final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from());
+ final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to());
+ vegzone.setWidth(285);
+ from.setWidth(70);
+ to.setWidth(70);
+
+ final ListGridField removeField = new ListGridField("_removeRecord", "Remove Record") {
+ {
+ setType(ListGridFieldType.ICON);
+ setIcon(GWT.getHostPageBaseURL() + VegetationzonesTableEditPanel.this.MSG.removeFeature());
+ setCanEdit(false);
+ setCanFilter(false);
+ setCanSort(false);
+ setCanGroupBy(false);
+ setCanFreeze(false);
+ setWidth(25);
+ }
+ };
+
+ this.elements.addRecordClickHandler(new RecordClickHandler() {
+ @Override
+ public void onRecordClick(final RecordClickEvent event) {
+ // Just handle remove-clicks
+ if (!event.getField().getName().equals(removeField.getName())) {
+ return;
+ }
+ event.getViewer().removeData(event.getRecord());
+ }
+ });
+
+ this.elements.setFields(vegzone, from, to, removeField);
+
+ fields.addMember(form1);
+ fields2.addMember(form2);
+ // fields2.addMember(add);
+
+ tableLayout.addMember(this.elements);
+ root.addMember(title);
+ root.addMember(input);
+ root.addMember(tableLayout);
+ root.addMember(PanelHelper.getSpacer(10));
+ root.addMember(fields);
+ root.addMember(fields2);
+ root.addMember(PanelHelper.getSpacer(10));
+ root.addMember(add);
+ root.addMember(PanelHelper.getSpacer(20));
+
+ return root;
+ }
+
+ @Override
+ public Canvas createOld(final DataList dataList) {
+ final HLayout layout = new HLayout();
+ layout.setWidth("400px");
+ final VLayout vLayout = new VLayout();
+ vLayout.setWidth(130);
+ final Label label = new Label(dataList.getLabel());
+ label.setWidth("200px");
+ label.setHeight(25);
+
+ final List items = dataList.getAll();
+ final Data str = getData(items, datakey);
+ final DataItem[] strItems = str.getItems();
+
+ final String[] entries = strItems[0].getLabel().split(";");
+ for (final String entry : entries) {
+ final String[] vals = entry.split(",");
+ final Label dateLabel = new Label(vals[0] + " - " + vals[1]);
+ dateLabel.setHeight(20);
+ vLayout.addMember(dateLabel);
+ }
+ final Canvas back = getBackButton(dataList.getState());
+ layout.addMember(label);
+ layout.addMember(vLayout);
+ layout.addMember(back);
+
+ return layout;
+ }
+
+ @Override
+ public Canvas create(final DataList data) {
+ final VLayout layout = new VLayout();
+ final Canvas helper = createHelper();
+ this.helperContainer.addMember(helper);
+
+ final Canvas submit = getNextButton();
+ final Canvas widget = createWidget(data);
+
+ layout.addMember(widget);
+ layout.addMember(submit); // TODO: SUBMIT
+
+ // fetchSedimentLoadData(); //TODO: feed from database...
+
+ return layout;
+ }
+
+ private Canvas createHelper() {
+ this.table = new ListGrid();
+ this.table.setShowHeaderContextMenu(false);
+ this.table.setWidth100();
+ this.table.setShowRecordComponents(true);
+ this.table.setShowRecordComponentsByCell(true);
+ this.table.setHeight100();
+ this.table.setEmptyMessage(this.MSG.empty_table());
+ this.table.setCanReorderFields(false);
+
+ /* Input support pins */
+ // final String baseUrl = GWT.getHostPageBaseURL();
+ // final ListGridField pinFrom = new ListGridField("fromIcon", this.MSG.uinfo_vegetation_zones_from());
+ // pinFrom.setWidth(300);
+ // pinFrom.setType(ListGridFieldType.ICON);
+ // pinFrom.setCellIcon(baseUrl + this.MSG.markerGreen());
+ //
+ // final ListGridField pinTo = new ListGridField("toIcon", this.MSG.uinfo_vegetation_zones_to());
+ // pinTo.setType(ListGridFieldType.ICON);
+ // pinTo.setWidth(300);
+ // pinTo.setCellIcon(baseUrl + this.MSG.markerRed());
+ //
+ // pinFrom.addRecordClickHandler(new RecordClickHandler() {
+ // @Override
+ // public void onRecordClick(final RecordClickEvent e) {
+ // final Record r = e.getRecord();
+ // VegetationzonesTableEditPanel.this.vegzone.setValue(r.getAttribute("date")); // date??
+ // }
+ // });
+ //
+ // pinFrom.addRecordClickHandler(new RecordClickHandler() {
+ // @Override
+ // public void onRecordClick(final RecordClickEvent e) {
+ // final Record r = e.getRecord();
+ // VegetationzonesTableEditPanel.this.start.setValue(r.getAttribute("date"));
+ // }
+ // });
+ //
+ // pinTo.addRecordClickHandler(new RecordClickHandler() {
+ // @Override
+ // public void onRecordClick(final RecordClickEvent e) {
+ // final Record r = e.getRecord();
+ // VegetationzonesTableEditPanel.this.end.setValue(r.getAttribute("date"));
+ // }
+ // });
+ //
+ // final ListGridField date = new ListGridField("date", this.MSG.year());
+ // date.setType(ListGridFieldType.TEXT);
+ // date.setWidth(100);
+ //
+ // final ListGridField descr = new ListGridField("description", this.MSG.description());
+ // descr.setType(ListGridFieldType.TEXT);
+ // descr.setWidth("*");
+ //
+ // this.table.setFields(pinFrom, pinTo, date, descr);
+ return this.table;
+ }
+
+ @Override
+ protected Data[] getData() {
+ final List data = new ArrayList();
+
+ final ListGridRecord[] lgr = this.elements.getRecords();
+ if (lgr.length == 0) {
+ return new Data[0];
+ }
+ String d = "";
+ for (final ListGridRecord element : lgr) {
+ final Record r = element;
+ d += r.getAttribute("vegzone") + "," + r.getAttribute("from") + "," + r.getAttribute("to");
+ d += ";";
+ }
+
+ final DataItem item = new DefaultDataItem(datakey, null, d); // DATA-key
+ data.add(new DefaultData(datakey, null, null, new DataItem[] { item }));
+ return data.toArray(new Data[data.size()]);
+ }
+
+}
diff -r 58af9b81a97b -r b5d7a9d79837 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTablePanel.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/VegetationzonesTablePanel.java Fri May 11 17:04:35 2018 +0200
@@ -0,0 +1,257 @@
+/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU AGPL (>=v3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out the
+ * documentation coming with Dive4Elements River for details.
+ */
+
+package org.dive4elements.river.client.client.ui.uinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.dive4elements.river.client.client.ui.AbstractUIProvider;
+import org.dive4elements.river.client.client.ui.PanelHelper;
+import org.dive4elements.river.client.shared.model.Data;
+import org.dive4elements.river.client.shared.model.DataItem;
+import org.dive4elements.river.client.shared.model.DataList;
+import org.dive4elements.river.client.shared.model.DefaultData;
+import org.dive4elements.river.client.shared.model.DefaultDataItem;
+
+import com.smartgwt.client.data.Record;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.Label;
+import com.smartgwt.client.widgets.form.fields.TextItem;
+import com.smartgwt.client.widgets.form.validator.IsIntegerValidator;
+import com.smartgwt.client.widgets.form.validator.IsStringValidator;
+import com.smartgwt.client.widgets.grid.ListGrid;
+import com.smartgwt.client.widgets.grid.ListGridField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.VLayout;
+
+public class VegetationzonesTablePanel extends AbstractUIProvider {
+ private static final long serialVersionUID = 1L;
+
+ protected ListGrid elements;
+ private TextItem vegzone;
+ private TextItem start;
+ private TextItem end;
+ private ListGrid table;
+
+ private static final String datakey = "vegzones";
+
+ public Canvas createWidget(final DataList data) {
+
+ final VLayout root = new VLayout();
+ final HLayout input = new HLayout();
+ final VLayout tableLayout = new VLayout();
+
+ this.elements = new ListGrid();
+
+ final Label title = new Label(data.get(0).getDescription());
+ title.setHeight("35px"); // orig:25
+
+ this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator());
+ this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator());
+ this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator());
+
+ final Label sel = new Label(this.MSG.select());
+ sel.setHeight(25);
+ this.elements.setWidth(450); // 185
+ this.elements.setHeight(500); // 120
+ this.elements.setShowHeaderContextMenu(false);
+ this.elements.setCanReorderFields(false);
+ this.elements.setCanSort(false);
+ this.elements.setCanEdit(false);
+ final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label());
+ final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from());
+ final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to());
+ vegzone.setWidth(285);
+ from.setWidth(70);
+ to.setWidth(70);
+
+ for (final Data dataItem : data.getAll()) {
+ createEntry(dataItem);
+ }
+
+ this.elements.setFields(vegzone, from, to);
+
+ tableLayout.addMember(this.elements);
+ root.addMember(title);
+ root.addMember(input);
+ root.addMember(tableLayout);
+ root.addMember(PanelHelper.getSpacer(10));
+
+ return root;
+ }
+
+ private void createEntry(final Data data) {
+
+ if (data.getItems() != null) {
+ for (final DataItem dataItem : data.getItems()) {
+ if (dataItem.getStringValue() != null) {
+ if (dataItem.getStringValue().contains(",")) {
+ final String[] vals = dataItem.getStringValue().split(",");
+ if (vals.length == 3) {
+ final String vegzone = vals[0];
+ final String from = vals[1];
+ final String to = vals[2];
+
+ if (vegzone == null || from == null || to == null) {
+ return;
+ }
+
+ final ListGridRecord r = new ListGridRecord();
+ r.setAttribute("vegzone", vegzone);
+ r.setAttribute("from", from);
+ r.setAttribute("to", to);
+ this.elements.addData(r);
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public Canvas createOld(final DataList dataList) { // TODO: Veg-Table übersichtlich oben anzeigen, irgendwie abkürzen (etwa "20 Einträge")
+ final HLayout layout = new HLayout();
+ layout.setWidth("400px");
+ final VLayout vLayout = new VLayout();
+ vLayout.setWidth(130);
+ final Label label = new Label(dataList.getLabel());
+ label.setWidth("200px");
+ label.setHeight(25);
+
+ final List items = dataList.getAll();
+ final Data str = getData(items, datakey);
+ final DataItem[] strItems = str.getItems();
+
+ final String[] entries = strItems[0].getLabel().split(";");
+ for (final String entry : entries) {
+ final String[] vals = entry.split(",");
+ final Label dateLabel = new Label(vals[0] + " TODO: MAKE SELECTED ENTRIES VEGZONE FOR ARTIFACT" + vals[1]);
+ dateLabel.setHeight(20);
+ vLayout.addMember(dateLabel);
+ }
+ final Canvas back = getBackButton(dataList.getState());
+ layout.addMember(label);
+ layout.addMember(vLayout);
+ layout.addMember(back);
+
+ return layout;
+ }
+
+ @Override
+ public Canvas create(final DataList data) {
+ final VLayout layout = new VLayout();
+ final Canvas helper = createHelper();
+ this.helperContainer.addMember(helper);
+
+ final Canvas submit = getNextButton();
+ // if (data.size() == 0) { // TODO: GET DATA
+
+ data.add(getDummyData());
+
+ // }
+ final Canvas widget = createWidget(data);
+
+ layout.addMember(widget);
+ layout.addMember(submit); // TODO: SUBMIT
+
+ // fetchSedimentLoadData(); //TODO: feed from database...
+
+ return layout;
+ }
+
+ private Canvas createHelper() {
+ this.table = new ListGrid();
+ this.table.setShowHeaderContextMenu(false);
+ this.table.setWidth100();
+ this.table.setShowRecordComponents(true);
+ this.table.setShowRecordComponentsByCell(true);
+ this.table.setHeight100();
+ this.table.setEmptyMessage(this.MSG.empty_table());
+ this.table.setCanReorderFields(false);
+
+ /* Input support pins */
+ // final String baseUrl = GWT.getHostPageBaseURL();
+ // final ListGridField pinFrom = new ListGridField("fromIcon", this.MSG.uinfo_vegetation_zones_from());
+ // pinFrom.setWidth(300);
+ // pinFrom.setType(ListGridFieldType.ICON);
+ // pinFrom.setCellIcon(baseUrl + this.MSG.markerGreen());
+ //
+ // final ListGridField pinTo = new ListGridField("toIcon", this.MSG.uinfo_vegetation_zones_to());
+ // pinTo.setType(ListGridFieldType.ICON);
+ // pinTo.setWidth(300);
+ // pinTo.setCellIcon(baseUrl + this.MSG.markerRed());
+ //
+ // pinFrom.addRecordClickHandler(new RecordClickHandler() {
+ // @Override
+ // public void onRecordClick(final RecordClickEvent e) {
+ // final Record r = e.getRecord();
+ // VegetationzonesTableEditPanel.this.vegzone.setValue(r.getAttribute("date")); // date??
+ // }
+ // });
+ //
+ // pinFrom.addRecordClickHandler(new RecordClickHandler() {
+ // @Override
+ // public void onRecordClick(final RecordClickEvent e) {
+ // final Record r = e.getRecord();
+ // VegetationzonesTableEditPanel.this.start.setValue(r.getAttribute("date"));
+ // }
+ // });
+ //
+ // pinTo.addRecordClickHandler(new RecordClickHandler() {
+ // @Override
+ // public void onRecordClick(final RecordClickEvent e) {
+ // final Record r = e.getRecord();
+ // VegetationzonesTableEditPanel.this.end.setValue(r.getAttribute("date"));
+ // }
+ // });
+ //
+ // final ListGridField date = new ListGridField("date", this.MSG.year());
+ // date.setType(ListGridFieldType.TEXT);
+ // date.setWidth(100);
+ //
+ // final ListGridField descr = new ListGridField("description", this.MSG.description());
+ // descr.setType(ListGridFieldType.TEXT);
+ // descr.setWidth("*");
+ //
+ // this.table.setFields(pinFrom, pinTo, date, descr);
+ return this.table;
+ }
+
+ @Override
+ protected Data[] getData() {
+ final List data = new ArrayList();
+
+ final ListGridRecord[] lgr = this.elements.getRecords();
+ if (lgr.length == 0) {
+ return getDummyData();// return new Data[0];
+ }
+ String d = "";
+ for (final ListGridRecord element : lgr) {
+ final Record r = element;
+ d += r.getAttribute("vegzone") + "," + r.getAttribute("from") + "," + r.getAttribute("to");
+ d += ";";
+ }
+
+ final DataItem item = new DefaultDataItem(datakey, null, d); // DATA-key
+ data.add(new DefaultData(datakey, null, null, new DataItem[] { item }));
+ return data.toArray(new Data[data.size()]);
+ }
+
+ private Data[] getDummyData() {
+ final List data = new ArrayList();
+ String d = "";
+ d = d + "Zonaler Wald" + "," + "0" + "," + "5";
+ final DataItem item = new DefaultDataItem(datakey, "entryDescription", d); // DATA-key
+ data.add(new DefaultData(datakey, null, null, new DataItem[] { item }));
+ return data.toArray(new Data[data.size()]);
+ }
+
+}