Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java @ 9231:082e8e808902
Finetuning intelligent waterlevel-sounding select.
Soundings without year are never shown.
All involed datacage elements are assumed to have a 'year' attribute
author | gernotbelger |
---|---|
date | Fri, 06 Jul 2018 13:09:25 +0200 |
parents | 84397da33d17 |
children | 83ef08b5e1ac |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java Fri Jul 06 13:08:15 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/WaterlevelSoundingSelectionController.java Fri Jul 06 13:09:25 2018 +0200 @@ -14,6 +14,9 @@ import org.dive4elements.river.client.client.FLYSConstants; import org.dive4elements.river.client.client.ui.DatacagePairWidget.IDatacagePairControler; import org.dive4elements.river.client.client.ui.DatacageWidget; +import org.dive4elements.river.client.client.ui.DatacageWidget.DatacageFilter; +import org.dive4elements.river.client.shared.model.AttrList; +import org.dive4elements.river.client.shared.model.DataCageNode; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.DataSourceField; @@ -51,6 +54,28 @@ @Override public void setup(final DatacageWidget soundingWidget, final DatacageWidget waterlevelWidget, final HLayout toolbarLayout) { + /* do not show ever any soundings that do not have a year */ + soundingWidget.setFilter(new DatacageFilter() { + @Override + public boolean accept(final DataCageNode node) { + + final AttrList attributes = node.getAttributes(); + if (WaterlevelSoundingYearFilter.isFolder(attributes)) + return true; + + final String year = attributes.getValue(WaterlevelSoundingSelectionController.ATTRIBUTE_YEAR); + + final Integer waterlevelYear = WaterlevelSoundingYearFilter.parseYear(year); + if (waterlevelYear == null) { + // should never happen, we should only show waterlevels that have a year + return false; + } + + return true; + } + }); + + /* react to selections of a sounding */ soundingWidget.getTreeGrid().addSelectionUpdatedHandler(new SelectionUpdatedHandler() { @Override @@ -60,6 +85,7 @@ } }); + /* check box to deactivate intellicence */ final DynamicForm form = createIntelligenCheckbox(); toolbarLayout.addMember(form); form.addItemChangedHandler(new ItemChangedHandler() { @@ -72,7 +98,7 @@ } }); - /* init to current selection */ + /* initialize by applying the current selection */ handleSoundingChanged(waterlevelWidget, soundingWidget.getPlainSelection()); } @@ -104,11 +130,11 @@ if (this.turnFilterOff) { waterlevelWidget.setFilter(DatacageWidget.ACCEPT_ALL_FILTER); - waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.databasket_loading()); + waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.databasket_empty()); return; } - // more than one should never happen, as the have single selection + // more than one should never happen, as the bedhhave single selection final TreeNode soundingNode = selection.isEmpty() ? null : selection.get(0); if (soundingNode == null || soundingNode.getAttribute("factory") == null) { @@ -117,27 +143,15 @@ return; } - final Integer soundingYear = getYear(soundingNode); + final Integer soundingYear = WaterlevelSoundingYearFilter.parseYear(soundingNode.getAttribute(ATTRIBUTE_YEAR)); if (soundingYear == null) { // should never happen, as we should only show soundings that actually have a year waterlevelWidget.setFilter(DatacageWidget.ACCEPT_NONE_FILTER); - waterlevelWidget.getTreeGrid().setEmptyMessage("Der gewählte Wassrspiegel hat keine Informations zum Jahr"); - } else + waterlevelWidget.getTreeGrid().setEmptyMessage("Die gewählte Peilung hat keine Informations zum Jahr"); + } else { waterlevelWidget.setFilter(new WaterlevelSoundingYearFilter(soundingYear)); - } - - private static Integer getYear(final TreeNode soundingNode) { - final String year = soundingNode.getAttribute(ATTRIBUTE_YEAR); - if (year == null || year.trim().isEmpty()) - return null; - - try { - return Integer.valueOf(year); - } - catch (final NumberFormatException e) { - e.printStackTrace(); - return null; + waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.databasket_empty()); } } } \ No newline at end of file