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 :

http://dive4elements.wald.intevation.org