comparison flys-client/src/main/java/de/intevation/flys/client/client/ui/DatacageWidget.java @ 5488:6ec7c8ebb2c9

DatacageWidget: Use ScreenLock when loading dc data, solves flys/issue1152 .
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 28 Mar 2013 09:29:42 +0100
parents f2371f3aaf03
children 6958479ec92d
comparison
equal deleted inserted replaced
5487:a87fe0d2c928 5488:6ec7c8ebb2c9
22 import de.intevation.flys.client.client.FLYSConstants; 22 import de.intevation.flys.client.client.FLYSConstants;
23 import de.intevation.flys.client.client.event.DatacageDoubleClickHandler; 23 import de.intevation.flys.client.client.event.DatacageDoubleClickHandler;
24 import de.intevation.flys.client.client.event.DatacageHandler; 24 import de.intevation.flys.client.client.event.DatacageHandler;
25 import de.intevation.flys.client.client.services.MetaDataService; 25 import de.intevation.flys.client.client.services.MetaDataService;
26 import de.intevation.flys.client.client.services.MetaDataServiceAsync; 26 import de.intevation.flys.client.client.services.MetaDataServiceAsync;
27 import de.intevation.flys.client.client.ui.ScreenLock;
27 import de.intevation.flys.client.shared.model.Artifact; 28 import de.intevation.flys.client.shared.model.Artifact;
28 import de.intevation.flys.client.shared.model.AttrList; 29 import de.intevation.flys.client.shared.model.AttrList;
29 import de.intevation.flys.client.shared.model.DataCageNode; 30 import de.intevation.flys.client.shared.model.DataCageNode;
30 import de.intevation.flys.client.shared.model.DataCageTree; 31 import de.intevation.flys.client.shared.model.DataCageTree;
31 import de.intevation.flys.client.shared.model.ToLoad; 32 import de.intevation.flys.client.shared.model.ToLoad;
62 63
63 protected ToLoad toLoad; 64 protected ToLoad toLoad;
64 65
65 protected List<DatacageHandler> handlers; 66 protected List<DatacageHandler> handlers;
66 protected List<DatacageDoubleClickHandler> doubleHandlers; 67 protected List<DatacageDoubleClickHandler> doubleHandlers;
68
69 /** Layout to show spinning wheel of joy. */
70 protected VLayout lockScreen;
67 71
68 72
69 public DatacageWidget() { 73 public DatacageWidget() {
70 handlers = new ArrayList<DatacageHandler>(); 74 handlers = new ArrayList<DatacageHandler>();
71 doubleHandlers = new ArrayList<DatacageDoubleClickHandler>(); 75 doubleHandlers = new ArrayList<DatacageDoubleClickHandler>();
166 } 170 }
167 171
168 triggerTreeBuilding(); 172 triggerTreeBuilding();
169 } 173 }
170 174
175 public void lockUI() {
176 lockScreen = ScreenLock.lockUI(this, lockScreen);
177 }
178
179 /** Enable input, remove grey, remove spinning wheel of joy. */
180 public void unlockUI() {
181 ScreenLock.unlockUI(this, lockScreen);
182 }
171 183
172 /** 184 /**
173 * @param handler Handler to be added (notified on add-action). 185 * @param handler Handler to be added (notified on add-action).
174 */ 186 */
175 public DatacageWidget(Artifact artifact, User user, String outs, 187 public DatacageWidget(Artifact artifact, User user, String outs,
380 String locale = config.getLocale(); 392 String locale = config.getLocale();
381 393
382 String artifactId = artifact.getUuid(); 394 String artifactId = artifact.getUuid();
383 String userId = (user != null) ? user.identifier() : null; 395 String userId = (user != null) ? user.identifier() : null;
384 396
397 lockUI();
398
385 metaDataService.getMetaData( 399 metaDataService.getMetaData(
386 locale, 400 locale,
387 artifactId, 401 artifactId,
388 userId, 402 userId,
389 outs, 403 outs,
391 new AsyncCallback<DataCageTree>() { 405 new AsyncCallback<DataCageTree>() {
392 @Override 406 @Override
393 public void onFailure(Throwable caught) { 407 public void onFailure(Throwable caught) {
394 GWT.log("Could not load meta data."); 408 GWT.log("Could not load meta data.");
395 SC.warn(caught.getMessage()); 409 SC.warn(caught.getMessage());
410 unlockUI();
396 } 411 }
397 412
398 @Override 413 @Override
399 public void onSuccess(DataCageTree dcTree) { 414 public void onSuccess(DataCageTree dcTree) {
400 GWT.log("Successfully loaded meta data."); 415 GWT.log("Successfully loaded meta data.");
414 429
415 if (idGenerator.current() < MAX_OPEN) { 430 if (idGenerator.current() < MAX_OPEN) {
416 tree.openAll(); 431 tree.openAll();
417 } 432 }
418 treeGrid.setData(tree); 433 treeGrid.setData(tree);
434 unlockUI();
419 } 435 }
420 }); 436 });
421 } 437 }
422 438
423 private static final class IdGenerator { 439 private static final class IdGenerator {

http://dive4elements.wald.intevation.org