Changeset 6965 in josm for trunk


Ignore:
Timestamp:
2014-04-09T23:03:16+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #8047 - fix EDT violation in save/upload dialog

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java

    r6889 r6965  
    4848import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    4949import org.openstreetmap.josm.gui.progress.SwingRenderingProgressMonitor;
     50import org.openstreetmap.josm.gui.util.GuiHelper;
    5051import org.openstreetmap.josm.tools.ImageProvider;
    5152import org.openstreetmap.josm.tools.WindowGeometry;
     
    5354public class SaveLayersDialog extends JDialog implements TableModelListener {
    5455    public static enum UserAction {
    55         /**
    56          * save/upload layers was successful, proceed with operation
    57          */
     56        /** save/upload layers was successful, proceed with operation */
    5857        PROCEED,
    59         /**
    60          * save/upload of layers was not successful or user canceled operation
    61          */
     58        /** save/upload of layers was not successful or user canceled operation */
    6259        CANCEL
    6360    }
     
    286283    }
    287284
     285    /**
     286     * Closes this dialog and frees all native screen resources.
     287     */
    288288    public void closeDialog() {
    289289        setVisible(false);
     
    556556        @Override
    557557        public void run() {
    558             model.setMode(SaveLayersModel.Mode.UPLOADING_AND_SAVING);
    559             List<SaveLayerInfo> toUpload = model.getLayersToUpload();
    560             if (!toUpload.isEmpty()) {
    561                 uploadLayers(toUpload);
    562             }
    563             List<SaveLayerInfo> toSave = model.getLayersToSave();
    564             if (!toSave.isEmpty()) {
    565                 saveLayers(toSave);
    566             }
    567             model.setMode(SaveLayersModel.Mode.EDITING_DATA);
    568             if (model.hasUnsavedData()) {
    569                 warnBecauseOfUnsavedData();
    570                 model.setMode(Mode.EDITING_DATA);
    571                 if (canceled) {
    572                     setUserAction(UserAction.CANCEL);
    573                     closeDialog();
    574                 }
    575             } else {
    576                 setUserAction(UserAction.PROCEED);
    577                 closeDialog();
    578             }
     558            GuiHelper.runInEDTAndWait(new Runnable() {
     559                @Override
     560                public void run() {
     561                    model.setMode(SaveLayersModel.Mode.UPLOADING_AND_SAVING);
     562                    List<SaveLayerInfo> toUpload = model.getLayersToUpload();
     563                    if (!toUpload.isEmpty()) {
     564                        uploadLayers(toUpload);
     565                    }
     566                    List<SaveLayerInfo> toSave = model.getLayersToSave();
     567                    if (!toSave.isEmpty()) {
     568                        saveLayers(toSave);
     569                    }
     570                    model.setMode(SaveLayersModel.Mode.EDITING_DATA);
     571                    if (model.hasUnsavedData()) {
     572                        warnBecauseOfUnsavedData();
     573                        model.setMode(Mode.EDITING_DATA);
     574                        if (canceled) {
     575                            setUserAction(UserAction.CANCEL);
     576                            closeDialog();
     577                        }
     578                    } else {
     579                        setUserAction(UserAction.PROCEED);
     580                        closeDialog();
     581                    }
     582                }
     583            });
    579584        }
    580585
Note: See TracChangeset for help on using the changeset viewer.