source: subversion/applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/TagSourceAction.java

Last change on this file was 34816, checked in by gerdp, 3 months ago

fix checkstyle issues

File size: 2.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.plugins.utilsplugin2.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionEvent;
7import java.awt.event.KeyEvent;
8import java.util.ArrayList;
9import java.util.Collection;
10import java.util.List;
11
12import org.openstreetmap.josm.actions.JosmAction;
13import org.openstreetmap.josm.command.ChangePropertyCommand;
14import org.openstreetmap.josm.data.UndoRedoHandler;
15import org.openstreetmap.josm.data.osm.OsmPrimitive;
16import org.openstreetmap.josm.spi.preferences.Config;
17import org.openstreetmap.josm.tools.Shortcut;
18
19/**
20 * Remembers last source value and put it on selected object(s).
21 *
22 * @author Zverik
23 */
24public class TagSourceAction extends JosmAction {
25    private static final String TITLE = tr("Add Source Tag");
26    private String source;
27    private List<OsmPrimitive> selectionBuf = new ArrayList<>();
28
29    public TagSourceAction() {
30        super(TITLE, "dumbutils/sourcetag", tr("Add remembered source tag"),
31                Shortcut.registerShortcut("tools:sourcetag", tr("Tool: {0}", tr("Add Source Tag")), KeyEvent.VK_S, Shortcut.ALT_CTRL),
32                true, false);
33        source = Config.getPref().get("sourcetag.value");
34        // The fields are not initialized while the super constructor is running, so we have to call this afterwards:
35        installAdapters();
36    }
37
38    @Override
39    public void actionPerformed(ActionEvent e) {
40        Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
41        if (selection.isEmpty() || source == null || source.length() == 0)
42            return;
43
44        UndoRedoHandler.getInstance().add(new ChangePropertyCommand(selection, "source", source));
45    }
46
47    @Override
48    protected void updateEnabledState() {
49        if (getLayerManager().getEditDataSet() == null) {
50            setEnabled(false);
51            selectionBuf = new ArrayList<>();
52        } else
53            updateEnabledState(getLayerManager().getEditDataSet().getSelected());
54    }
55
56    @Override
57    protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
58        if (!selectionBuf.isEmpty()) {
59            String newSource = null;
60            for (OsmPrimitive p : selectionBuf) {
61                String s = p.get("source");
62                if (s != null) {
63                    if (newSource == null)
64                        newSource = s;
65                    else {
66                        if (!newSource.equals(s)) {
67                            newSource = null;
68                            break;
69                        }
70                    }
71                }
72            }
73            if (newSource != null && !newSource.isEmpty()) {
74                source = newSource;
75                Config.getPref().put("sourcetag.value", source);
76            }
77        }
78        selectionBuf = new ArrayList<>(selection);
79        setEnabled(!selection.isEmpty() && source != null && !source.isEmpty());
80    }
81}
Note: See TracBrowser for help on using the repository browser.