Changeset 2253 in josm


Ignore:
Timestamp:
2009-10-06T23:52:41+02:00 (15 years ago)
Author:
Gubaer
Message:

Improved dialogs in the context of conflict resolution.
Improved support for online help in the context of conflict resolution, see also info about conflicts

Location:
trunk/src/org/openstreetmap/josm
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java

    r2017 r2253  
    3535
    3636    public DownloadReferrersAction() {
    37         super(tr("Download referrers from OSM..."), "downloadreferrers", tr("Download primitives referring to one of the selected primitives"),
    38                 Shortcut.registerShortcut("file:downloadreferrers", tr("File: {0}", tr("Download referrers...")), KeyEvent.VK_D, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY), true);
     37        super(tr("Download parent ways/relations..."), "downloadreferrers", tr("Download primitives referring to one of the selected primitives"),
     38                Shortcut.registerShortcut("file:downloadreferrers", tr("File: {0}", tr("Download parent ways/relations ...")), KeyEvent.VK_D, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY), true);
    3939    }
    4040
  • trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java

    r2025 r2253  
    1717public class UpdateDataAction extends JosmAction{
    1818    public UpdateDataAction() {
    19         super(tr("Update Data"),
     19        super(tr("Update data"),
    2020                "updatedata",
    21                 tr("Updates the current data layer from the server (re-downloads data)"),
     21                tr("Updates the objects in the current data layer from the server "),
    2222                Shortcut.registerShortcut("file:updatedata",
    2323                        tr("Update Data"),
  • trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java

    r2077 r2253  
    8787     */
    8888    public UpdateSelectionAction() {
    89         super(tr("Update Selection"),
     89        super(tr("Update selections"),
    9090                "updateselection",
    91                 tr("Updates the currently selected primitives from the server"),
     91                tr("Updates the currently selected objects from the server (re-downloads data)"),
    9292                Shortcut.registerShortcut("file:updateselection",
    9393                        tr("Update Selection"),
  • trunk/src/org/openstreetmap/josm/actions/UploadAction.java

    r2250 r2253  
    55
    66import java.awt.event.ActionEvent;
     7import java.awt.event.ActionListener;
    78import java.awt.event.KeyEvent;
    89import java.io.IOException;
     
    1718import java.util.regex.Pattern;
    1819
     20import javax.swing.JButton;
     21import javax.swing.JDialog;
    1922import javax.swing.JOptionPane;
    2023
     
    3336import org.openstreetmap.josm.gui.ExceptionDialogUtil;
    3437import org.openstreetmap.josm.gui.PleaseWaitRunnable;
     38import org.openstreetmap.josm.gui.help.HelpBrowser;
     39import org.openstreetmap.josm.gui.help.HelpBuilder;
    3540import org.openstreetmap.josm.gui.io.UploadDialog;
    3641import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     
    4449import org.openstreetmap.josm.io.OsmTransferException;
    4550import org.openstreetmap.josm.tools.DateUtils;
     51import org.openstreetmap.josm.tools.ImageProvider;
    4652import org.openstreetmap.josm.tools.Shortcut;
     53import org.openstreetmap.josm.tools.WindowGeometry;
    4754import org.xml.sax.SAXException;
    4855
     
    114121
    115122    public UploadAction() {
    116         super(tr("Upload to OSM..."), "upload", tr("Upload all changes to the OSM server."),
    117                 Shortcut.registerShortcut("file:upload", tr("File: {0}", tr("Upload to OSM...")), KeyEvent.VK_U, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY), true);
     123        super(tr("Upload data"), "upload", tr("Upload all changes in the current data layer to the OSM server"),
     124                Shortcut.registerShortcut("file:upload", tr("File: {0}", tr("Upload data")), KeyEvent.VK_U, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY), true);
    118125    }
    119126
     
    222229     * @param myVersion  the version of the primitive in the local dataset
    223230     */
    224     protected void handleUploadConflictForKnownConflict(OsmPrimitiveType primitiveType, long id, String serverVersion, String myVersion) {
    225         Object[] options = new Object[] {
    226                 tr("Synchronize {0} {1} only", tr(primitiveType.getAPIName()), id),
    227                 tr("Synchronize entire dataset"),
    228                 tr("Cancel")
     231    protected void handleUploadConflictForKnownConflict(final OsmPrimitiveType primitiveType, final long id, String serverVersion, String myVersion) {
     232        JButton[] options = new JButton[] {
     233                new JButton(tr("Synchronize {0} {1} only", tr(primitiveType.getAPIName()), id)),
     234                new JButton(tr("Synchronize entire dataset")),
     235                new JButton(tr("Cancel")),
     236                new JButton(tr("Help"))
    229237        };
    230         Object defaultOption = options[0];
     238        options[0].setIcon(ImageProvider.get("updatedata"));
     239        options[1].setIcon(ImageProvider.get("updatedata"));
     240        options[2].setIcon(ImageProvider.get("cancel"));
     241        options[3].setIcon(ImageProvider.get("help"));
    231242        String msg =  tr("<html>Uploading <strong>failed</strong> because the server has a newer version of one<br>"
    232243                + "of your nodes, ways, or relations.<br>"
     
    238249                + "Click <strong>{6}</strong> to abort and continue editing.<br></html>",
    239250                tr(primitiveType.getAPIName()), id, serverVersion, myVersion,
    240                 options[0], options[1], options[2]
    241         );
    242         int optionsType = JOptionPane.YES_NO_CANCEL_OPTION;
    243         int ret = JOptionPane.showOptionDialog(
    244                 null,
     251                options[0].getText(), options[1].getText(), options[2].getText()
     252        );
     253        final JOptionPane pane = new JOptionPane(
    245254                msg,
    246                 tr("Conflict detected"),
    247                 optionsType,
    248255                JOptionPane.ERROR_MESSAGE,
     256                JOptionPane.DEFAULT_OPTION,
    249257                null,
    250258                options,
    251                 defaultOption
    252         );
    253         switch(ret) {
    254             case JOptionPane.CLOSED_OPTION: return;
    255             case JOptionPane.CANCEL_OPTION: return;
    256             case 0: synchronizePrimitive(primitiveType, id); break;
    257             case 1: synchronizeDataSet(); break;
    258             default:
    259                 // should not happen
    260                 throw new IllegalStateException(tr("Unexpected return value. Got {0}.", ret));
    261         }
     259                options[0]
     260        );
     261        final JDialog dialog = new JDialog(
     262                JOptionPane.getFrameForComponent(Main.parent),
     263                tr("Conflicts detected"),
     264                true);
     265        options[0].addActionListener(
     266                new ActionListener() {
     267                    public void actionPerformed(ActionEvent e) {
     268                        dialog.setVisible(false);
     269                        synchronizePrimitive(primitiveType, id);
     270                    }
     271                }
     272        );
     273        options[1].addActionListener(
     274                new ActionListener() {
     275                    public void actionPerformed(ActionEvent e) {
     276                        dialog.setVisible(false);
     277                        synchronizeDataSet();
     278                    }
     279                }
     280        );
     281        options[2].addActionListener(
     282                new ActionListener() {
     283                    public void actionPerformed(ActionEvent e) {
     284                        dialog.setVisible(false);
     285                    }
     286                }
     287        );
     288        options[3].addActionListener(
     289                new ActionListener() {
     290                    public void actionPerformed(ActionEvent e) {
     291                        HelpBrowser b = new HelpBrowser();
     292                        b.setUrlForHelpTopic("Help/Concepts/Conflict");
     293                        b.setVisible(true);
     294                    }
     295                }
     296        );
     297        dialog.setContentPane(pane);
     298        dialog.pack();
     299        HelpBuilder.setHelpContext(dialog.getRootPane(), "Concepts/Conflict");
     300        WindowGeometry.centerOnScreen(dialog.getSize()).applySafe(dialog);
     301        dialog.setVisible(true);
    262302    }
    263303
     
    268308     */
    269309    protected void handleUploadConflictForUnknownConflict() {
    270         Object[] options = new Object[] {
    271                 tr("Synchronize entire dataset"),
    272                 tr("Cancel")
     310        JButton[] options = new JButton[] {
     311                new JButton(tr("Synchronize entire dataset")),
     312                new JButton(tr("Cancel")),
     313                new JButton(tr("Help"))
    273314        };
    274315        Object defaultOption = options[0];
     
    278319                + "Click <strong>{0}</strong> to synchronize the entire local dataset with the server.<br>"
    279320                + "Click <strong>{1}</strong> to abort and continue editing.<br></html>",
    280                 options[0], options[1]
    281         );
    282         int optionsType = JOptionPane.YES_NO_OPTION;
    283         int ret = JOptionPane.showOptionDialog(
    284                 null,
     321                options[0].getText(), options[1].getText()
     322        );
     323        final JOptionPane pane = new JOptionPane(
    285324                msg,
    286                 tr("Conflict detected"),
    287                 optionsType,
    288325                JOptionPane.ERROR_MESSAGE,
     326                JOptionPane.DEFAULT_OPTION,
    289327                null,
    290328                options,
    291                 defaultOption
    292         );
    293         switch(ret) {
    294             case JOptionPane.CLOSED_OPTION: return;
    295             case 1: return;
    296             case 0: synchronizeDataSet(); break;
    297             default:
    298                 // should not happen
    299                 throw new IllegalStateException(tr("Unexpected return value. Got {0}.", ret));
    300         }
     329                options[0]
     330        );
     331        final JDialog dialog = new JDialog(
     332                JOptionPane.getFrameForComponent(Main.parent),
     333                tr("Conflicts detected"),
     334                true);
     335
     336        options[0].addActionListener(
     337                new ActionListener() {
     338                    public void actionPerformed(ActionEvent e) {
     339                        dialog.setVisible(false);
     340                        synchronizeDataSet();
     341                    }
     342                }
     343        );
     344        options[1].addActionListener(
     345                new ActionListener() {
     346                    public void actionPerformed(ActionEvent e) {
     347                        dialog.setVisible(false);
     348                    }
     349                }
     350        );
     351        options[2].addActionListener(
     352                new ActionListener() {
     353                    public void actionPerformed(ActionEvent e) {
     354                        HelpBrowser b = new HelpBrowser();
     355                        b.setUrlForHelpTopic("Help/Concepts/Conflict");
     356                        b.setVisible(true);
     357                    }
     358                }
     359        );
     360        dialog.setContentPane(pane);
     361        dialog.pack();
     362        HelpBuilder.setHelpContext(dialog.getRootPane(), "Concepts/Conflict");
     363        WindowGeometry.centerOnScreen(dialog.getSize()).applySafe(dialog);
     364        dialog.setVisible(true);
    301365    }
    302366
  • trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java

    r2250 r2253  
    4444    public UploadSelectionAction() {
    4545        super(
    46                 tr("Upload selection..."),
     46                tr("Upload selection"),
    4747                "uploadselection",
    48                 tr("Upload the current selection to the OSM server."),
     48                tr("Upload all changes in the current current selection to the OSM server."),
    4949                null, /* no shortcut */
    5050                true);
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java

    r2215 r2253  
    2121import org.openstreetmap.josm.gui.layer.Layer;
    2222import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    23 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    2423import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2524import org.openstreetmap.josm.io.BoundingBoxDownloader;
     
    2928import org.openstreetmap.josm.tools.ExceptionUtil;
    3029import org.xml.sax.SAXException;
    31 
    3230
    3331/**
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java

    r2097 r2253  
    166166        for (OsmPrimitive primitive : ds.relations) {
    167167            if (! primitive.incomplete && primitive.getId() == 0) {
    168                 ret.add(primitive);;
     168                ret.add(primitive);
    169169            }
    170170        }
     
    232232        );
    233233        switch(ret) {
    234         case JOptionPane.CLOSED_OPTION: return;
    235         case JOptionPane.NO_OPTION: return;
    236         case JOptionPane.YES_OPTION: updatePotentiallyDeletedPrimitives(potentiallyDeleted); break;
     234            case JOptionPane.CLOSED_OPTION: return;
     235            case JOptionPane.NO_OPTION: return;
     236            case JOptionPane.YES_OPTION: updatePotentiallyDeletedPrimitives(potentiallyDeleted); break;
    237237        }
    238238    }
  • trunk/src/org/openstreetmap/josm/gui/MainMenu.java

    r2250 r2253  
    207207        add(fileMenu, download);
    208208        add(fileMenu, downloadReferrers);
     209        add(fileMenu, update);
     210        add(fileMenu, updateSelection);
     211        fileMenu.addSeparator();
    209212        add(fileMenu, upload);
    210213        add(fileMenu, uploadSelection);
    211         add(fileMenu, update);
    212         add(fileMenu, updateSelection);
     214        fileMenu.addSeparator();
    213215        add(fileMenu, closeChangesetAction);
    214216        fileMenu.addSeparator();
  • trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r2198 r2253  
    1818import java.awt.TexturePaint;
    1919import java.awt.event.ActionEvent;
     20import java.awt.event.ActionListener;
    2021import java.awt.geom.Area;
    2122import java.awt.image.BufferedImage;
     23import java.beans.PropertyChangeEvent;
     24import java.beans.PropertyChangeListener;
    2225import java.io.File;
    2326import java.util.ArrayList;
     
    3033import javax.swing.AbstractAction;
    3134import javax.swing.Icon;
     35import javax.swing.JButton;
     36import javax.swing.JDialog;
    3237import javax.swing.JLabel;
    3338import javax.swing.JMenuItem;
     
    6267import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    6368import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
     69import org.openstreetmap.josm.gui.help.HelpBrowser;
     70import org.openstreetmap.josm.gui.help.HelpBuilder;
    6471import org.openstreetmap.josm.tools.DateUtils;
    6572import org.openstreetmap.josm.tools.GBC;
    6673import org.openstreetmap.josm.tools.ImageProvider;
     74import org.openstreetmap.josm.tools.WindowGeometry;
    6775
    6876/**
     
    338346            sb.append("<br>").append(msg2);
    339347        }
     348        sb.append("<br>").append(tr("Please consult the Conflict List Dialog<br>and manually resolve them."));
    340349        sb.append("</html>");
    341350        if (numNewConflicts > 0) {
    342             JOptionPane.showMessageDialog(
    343                     Main.parent,
     351            JButton[] options = new JButton[] {
     352                    new JButton(tr("OK")),
     353                    new JButton(tr("Help"))
     354            };
     355            options[0].setIcon(ImageProvider.get("ok"));
     356            options[1].setIcon(ImageProvider.get("help"));
     357            final JOptionPane pane = new JOptionPane(
    344358                    sb.toString(),
     359                    JOptionPane.WARNING_MESSAGE,
     360                    JOptionPane.DEFAULT_OPTION,
     361                    null,
     362                    options,
     363                    options[0]
     364            );
     365            final JDialog dialog = new JDialog(
     366                    JOptionPane.getFrameForComponent(Main.parent),
    345367                    tr("Conflicts detected"),
    346                     JOptionPane.WARNING_MESSAGE
     368                    true);
     369            options[0].addActionListener(
     370                    new ActionListener() {
     371                        public void actionPerformed(ActionEvent e) {
     372                            dialog.setVisible(false);
     373                        }
     374                    }
    347375            );
     376            options[1].addActionListener(
     377                    new ActionListener() {
     378                        public void actionPerformed(ActionEvent e) {
     379                            HelpBrowser b = new HelpBrowser();
     380                            b.setUrlForHelpTopic("Help/Concepts/Conflict");
     381                            b.setVisible(true);
     382                        }
     383                    }
     384            );
     385            dialog.setContentPane(pane);
     386            dialog.pack();
     387            HelpBuilder.setHelpContext(dialog.getRootPane(), "Concepts/Conflict");
     388            WindowGeometry.centerOnScreen(dialog.getSize()).applySafe(dialog);
     389            dialog.setVisible(true);
    348390        }
    349391    }
Note: See TracChangeset for help on using the changeset viewer.