Ticket #17192: 17192-v3.patch

File 17192-v3.patch, 6.1 KB (added by GerdP, 5 weeks ago)
  • src/org/openstreetmap/josm/actions/AboutAction.java

     
    22package org.openstreetmap.josm.actions;
    33
    44import static org.openstreetmap.josm.tools.I18n.tr;
     5import static org.openstreetmap.josm.tools.Utils.getSystemEnv;
     6import static org.openstreetmap.josm.tools.Utils.getSystemProperty;
    57
    68import java.awt.Color;
    79import java.awt.Dimension;
    810import java.awt.FlowLayout;
     11import java.awt.Font;
    912import java.awt.GridBagLayout;
    1013import java.awt.event.ActionEvent;
    1114import java.awt.event.KeyEvent;
     
    1215import java.awt.event.MouseAdapter;
    1316import java.awt.event.MouseEvent;
    1417import java.io.BufferedReader;
     18import java.io.File;
    1519import java.io.IOException;
    1620import java.io.InputStream;
    1721import java.io.InputStreamReader;
    1822
     23import javax.swing.AbstractAction;
    1924import javax.swing.BorderFactory;
     25import javax.swing.JButton;
    2026import javax.swing.JLabel;
    2127import javax.swing.JPanel;
    2228import javax.swing.JScrollPane;
     
    3743import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
    3844import org.openstreetmap.josm.tools.Logging;
    3945import org.openstreetmap.josm.tools.OpenBrowser;
     46import org.openstreetmap.josm.tools.PlatformManager;
    4047import org.openstreetmap.josm.tools.Shortcut;
    4148import org.openstreetmap.josm.tools.Utils;
    4249
     
    112119        info.add(logos, GBC.eol().insets(0, 10, 0, 0));
    113120        info.add(GBC.glue(0, 5), GBC.eol());
    114121
     122        final String envJavaHome = getSystemEnv("JAVA_HOME");
     123        final String envJavaHomeAlt = PlatformManager.isPlatformWindows() ? "%JAVA_HOME%" : "${JAVA_HOME}";
     124        final String propJavaHome = getSystemProperty("java.home");
     125        final String propJavaHomeAlt = "<java.home>";
     126        final String prefDir = Config.getDirs().getPreferencesDirectory(false).toString();
     127        final String prefDirAlt = "<josm.pref>";
     128        final String userDataDir = Config.getDirs().getUserDataDirectory(false).toString();
     129        final String userDataDirAlt = "<josm.userdata>";
     130        final String userCacheDir = Config.getDirs().getCacheDirectory(false).toString();
     131        final String userCacheDirAlt = "<josm.cache>";
     132
     133        JPanel inst = new JPanel(new GridBagLayout());
     134        addInstLine(inst, envJavaHomeAlt, envJavaHome);
     135        addInstLine(inst, propJavaHomeAlt, propJavaHome);
     136        addInstLine(inst, prefDirAlt, prefDir);
     137        addInstLine(inst, userDataDirAlt, userDataDir);
     138        addInstLine(inst, userCacheDirAlt, userCacheDir);
     139
    115140        about.addTab(tr("Info"), info);
    116141        about.addTab(tr("Readme"), createScrollPane(readme));
    117142        about.addTab(tr("Revision"), createScrollPane(revision));
     
    118143        about.addTab(tr("Contribution"), createScrollPane(contribution));
    119144        about.addTab(tr("License"), createScrollPane(license));
    120145        about.addTab(tr("Plugins"), new JScrollPane(PluginHandler.getInfoPanel()));
     146        about.addTab(tr("Installation Details"), inst);
    121147
    122148        // Get the list of Launchpad contributors using customary msgid “translator-credits”
    123149        String translators = tr("translator-credits");
     
    133159        panel.add(about, GBC.std().fill());
    134160
    135161        GuiHelper.prepareResizeableOptionPane(panel, panel.getPreferredSize());
    136         int ret = new ExtendedDialog(MainApplication.getMainFrame(), tr("About JOSM..."), tr("OK"), tr("Report bug"))
    137             .setButtonIcons("ok", "bug")
    138             .setContent(panel, false)
    139             .showDialog().getValue();
     162        ExtendedDialog dlg = new ExtendedDialog(MainApplication.getMainFrame(), tr("About JOSM..."), tr("OK"), tr("Report bug"));
     163        int ret = dlg.setButtonIcons("ok", "bug")
     164                .setContent(panel, false)
     165                .showDialog().getValue();
    140166        if (2 == ret) {
    141167            MainApplication.getMenu().reportbug.actionPerformed(null);
    142168        }
     169        GuiHelper.destroyComponents(panel, false);
     170        dlg.dispose();
    143171    }
    144172
     173    private static class OpenDirAction extends AbstractAction {
     174        final String dir;
     175
     176        OpenDirAction(String dir) {
     177            super();
     178            this.dir = dir;
     179            setEnabled(dir != null && new File(dir).isDirectory());
     180        }
     181
     182        @Override
     183        public void actionPerformed(ActionEvent e) {
     184            OpenBrowser.displayUrl(new File(dir).toURI());
     185        }
     186    }
     187
     188    private void addInstLine(JPanel inst, String symbol, String dir) {
     189        inst.add(new JLabel(symbol), GBC.std());
     190        inst.add(GBC.glue(5, 0), GBC.std());
     191        JLabel dirLabel;
     192        if (dir != null && !dir.isEmpty()) {
     193            dirLabel = new JLabel(dir);
     194        } else {
     195            dirLabel = new JLabel("(unset)");
     196            dirLabel.setFont(dirLabel.getFont().deriveFont(Font.ITALIC));
     197        }
     198        inst.add(dirLabel, GBC.std().fill(GBC.HORIZONTAL));
     199        JButton btn = new JButton(tr("open"));
     200        btn.setAction(new OpenDirAction(dir));
     201        btn.setToolTipText(tr("Open directory"));
     202        btn.setIcon(ImageProvider.get("open", ImageProvider.ImageSizes.SMALLICON));
     203        inst.add(btn, GBC.eol());
     204    }
     205
    145206    private static JLabel createImageLink(String tooltip, String icon, final String link) {
    146207        JLabel label = new JLabel(ImageProvider.get("dialogs/about", icon, ImageSizes.LARGEICON));
    147208        label.setToolTipText(tooltip);
  • src/org/openstreetmap/josm/actions/ShowStatusReportAction.java

     
    241241
    242242        String val = param;
    243243        val = paramReplace(val, envJavaHome, envJavaHomeAlt);
    244         val = paramReplace(val, envJavaHome, envJavaHomeAlt);
    245244        val = paramReplace(val, propJavaHome, propJavaHomeAlt);
    246245        val = paramReplace(val, prefDir, prefDirAlt);
    247246        val = paramReplace(val, userDataDir, userDataDirAlt);