comparison gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java @ 8874:7ebe5d463740

Fixed some minro layout problems and initial selection.
author gernotbelger
date Wed, 07 Feb 2018 18:04:53 +0100
parents 60278b5fe4d9
children fe207a8699f7
comparison
equal deleted inserted replaced
8873:b78aad3bcf70 8874:7ebe5d463740
150 } 150 }
151 } 151 }
152 152
153 protected final void setModules(Module[] newmodules) { 153 protected final void setModules(Module[] newmodules) {
154 modulesRiverMap.clear(); 154 modulesRiverMap.clear();
155 155
156 if( newmodules == null ) 156 if( newmodules == null )
157 return; 157 return;
158 158
159 for(final Module module : newmodules) { 159 for(final Module module : newmodules) {
160 final String name = module.getName(); 160 final String name = module.getName();
161 161
162 /* remember rivers per module */ 162 /* remember rivers per module */
163 modulesRiverMap.put(name, module.getRivers()); 163 modulesRiverMap.put(name, module.getRivers());
164 164
165 /* hash by name */ 165 /* hash by name */
166 modulesByName.put(name, module); 166 modulesByName.put(name, module);
167 167
168 /* hash by group */ 168 /* hash by group */
169 final ModuleGroup group = module.getGroup(); 169 final ModuleGroup group = module.getGroup();
170 if( !modulesByGroup.containsKey( group ) ) 170 if( !modulesByGroup.containsKey( group ) )
171 modulesByGroup.put(group, new LinkedList<Module>()); 171 modulesByGroup.put(group, new LinkedList<Module>());
172 172
173 final List<Module> modulesGroup = modulesByGroup.get(group); 173 final List<Module> modulesGroup = modulesByGroup.get(group);
174 modulesGroup.add(module); 174 modulesGroup.add(module);
175 } 175 }
176 } 176 }
177 177
190 label.setWidth(50); 190 label.setWidth(50);
191 label.setHeight(25); 191 label.setHeight(25);
192 192
193 layout.addMember(label); 193 layout.addMember(label);
194 layout.addMember(radioPanel); 194 layout.addMember(radioPanel);
195 195
196 updateRadioPanels(); 196 updateRadioPanels();
197 197
198 return layout; 198 return layout;
199 } 199 }
200 200
201 protected final void updateRadioPanels() { 201 protected final void updateRadioPanels() {
202 202
219 for (final Entry<ModuleGroup, List<Module>> groupEntry : modulesByGroup.entrySet()) { 219 for (final Entry<ModuleGroup, List<Module>> groupEntry : modulesByGroup.entrySet()) {
220 220
221 final ModuleGroup group = groupEntry.getKey(); 221 final ModuleGroup group = groupEntry.getKey();
222 final List<Module> groupModule = groupEntry.getValue(); 222 final List<Module> groupModule = groupEntry.getValue();
223 223
224 final HLayout groupPanel = new HLayout(); 224
225
226 if( group.showGroupFrame() )
227 {
228 final LayoutSpacer spacer = new LayoutSpacer();
229 spacer.setWidth(25);
230 groupPanel.addMember(spacer);
231
232 final Label label = new Label(group.toString());
233 label.setWidth(25);
234 label.setHeight(25);
235 groupPanel.addMember(label);
236 }
237
238 final DynamicForm groupForm = new DynamicForm();
239
240 final RadioGroupItem moduleRadio = new RadioGroupItem("modulegroup" + count++); 225 final RadioGroupItem moduleRadio = new RadioGroupItem("modulegroup" + count++);
241 moduleRadio.setShowTitle(false); 226 moduleRadio.setShowTitle(false);
242 moduleRadio.setVertical(true); 227 moduleRadio.setWrap(false);
243 228
244 moduleRadio.addChangeHandler(new ChangeHandler() { 229 moduleRadio.addChangeHandler(new ChangeHandler() {
245 @Override 230 @Override
246 public void onChange(ChangeEvent event) { 231 public void onChange(ChangeEvent event) {
247 final String selectedModuleName = (String) event.getValue(); 232 final String selectedModuleName = (String) event.getValue();
248 handleModuleSelected(selectedModuleName); 233 handleModuleSelected(selectedModuleName);
249 } 234 }
250 }); 235 });
251 236
252 groupForm.setItems(moduleRadio); 237 Module selected = null;
253 groupPanel.addMember(groupForm);
254
255 final LinkedHashMap<String, String> values = new LinkedHashMap<String, String>(); 238 final LinkedHashMap<String, String> values = new LinkedHashMap<String, String>();
256 for(final Module module : groupModule) { 239 for(final Module module : groupModule) {
257 values.put(module.getName(), module.getLocalizedName()); 240 values.put(module.getName(), module.getLocalizedName());
258 if (module.isSelected()) { 241 if (module.isSelected()) {
259 GWT.log("Module " + module.getName() + " is selected."); 242 GWT.log("Module " + module.getName() + " is selected.");
260 selectedModule = module; 243 selectedModule = module;
261 moduleRadio.setValue(module.getName()); 244 selected = module;
262 } 245 }
263 } 246 }
247 moduleRadio.setValueMap(values);
248
249 final DynamicForm groupForm = new DynamicForm();
250 groupForm.setItems(moduleRadio);
251 groupForm.setColWidths(60,"*");
252
253 final Canvas groupPanel;
254 if( group.showGroupFrame() )
255 {
256 final HLayout layout = new HLayout();
257
258 final LayoutSpacer spacer = new LayoutSpacer();
259 // so text is on the same level as other items (with radio-icon), lets hope 25px is always right
260 spacer.setWidth(25);
261 layout.addMember(spacer);
262
263 final Label label = new Label(group.toString());
264 layout.addMember(label);
265
266 layout.addMember(groupForm);
267
268 groupPanel = layout;
269 }
270 else
271 groupPanel = groupForm;
264 272
265 this.groupToRadios.put( group, moduleRadio ); 273 this.groupToRadios.put( group, moduleRadio );
266 this.groupToCanvas.put( group, groupPanel ); 274 this.groupToCanvas.put( group, groupPanel );
267 275
268 moduleRadio.setValueMap(values); 276 /* selection must be done after value-map was set; and, only if the selection holds for this group */
269 277 if( selected != null )
278 moduleRadio.setValue(selected.getName());
270 279
271 radioPanel.addMember(groupPanel); 280 radioPanel.addMember(groupPanel);
272 } 281 }
273 282
274 checkRivers(getSelectedModule()); 283 checkRivers(getSelectedModule());

http://dive4elements.wald.intevation.org