source: josm/trunk/src/org/openstreetmap/josm/gui/history/ShowHistoryAction.java@ 17921

Last change on this file since 17921 was 16495, checked in by GerdP, 4 years ago

see #19257: reduce number of ShowHistoryAction implementations
Add AbstractShowHistoryAction with common texts "History" and "Download and show the history of the selected objects" to reduce number of I18N strings. To be used with popup menus and side buttons where selected objects are known.

File size: 1.7 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.history;
3
4import java.awt.event.ActionEvent;
5import java.awt.event.MouseAdapter;
6import java.awt.event.MouseEvent;
7import java.util.Collections;
8import java.util.function.Function;
9
10import org.openstreetmap.josm.actions.AbstractShowHistoryAction;
11import org.openstreetmap.josm.data.osm.PrimitiveId;
12
13/**
14 * Open a history browser with the history of an object.
15 */
16class ShowHistoryAction extends AbstractShowHistoryAction {
17 private transient PrimitiveId primitiveId;
18
19 @Override
20 public void actionPerformed(ActionEvent e) {
21 if (isEnabled()) {
22 run();
23 }
24 }
25
26 public void setPrimitiveId(PrimitiveId pid) {
27 this.primitiveId = pid;
28 updateEnabledState();
29 }
30
31 public void run() {
32 HistoryBrowserDialogManager.getInstance().showHistory(Collections.singleton(primitiveId));
33 }
34
35 public void updateEnabledState() {
36 setEnabled(primitiveId != null && !primitiveId.isNew());
37 }
38
39 static class DoubleClickAdapter extends MouseAdapter {
40 private final Function<MouseEvent, PrimitiveId> primitiveIdFunction;
41
42 DoubleClickAdapter(Function<MouseEvent, PrimitiveId> primitiveIdFunction) {
43 this.primitiveIdFunction = primitiveIdFunction;
44 }
45
46 @Override
47 public void mouseClicked(MouseEvent e) {
48 if (e.getClickCount() < 2)
49 return;
50 PrimitiveId pid = primitiveIdFunction.apply(e);
51 if (pid == null || pid.isNew())
52 return;
53 HistoryBrowserDialogManager.getInstance().showHistory(Collections.singleton(pid));
54 }
55 }
56}
Note: See TracBrowser for help on using the repository browser.