Mercurial > dive4elements > river
comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java @ 8528:f7d1a7e66b12
(issue1795) Handle modules configuration for any module
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Tue, 17 Feb 2015 16:17:31 +0100 |
parents | 4d74d09228f0 |
children | 4c15f98be26c |
comparison
equal
deleted
inserted
replaced
8527:76a2268942c6 | 8528:f7d1a7e66b12 |
---|---|
60 protected Module[] modules; | 60 protected Module[] modules; |
61 | 61 |
62 /** The ModuleService used to retrieve the available modules of a user.*/ | 62 /** The ModuleService used to retrieve the available modules of a user.*/ |
63 protected ModuleServiceAsync moduleService = GWT.create(ModuleService.class); | 63 protected ModuleServiceAsync moduleService = GWT.create(ModuleService.class); |
64 | 64 |
65 private List<String> fixRivers; | 65 private Map<String, List<String> > modulesRiverMap; |
66 private List<String> minfoRivers; | |
67 protected Map<String, HLayout> rivers; | 66 protected Map<String, HLayout> rivers; |
68 | 67 |
69 /** | 68 /** |
70 * The default constructor. | 69 * The default constructor. |
71 */ | 70 */ |
72 public ModuleSelection() { | 71 public ModuleSelection() { |
73 rivers = null; | 72 rivers = null; |
74 //TODO: put all the rivers into a config file, or something. | 73 modulesRiverMap = new LinkedHashMap<String, List<String> >(); |
75 fixRivers = new ArrayList<String>(); | |
76 minfoRivers = new ArrayList<String>(); | |
77 | 74 |
78 readModules(); | 75 readModules(); |
79 } | 76 } |
80 | 77 |
81 | 78 |
119 GWT.log("Retrieved " + newmodules.length + " modules."); | 116 GWT.log("Retrieved " + newmodules.length + " modules."); |
120 modules = newmodules; | 117 modules = newmodules; |
121 setModules(); | 118 setModules(); |
122 } | 119 } |
123 }); | 120 }); |
121 } | |
122 | |
123 private void checkRivers(String selected) { | |
124 if (selected == null) { | |
125 selected = getSelectedModule(); | |
126 } | |
127 if (rivers != null && !rivers.isEmpty() && modules != null && selected != null) { | |
128 List<String> allowedRivers = modulesRiverMap.get(selected); | |
129 if ( allowedRivers == null ) { | |
130 GWT.log("No configured rivers for module: " + selected); | |
131 } | |
132 for (Map.Entry<String, HLayout> s: rivers.entrySet()) { | |
133 if ( allowedRivers == null ) { | |
134 s.getValue().hide(); | |
135 continue; | |
136 } | |
137 if (!allowedRivers.contains(s.getKey())) { | |
138 s.getValue().hide(); | |
139 } else { | |
140 s.getValue().show(); | |
141 } | |
142 } | |
143 } | |
124 } | 144 } |
125 | 145 |
126 private void setModules() { | 146 private void setModules() { |
127 LinkedHashMap<String, String> values = new LinkedHashMap<String, String>(); | 147 LinkedHashMap<String, String> values = new LinkedHashMap<String, String>(); |
128 | 148 |
133 GWT.log("Module " + module.getName() + " is selected."); | 153 GWT.log("Module " + module.getName() + " is selected."); |
134 if (radio != null) { | 154 if (radio != null) { |
135 radio.setDefaultValue(module.getName()); | 155 radio.setDefaultValue(module.getName()); |
136 } | 156 } |
137 } | 157 } |
138 if (module.getName().equals("fixanalysis")) { | 158 modulesRiverMap.put(module.getName(), module.getRivers()); |
139 for (String river: module.getRivers()) { | |
140 fixRivers.add(river); | |
141 } | |
142 } | |
143 if (module.getName().equals("minfo")) { | |
144 for (String river: module.getRivers()) { | |
145 minfoRivers.add(river); | |
146 } | |
147 } | |
148 } | 159 } |
149 } | 160 } |
150 if (radio != null) { | 161 if (radio != null) { |
151 radio.setValueMap(values); | 162 radio.setValueMap(values); |
152 } | 163 } |
164 checkRivers(null); | |
153 } | 165 } |
154 | 166 |
155 /** | 167 /** |
156 * Creates a widget that displays a checkbox for each module. | 168 * Creates a widget that displays a checkbox for each module. |
157 * | 169 * |
165 | 177 |
166 radio = new RadioGroupItem("plugin"); | 178 radio = new RadioGroupItem("plugin"); |
167 radio.addChangeHandler(new ChangeHandler() { | 179 radio.addChangeHandler(new ChangeHandler() { |
168 @Override | 180 @Override |
169 public void onChange(ChangeEvent event) { | 181 public void onChange(ChangeEvent event) { |
170 String selected = (String)event.getValue(); | 182 checkRivers((String)event.getValue()); |
171 if (!rivers.isEmpty()) { | |
172 for (Map.Entry<String, HLayout> s: rivers.entrySet()) { | |
173 if (selected.equals("minfo") && !minfoRivers.contains(s.getKey())) { | |
174 s.getValue().hide(); | |
175 } | |
176 else if (selected.equals("fixanalysis") && !fixRivers.contains(s.getKey())) { | |
177 s.getValue().hide(); | |
178 } | |
179 else { | |
180 s.getValue().show(); | |
181 } | |
182 } | |
183 } | |
184 } | 183 } |
185 }); | 184 }); |
186 | 185 |
187 label.setWidth(50); | 186 label.setWidth(50); |
188 label.setHeight(25); | 187 label.setHeight(25); |
230 private native void createCallback() /*-{ | 229 private native void createCallback() /*-{ |
231 $wnd.getModule = @org.dive4elements.river.client.client.ui.ModuleSelection::getSelectedModule(); | 230 $wnd.getModule = @org.dive4elements.river.client.client.ui.ModuleSelection::getSelectedModule(); |
232 }-*/; | 231 }-*/; |
233 | 232 |
234 private static String getSelectedModule() { | 233 private static String getSelectedModule() { |
234 if (radio == null) { | |
235 return null; | |
236 } | |
235 return radio.getValueAsString(); | 237 return radio.getValueAsString(); |
236 } | 238 } |
237 } | 239 } |
238 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 240 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |