Ticket #14578: 14578.patch
| File 14578.patch, 3.7 KB (added by , 9 years ago) |
|---|
-
src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
diff --git a/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java b/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java index f001e982c..d86d7373c 100644
a b 9 9 import java.awt.GridBagConstraints; 10 10 import java.awt.GridBagLayout; 11 11 import java.awt.Insets; 12 import java.awt.Rectangle; 12 13 import java.awt.event.ActionEvent; 13 14 import java.text.DateFormat; 15 import java.text.MessageFormat; 16 import java.util.Arrays; 14 17 import java.util.Collections; 15 18 import java.util.Date; 16 19 … … 19 22 import javax.swing.JComponent; 20 23 import javax.swing.JLabel; 21 24 import javax.swing.JPanel; 25 import javax.swing.JPopupMenu; 22 26 import javax.swing.JTextArea; 23 27 import javax.swing.event.ChangeEvent; 24 28 import javax.swing.event.ChangeListener; 29 import javax.swing.plaf.basic.BasicArrowButton; 25 30 26 31 import org.openstreetmap.josm.Main; 27 32 import org.openstreetmap.josm.data.osm.Changeset; … … 38 43 import org.openstreetmap.josm.tools.CheckParameterUtil; 39 44 import org.openstreetmap.josm.tools.GBC; 40 45 import org.openstreetmap.josm.tools.ImageProvider; 46 import org.openstreetmap.josm.tools.OpenBrowser; 41 47 import org.openstreetmap.josm.tools.Utils; 42 48 import org.openstreetmap.josm.tools.date.DateUtils; 43 49 … … protected void build() { 107 113 lblUser = new UrlLabel("", 2); 108 114 pnlUserAndChangeset.add(lblUser, GBC.eol().insets(5, 0, 0, 0).weight(1, 0)); 109 115 116 final JPanel changesetPanel = new JPanel(new BorderLayout()); 110 117 changesetButton.setMargin(new Insets(0, 0, 0, 2)); 111 pnlUserAndChangeset.add(changesetButton, GBC.std().fill().weight(0, 0)); 118 changesetPanel.add(changesetButton, BorderLayout.CENTER); 119 final BasicArrowButton arrowButton = new BasicArrowButton(BasicArrowButton.SOUTH); 120 arrowButton.addActionListener(action -> new OpenChangesetPopupMenu(changesetDialogAction).show(arrowButton)); 121 changesetPanel.add(arrowButton, BorderLayout.EAST); 122 pnlUserAndChangeset.add(changesetPanel, GBC.std().fill().weight(0, 0)); 112 123 113 124 lblChangeset = new UrlLabel("", 2); 114 125 pnlUserAndChangeset.add(lblChangeset, GBC.std().insets(5, 0, 0, 0).weight(1, 0)); … … public void actionPerformed(ActionEvent e) { 310 321 } 311 322 } 312 323 } 324 325 static class OpenChangesetPopupMenu extends JPopupMenu { 326 OpenChangesetPopupMenu(final OpenChangesetDialogAction openChangesetDialogAction) { 327 add(openChangesetDialogAction).setText(tr("Open Changeset Manager")); 328 Main.pref.getCollection("history-dialog.urls", 329 Arrays.asList(Main.getBaseBrowseUrl() + "/changeset/{0}", "http://osmhv.openstreetmap.de/changeset.jsp?id={0}", "https://overpass-api.de/achavi/?changeset={0}") 330 ).stream() 331 .map(template -> MessageFormat.format(template, Long.toString(openChangesetDialogAction.id))) 332 .map(OpenBrowserAction::new) 333 .forEach(this::add); 334 } 335 336 void show(final JComponent parent) { 337 final Rectangle r = parent.getBounds(); 338 show(parent.getParent(), r.x + r.width - (int) getPreferredSize().getWidth(), r.y + r.height); 339 } 340 } 341 342 static class OpenBrowserAction extends AbstractAction { 343 final String url; 344 345 OpenBrowserAction(String url) { 346 putValue(NAME, tr("Open {0}", url)); 347 new ImageProvider("help/internet").getResource().attachImageIcon(this, true); 348 this.url = url; 349 } 350 351 @Override 352 public void actionPerformed(ActionEvent e) { 353 OpenBrowser.displayUrl(url); 354 } 355 } 313 356 }
