source: josm/trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java@ 11186

Last change on this file since 11186 was 10601, checked in by Don-vip, 8 years ago

see #11390 - sonar - squid:S1604 - Java 8: Anonymous inner classes containing only one method should become lambdas

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.relation;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5import static org.openstreetmap.josm.tools.I18n.trn;
6
7import java.awt.event.ActionEvent;
8import java.util.Collection;
9import java.util.LinkedList;
10
11import javax.swing.JOptionPane;
12
13import org.openstreetmap.josm.Main;
14import org.openstreetmap.josm.command.Command;
15import org.openstreetmap.josm.command.SequenceCommand;
16import org.openstreetmap.josm.data.SelectionChangedListener;
17import org.openstreetmap.josm.data.osm.OsmPrimitive;
18import org.openstreetmap.josm.data.osm.Relation;
19import org.openstreetmap.josm.gui.Notification;
20import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
21import org.openstreetmap.josm.gui.util.GuiHelper;
22import org.openstreetmap.josm.tools.ImageProvider;
23
24/**
25 * Add all objects selected in the current dataset after the last member of relation(s).
26 * @since 5799
27 */
28public class AddSelectionToRelations extends AbstractRelationAction implements SelectionChangedListener {
29 /**
30 * Constructs a new <code>AddSelectionToRelation</code>.
31 */
32 public AddSelectionToRelations() {
33 putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copyendright"));
34 putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset after the last member"));
35 }
36
37 @Override
38 public void actionPerformed(ActionEvent e) {
39 Collection<Command> cmds = new LinkedList<>();
40 for (Relation orig : relations) {
41 Command c = GenericRelationEditor.addPrimitivesToRelation(orig, Main.getLayerManager().getEditDataSet().getSelected());
42 if (c != null) {
43 cmds.add(c);
44 }
45 }
46 if (!cmds.isEmpty()) {
47 Main.main.undoRedo.add(new SequenceCommand(tr("Add selection to relation"), cmds));
48 new Notification(
49 "<html>"+
50 tr("{0}Add selection to relation{1}: Verify every single relation to avoid damage!", "<strong>", "</strong>")+
51 "</html>")
52 .setIcon(JOptionPane.WARNING_MESSAGE)
53 .show();
54 }
55 }
56
57 @Override
58 public void updateEnabledState() {
59 putValue(NAME, trn("Add selection to {0} relation", "Add selection to {0} relations",
60 relations.size(), relations.size()));
61 }
62
63 @Override
64 public void selectionChanged(final Collection<? extends OsmPrimitive> newSelection) {
65 GuiHelper.runInEDT(() -> setEnabled(newSelection != null && !newSelection.isEmpty()));
66 }
67}
Note: See TracBrowser for help on using the repository browser.