001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions; 003 004import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 005import static org.openstreetmap.josm.tools.I18n.tr; 006 007import java.awt.event.ActionEvent; 008import java.awt.event.KeyEvent; 009 010import org.openstreetmap.josm.Main; 011import org.openstreetmap.josm.data.osm.DataSet; 012import org.openstreetmap.josm.gui.dialogs.OsmIdSelectionDialog; 013import org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager; 014import org.openstreetmap.josm.io.OnlineResource; 015import org.openstreetmap.josm.tools.Shortcut; 016 017/** 018 * Display history information about OSM ways, nodes, or relations. 019 * @since 968 020 */ 021public class HistoryInfoAction extends JosmAction { 022 023 /** 024 * Constructs a new {@code HistoryInfoAction}. 025 */ 026 public HistoryInfoAction() { 027 super(tr("History"), "dialogs/history", 028 tr("Display history information about OSM ways, nodes, or relations."), 029 Shortcut.registerShortcut("core:historyinfo", 030 tr("History"), KeyEvent.VK_H, Shortcut.CTRL), false); 031 putValue("help", ht("/Action/ObjectHistory")); 032 putValue("toolbar", "action/historyinfo"); 033 Main.toolbar.register(this); 034 setEnabled(true); 035 } 036 037 @Override 038 public void actionPerformed(ActionEvent ae) { 039 DataSet set = getCurrentDataSet(); 040 if (set != null && !set.getAllSelected().isEmpty()) { 041 HistoryBrowserDialogManager.getInstance().showHistory(set.getAllSelected()); 042 } else { 043 HistoryObjectIDDialog dialog = new HistoryObjectIDDialog(); 044 if (dialog.showDialog().getValue() == dialog.getContinueButtonIndex()) { 045 HistoryBrowserDialogManager.getInstance().showHistory(dialog.getOsmIds()); 046 } 047 } 048 } 049 050 /** 051 * Dialog allowing to choose object id if no one is selected. 052 * @since 6448 053 */ 054 public static class HistoryObjectIDDialog extends OsmIdSelectionDialog { 055 056 /** 057 * Constructs a new {@code HistoryObjectIDDialog}. 058 */ 059 public HistoryObjectIDDialog() { 060 super(Main.parent, tr("Show history"), new String[]{tr("Show history"), tr("Cancel")}); 061 setButtonIcons(new String[]{"dialogs/history.png", "cancel.png"}); 062 init(); 063 } 064 065 @Override 066 public void setupDialog() { 067 super.setupDialog(); 068 buttons.get(0).setEnabled(!Main.isOffline(OnlineResource.OSM_API)); 069 } 070 } 071}