Changeset 7401 in josm for trunk/src/org


Ignore:
Timestamp:
2014-08-15T17:45:34+02:00 (10 years ago)
Author:
Don-vip
Message:

fix #10175 - ask for JOSM update in case of crash with old version

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

Legend:

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

    r7005 r7401  
    2828import javax.swing.JScrollPane;
    2929import javax.swing.KeyStroke;
    30 import javax.swing.SwingUtilities;
    3130import javax.swing.UIManager;
    3231
    3332import org.openstreetmap.josm.gui.help.HelpBrowser;
    3433import org.openstreetmap.josm.gui.help.HelpUtil;
     34import org.openstreetmap.josm.gui.util.GuiHelper;
    3535import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
    3636import org.openstreetmap.josm.tools.GBC;
     
    538538    /**
    539539     * Sets the button that will react to ENTER.
    540      * @param defaultButtonIdx The button index (starts to )
     540     * @param defaultButtonIdx The button index (starts to 1)
    541541     * @return {@code this}
    542542     */
     
    558558
    559559    /**
    560      * Don't focus the "do not show this again" check box, but the default button.
     560     * Always makes sure the default button has initial focus.
    561561     */
    562562    protected void fixFocus() {
    563         if (toggleable && defaultButton != null) {
    564             SwingUtilities.invokeLater(new Runnable() {
    565                 @Override public void run() {
     563        if (defaultButton != null) {
     564            GuiHelper.runInEDT(new Runnable() {
     565                @Override
     566                public void run() {
    566567                    defaultButton.requestFocusInWindow();
    567568                }
  • trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java

    r7376 r7401  
    2525import org.openstreetmap.josm.Main;
    2626import org.openstreetmap.josm.actions.ShowStatusReportAction;
     27import org.openstreetmap.josm.data.Version;
    2728import org.openstreetmap.josm.gui.ExtendedDialog;
    2829import org.openstreetmap.josm.gui.preferences.plugin.PluginPreference;
     
    5657        @Override
    5758        public void run() {
    58          // Give the user a chance to deactivate the plugin which threw the exception (if it was thrown from a plugin)
     59            // Give the user a chance to deactivate the plugin which threw the exception (if it was thrown from a plugin)
    5960            final PluginDownloadTask pluginDownloadTask = PluginHandler.updateOrdisablePluginAfterException(e);
    6061
     
    6465                    // Then ask for submitting a bug report, for exceptions thrown from a plugin too, unless updated to a new version
    6566                    if (pluginDownloadTask == null) {
    66                         ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Unexpected Exception"), new String[] {tr("Do nothing"), tr("Report Bug")});
     67                        String[] buttonTexts = new String[] {tr("Do nothing"), tr("Report Bug")};
     68                        String[] buttonIcons = new String[] {"cancel", "bug"};
     69                        int defaultButtonIdx = 1;
     70                        String message = tr("An unexpected exception occurred.<br>" +
     71                                "This is always a coding error. If you are running the latest<br>" +
     72                                "version of JOSM, please consider being kind and file a bug report."
     73                                );
     74                        // Check user is running current tested version, the error may already be fixed
     75                        int josmVersion = Version.getInstance().getVersion();
     76                        if (josmVersion != Version.JOSM_UNKNOWN_VERSION) {
     77                            try {
     78                                int latestVersion = Integer.parseInt(new WikiReader().
     79                                        read(Main.getJOSMWebsite()+"/wiki/TestedVersion?format=txt").trim());
     80                                if (latestVersion > josmVersion) {
     81                                    buttonTexts = new String[] {tr("Do nothing"), tr("Update JOSM"), tr("Report Bug")};
     82                                    buttonIcons = new String[] {"cancel", "download", "bug"};
     83                                    defaultButtonIdx = 2;
     84                                    message = tr("An unexpected exception occurred. This is always a coding error.<br><br>" +
     85                                            "However, you are running an old version of JOSM ({0}),<br>" +
     86                                            "instead of using the current tested version (<b>{1}</b>).<br><br>"+
     87                                            "<b>Please update JOSM</b> before considering to file a bug report.",
     88                                            String.valueOf(josmVersion), String.valueOf(latestVersion));
     89                                }
     90                            } catch (IOException | NumberFormatException e) {
     91                                Main.warn("Unable to detect latest version of JOSM: "+e.getMessage());
     92                            }
     93                        }
     94                        // Show dialog
     95                        ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Unexpected Exception"), buttonTexts);
     96                        ed.setButtonIcons(buttonIcons);
    6797                        ed.setIcon(JOptionPane.ERROR_MESSAGE);
     98                        ed.setCancelButton(1);
     99                        ed.setDefaultButton(defaultButtonIdx);
    68100                        JPanel pnl = new JPanel(new GridBagLayout());
    69                         pnl.add(new JLabel(
    70                                 "<html>" + tr("An unexpected exception occurred.<br>" +
    71                                               "This is always a coding error. If you are running the latest<br>" +
    72                                               "version of JOSM, please consider being kind and file a bug report."
    73                                               )
    74                                          + "</html>"), GBC.eol());
     101                        pnl.add(new JLabel("<html>" + message + "</html>"), GBC.eol());
    75102                        JCheckBox cbSuppress = null;
    76103                        if (exceptionCounter > 1) {
     
    83110                            suppressExceptionDialogs = true;
    84111                        }
    85                         if (ed.getValue() != 2) return;
    86                         askForBugReport(e);
     112                        if (ed.getValue() <= 1) {
     113                            // "Do nothing"
     114                            return;
     115                        } else if (ed.getValue() < buttonTexts.length) {
     116                            // "Update JOSM"
     117                            try {
     118                                Main.platform.openUrl(Main.getJOSMWebsite());
     119                            } catch (IOException e) {
     120                                Main.warn("Unable to access JOSM website: "+e.getMessage());
     121                            }
     122                        } else {
     123                            // "Report bug"
     124                            askForBugReport(e);
     125                        }
    87126                    } else {
    88127                        // Ask for restart to install new plugin
  • trunk/src/org/openstreetmap/josm/tools/WikiReader.java

    r7033 r7401  
    3636     * Read the page specified by the url and return the content.
    3737     *
    38      * If the url is within the baseurl path, parse it as an trac wikipage and replace relative
    39      * pathes etc..
     38     * If the url is within the baseurl path, parse it as an trac wikipage and replace relative paths etc..
     39     * @param url the URL to read
     40     * @return The page as string
    4041     *
    4142     * @throws IOException Throws, if the page could not be loaded.
     
    4445        URL u = new URL(url);
    4546        try (BufferedReader in = Utils.openURLReader(u)) {
    46             if (url.startsWith(baseurl) && !url.endsWith("?format=txt"))
     47            boolean txt = url.endsWith("?format=txt");
     48            if (url.startsWith(baseurl) && !txt)
    4749                return readFromTrac(in, u);
    48             return readNormal(in);
     50            return readNormal(in, !txt);
    4951        }
    5052    }
    5153
     54    /**
     55     * Reads the localized version of the given wiki page.
     56     * @param text The page title, without locale prefix
     57     * @return the localized version of the given wiki page
     58     * @throws IOException if any I/O error occurs
     59     */
    5260    public String readLang(String text) throws IOException {
    5361        String languageCode;
     
    8997    }
    9098
    91     private String readNormal(BufferedReader in) throws IOException {
     99    private String readNormal(BufferedReader in, boolean html) throws IOException {
    92100        StringBuilder b = new StringBuilder();
    93101        for (String line = in.readLine(); line != null; line = in.readLine()) {
     
    96104            }
    97105        }
    98         return "<html>" + b + "</html>";
     106        return html ? "<html>" + b + "</html>" : b.toString();
    99107    }
    100108
Note: See TracChangeset for help on using the changeset viewer.