@Override
 public void run() {
   GuiHelper.runInEDTAndWait(
       () -> {
         model.setMode(SaveLayersModel.Mode.UPLOADING_AND_SAVING);
         List<SaveLayerInfo> toUpload = model.getLayersToUpload();
         if (!toUpload.isEmpty()) {
           uploadLayers(toUpload);
         }
         List<SaveLayerInfo> toSave = model.getLayersToSave();
         if (!toSave.isEmpty()) {
           saveLayers(toSave);
         }
         model.setMode(SaveLayersModel.Mode.EDITING_DATA);
         if (model.hasUnsavedData()) {
           warnBecauseOfUnsavedData();
           model.setMode(Mode.EDITING_DATA);
           if (canceled) {
             setUserAction(UserAction.CANCEL);
             closeDialog();
           }
         } else {
           setUserAction(UserAction.PROCEED);
           closeDialog();
         }
       });
   worker.shutdownNow();
 }
 @Override
 public void tableChanged(TableModelEvent arg0) {
   boolean dis = model.getLayersToSave().isEmpty() && model.getLayersToUpload().isEmpty();
   if (saveAndProceedActionButton != null) {
     saveAndProceedActionButton.setEnabled(!dis);
   }
   saveAndProceedAction.redrawIcon();
 }