private void submitJob() { mask(); final Map<String, String> jobProperties; try { jobProperties = calculateJobProperties(); } catch (JobCreationException e) { unmask(); e.printStackTrace(); Window.alert(e.getLocalizedMessage()); return; } final MessageBox box = MessageBox.progress( "Please wait", "Submitting job " + jobProperties.get(Constants.JOBNAME_KEY) + "...", "Initializing..."); final ProgressBar bar = box.getProgressBar(); final Timer t = new Timer() { float i; @Override public void run() { GrisuClientService.Util.getInstance() .getCurrentStatus( jobProperties.get(Constants.JOBNAME_KEY), new AsyncCallback<DtoActionStatus>() { public void onFailure(Throwable arg0) { box.close(); unmask(); cancel(); arg0.printStackTrace(); } public void onSuccess(DtoActionStatus arg0) { try { if (arg0 != null && arg0.getFinished()) { box.close(); unmask(); cancel(); if (!arg0.getFailed()) { UserEnvironment.getInstance() .setUserProperty( Constants.DEFAULT_VERSION + lastCalculatedExecutable, jobProperties.get(Constants.APPLICATIONVERSION_KEY)); } } if (arg0 == null) { bar.updateProgress(0, "Contacting..."); return; } double current = arg0.getCurrentElements(); double total = arg0.getTotalElements(); bar.updateProgress( current / total, arg0.getLog().get(arg0.getLog().size() - 1).getLogMessage()); } catch (Exception e) { e.printStackTrace(); } } }); } }; t.scheduleRepeating(500); UserEnvironment.getInstance().submitJob(jobProperties); }