source: josm/trunk/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java@ 2399

Last change on this file since 2399 was 2399, checked in by jttt, 15 years ago

Added map of primitives to dataset to make search by id faster
check if primitive already exist in addPrimitive and removePrimitive
use PrimitiveId instead of id + primitive type

  • Property svn:mime-type set to text/plain
File size: 1.8 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.command;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.util.ArrayList;
7import java.util.Collection;
8import java.util.List;
9
10import javax.swing.JLabel;
11import javax.swing.tree.DefaultMutableTreeNode;
12import javax.swing.tree.MutableTreeNode;
13
14import org.openstreetmap.josm.data.osm.OsmPrimitive;
15import org.openstreetmap.josm.data.osm.PrimitiveData;
16
17public class AddPrimitivesCommand extends Command {
18
19 private final List<PrimitiveData> data = new ArrayList<PrimitiveData>();
20
21 public AddPrimitivesCommand(List<PrimitiveData> data) {
22 this.data.addAll(data);
23 }
24
25 @Override public boolean executeCommand() {
26
27 List<OsmPrimitive> createdPrimitives = new ArrayList<OsmPrimitive>(data.size());
28
29 for (PrimitiveData pd:data) {
30 createdPrimitives.add(getLayer().data.getPrimitiveById(pd, true));
31 }
32
33 for (int i=0; i<createdPrimitives.size(); i++) {
34 createdPrimitives.get(i).load(data.get(i), getLayer().data);
35 }
36 getLayer().data.setSelected(createdPrimitives);
37 return true;
38 }
39
40 @Override public void undoCommand() {
41 for (PrimitiveData p:data) {
42 getLayer().data.removePrimitive(p);
43 }
44 }
45
46 @Override
47 public MutableTreeNode description() {
48 return new DefaultMutableTreeNode(
49 new JLabel(tr("Added {0} objects", data.size()), null,
50 JLabel.HORIZONTAL
51 )
52 );
53 }
54
55 @Override
56 public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
57 Collection<OsmPrimitive> added) {
58 // Does nothing because we don't want to create OsmPrimitives.
59 }
60
61}
Note: See TracBrowser for help on using the repository browser.