Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
9230:6a1580b38e7d | 9231:082e8e808902 |
---|---|
12 import java.util.List; | 12 import java.util.List; |
13 | 13 |
14 import org.dive4elements.river.client.client.FLYSConstants; | 14 import org.dive4elements.river.client.client.FLYSConstants; |
15 import org.dive4elements.river.client.client.ui.DatacagePairWidget.IDatacagePairControler; | 15 import org.dive4elements.river.client.client.ui.DatacagePairWidget.IDatacagePairControler; |
16 import org.dive4elements.river.client.client.ui.DatacageWidget; | 16 import org.dive4elements.river.client.client.ui.DatacageWidget; |
17 import org.dive4elements.river.client.client.ui.DatacageWidget.DatacageFilter; | |
18 import org.dive4elements.river.client.shared.model.AttrList; | |
19 import org.dive4elements.river.client.shared.model.DataCageNode; | |
17 | 20 |
18 import com.smartgwt.client.data.DataSource; | 21 import com.smartgwt.client.data.DataSource; |
19 import com.smartgwt.client.data.DataSourceField; | 22 import com.smartgwt.client.data.DataSourceField; |
20 import com.smartgwt.client.types.Alignment; | 23 import com.smartgwt.client.types.Alignment; |
21 import com.smartgwt.client.types.FieldType; | 24 import com.smartgwt.client.types.FieldType; |
49 } | 52 } |
50 | 53 |
51 @Override | 54 @Override |
52 public void setup(final DatacageWidget soundingWidget, final DatacageWidget waterlevelWidget, final HLayout toolbarLayout) { | 55 public void setup(final DatacageWidget soundingWidget, final DatacageWidget waterlevelWidget, final HLayout toolbarLayout) { |
53 | 56 |
57 /* do not show ever any soundings that do not have a year */ | |
58 soundingWidget.setFilter(new DatacageFilter() { | |
59 @Override | |
60 public boolean accept(final DataCageNode node) { | |
61 | |
62 final AttrList attributes = node.getAttributes(); | |
63 if (WaterlevelSoundingYearFilter.isFolder(attributes)) | |
64 return true; | |
65 | |
66 final String year = attributes.getValue(WaterlevelSoundingSelectionController.ATTRIBUTE_YEAR); | |
67 | |
68 final Integer waterlevelYear = WaterlevelSoundingYearFilter.parseYear(year); | |
69 if (waterlevelYear == null) { | |
70 // should never happen, we should only show waterlevels that have a year | |
71 return false; | |
72 } | |
73 | |
74 return true; | |
75 } | |
76 }); | |
77 | |
78 /* react to selections of a sounding */ | |
54 soundingWidget.getTreeGrid().addSelectionUpdatedHandler(new SelectionUpdatedHandler() { | 79 soundingWidget.getTreeGrid().addSelectionUpdatedHandler(new SelectionUpdatedHandler() { |
55 | 80 |
56 @Override | 81 @Override |
57 public void onSelectionUpdated(final SelectionUpdatedEvent event) { | 82 public void onSelectionUpdated(final SelectionUpdatedEvent event) { |
58 final List<TreeNode> selection = soundingWidget.getPlainSelection(); | 83 final List<TreeNode> selection = soundingWidget.getPlainSelection(); |
59 handleSoundingChanged(waterlevelWidget, selection); | 84 handleSoundingChanged(waterlevelWidget, selection); |
60 } | 85 } |
61 }); | 86 }); |
62 | 87 |
88 /* check box to deactivate intellicence */ | |
63 final DynamicForm form = createIntelligenCheckbox(); | 89 final DynamicForm form = createIntelligenCheckbox(); |
64 toolbarLayout.addMember(form); | 90 toolbarLayout.addMember(form); |
65 form.addItemChangedHandler(new ItemChangedHandler() { | 91 form.addItemChangedHandler(new ItemChangedHandler() { |
66 | 92 |
67 @Override | 93 @Override |
70 checkboxToggled(value); | 96 checkboxToggled(value); |
71 handleSoundingChanged(waterlevelWidget, soundingWidget.getPlainSelection()); | 97 handleSoundingChanged(waterlevelWidget, soundingWidget.getPlainSelection()); |
72 } | 98 } |
73 }); | 99 }); |
74 | 100 |
75 /* init to current selection */ | 101 /* initialize by applying the current selection */ |
76 handleSoundingChanged(waterlevelWidget, soundingWidget.getPlainSelection()); | 102 handleSoundingChanged(waterlevelWidget, soundingWidget.getPlainSelection()); |
77 } | 103 } |
78 | 104 |
79 private DynamicForm createIntelligenCheckbox() { | 105 private DynamicForm createIntelligenCheckbox() { |
80 | 106 |
102 | 128 |
103 protected final void handleSoundingChanged(final DatacageWidget waterlevelWidget, final List<TreeNode> selection) { | 129 protected final void handleSoundingChanged(final DatacageWidget waterlevelWidget, final List<TreeNode> selection) { |
104 | 130 |
105 if (this.turnFilterOff) { | 131 if (this.turnFilterOff) { |
106 waterlevelWidget.setFilter(DatacageWidget.ACCEPT_ALL_FILTER); | 132 waterlevelWidget.setFilter(DatacageWidget.ACCEPT_ALL_FILTER); |
107 waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.databasket_loading()); | 133 waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.databasket_empty()); |
108 return; | 134 return; |
109 } | 135 } |
110 | 136 |
111 // more than one should never happen, as the have single selection | 137 // more than one should never happen, as the bedhhave single selection |
112 final TreeNode soundingNode = selection.isEmpty() ? null : selection.get(0); | 138 final TreeNode soundingNode = selection.isEmpty() ? null : selection.get(0); |
113 | 139 |
114 if (soundingNode == null || soundingNode.getAttribute("factory") == null) { | 140 if (soundingNode == null || soundingNode.getAttribute("factory") == null) { |
115 waterlevelWidget.setFilter(DatacageWidget.ACCEPT_NONE_FILTER); | 141 waterlevelWidget.setFilter(DatacageWidget.ACCEPT_NONE_FILTER); |
116 waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.sinfo_sounding_waterlevel_select_waterlevel()); | 142 waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.sinfo_sounding_waterlevel_select_waterlevel()); |
117 return; | 143 return; |
118 } | 144 } |
119 | 145 |
120 final Integer soundingYear = getYear(soundingNode); | 146 final Integer soundingYear = WaterlevelSoundingYearFilter.parseYear(soundingNode.getAttribute(ATTRIBUTE_YEAR)); |
121 | 147 |
122 if (soundingYear == null) { | 148 if (soundingYear == null) { |
123 // should never happen, as we should only show soundings that actually have a year | 149 // should never happen, as we should only show soundings that actually have a year |
124 waterlevelWidget.setFilter(DatacageWidget.ACCEPT_NONE_FILTER); | 150 waterlevelWidget.setFilter(DatacageWidget.ACCEPT_NONE_FILTER); |
125 waterlevelWidget.getTreeGrid().setEmptyMessage("Der gewählte Wassrspiegel hat keine Informations zum Jahr"); | 151 waterlevelWidget.getTreeGrid().setEmptyMessage("Die gewählte Peilung hat keine Informations zum Jahr"); |
126 } else | 152 } else { |
127 waterlevelWidget.setFilter(new WaterlevelSoundingYearFilter(soundingYear)); | 153 waterlevelWidget.setFilter(new WaterlevelSoundingYearFilter(soundingYear)); |
128 } | 154 waterlevelWidget.getTreeGrid().setEmptyMessage(this.msg.databasket_empty()); |
129 | |
130 private static Integer getYear(final TreeNode soundingNode) { | |
131 final String year = soundingNode.getAttribute(ATTRIBUTE_YEAR); | |
132 if (year == null || year.trim().isEmpty()) | |
133 return null; | |
134 | |
135 try { | |
136 return Integer.valueOf(year); | |
137 } | |
138 catch (final NumberFormatException e) { | |
139 e.printStackTrace(); | |
140 return null; | |
141 } | 155 } |
142 } | 156 } |
143 } | 157 } |