# HG changeset patch # User Andre Heinecke # Date 1424186251 -3600 # Node ID f7d1a7e66b1283398d42e21fe81e026cc392af4a # Parent 76a2268942c63c74970ef614236276f7ea536e0f (issue1795) Handle modules configuration for any module diff -r 76a2268942c6 -r f7d1a7e66b12 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java Tue Feb 17 12:36:13 2015 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ModuleSelection.java Tue Feb 17 16:17:31 2015 +0100 @@ -62,8 +62,7 @@ /** The ModuleService used to retrieve the available modules of a user.*/ protected ModuleServiceAsync moduleService = GWT.create(ModuleService.class); - private List fixRivers; - private List minfoRivers; + private Map > modulesRiverMap; protected Map rivers; /** @@ -71,9 +70,7 @@ */ public ModuleSelection() { rivers = null; - //TODO: put all the rivers into a config file, or something. - fixRivers = new ArrayList(); - minfoRivers = new ArrayList(); + modulesRiverMap = new LinkedHashMap >(); readModules(); } @@ -123,6 +120,29 @@ }); } + private void checkRivers(String selected) { + if (selected == null) { + selected = getSelectedModule(); + } + if (rivers != null && !rivers.isEmpty() && modules != null && selected != null) { + List allowedRivers = modulesRiverMap.get(selected); + if ( allowedRivers == null ) { + GWT.log("No configured rivers for module: " + selected); + } + for (Map.Entry s: rivers.entrySet()) { + if ( allowedRivers == null ) { + s.getValue().hide(); + continue; + } + if (!allowedRivers.contains(s.getKey())) { + s.getValue().hide(); + } else { + s.getValue().show(); + } + } + } + } + private void setModules() { LinkedHashMap values = new LinkedHashMap(); @@ -135,21 +155,13 @@ radio.setDefaultValue(module.getName()); } } - if (module.getName().equals("fixanalysis")) { - for (String river: module.getRivers()) { - fixRivers.add(river); - } - } - if (module.getName().equals("minfo")) { - for (String river: module.getRivers()) { - minfoRivers.add(river); - } - } + modulesRiverMap.put(module.getName(), module.getRivers()); } } if (radio != null) { radio.setValueMap(values); } + checkRivers(null); } /** @@ -167,20 +179,7 @@ radio.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { - String selected = (String)event.getValue(); - if (!rivers.isEmpty()) { - for (Map.Entry s: rivers.entrySet()) { - if (selected.equals("minfo") && !minfoRivers.contains(s.getKey())) { - s.getValue().hide(); - } - else if (selected.equals("fixanalysis") && !fixRivers.contains(s.getKey())) { - s.getValue().hide(); - } - else { - s.getValue().show(); - } - } - } + checkRivers((String)event.getValue()); } }); @@ -232,6 +231,9 @@ }-*/; private static String getSelectedModule() { + if (radio == null) { + return null; + } return radio.getValueAsString(); } }