source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java@ 2512

Last change on this file since 2512 was 2512, checked in by stoecker, 14 years ago

i18n updated, fixed files to reduce problems when applying patches, fix #4017

File size: 3.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation;
3import static org.openstreetmap.josm.tools.I18n.tr;
4
5import java.util.ArrayList;
6import java.util.Collection;
7import java.util.List;
8
9import javax.swing.table.AbstractTableModel;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.data.SelectionChangedListener;
13import org.openstreetmap.josm.data.osm.DataSet;
14import org.openstreetmap.josm.data.osm.OsmPrimitive;
15import org.openstreetmap.josm.gui.layer.Layer;
16import org.openstreetmap.josm.gui.layer.OsmDataLayer;
17import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
18
19public class SelectionTableModel extends AbstractTableModel implements SelectionChangedListener, LayerChangeListener{
20
21 /** this selection table model only displays selected primitives in this layer */
22 private OsmDataLayer layer;
23 private ArrayList<OsmPrimitive> cache;
24
25 /**
26 * constructor
27 *
28 * @param layer the data layer. Must not be null.
29 * @exception IllegalArgumentException thrown if layer is null
30 */
31 public SelectionTableModel(OsmDataLayer layer) throws IllegalArgumentException {
32 if (layer == null)
33 throw new IllegalArgumentException(tr("Parameter ''{0}'' must not be null.", "layer"));
34 this.layer = layer;
35 cache = new ArrayList<OsmPrimitive>();
36 DataSet.selListeners.add(this);
37 Layer.listeners.add(this);
38 populateSelectedPrimitives(layer);
39 }
40
41 public void unregister() {
42 DataSet.selListeners.remove(this);
43 Layer.listeners.remove(this);
44 }
45
46 public int getColumnCount() {
47 return 1;
48 }
49
50 public int getRowCount() {
51 if (Main.map.mapView.getEditLayer() != layer)
52 return 0;
53 return cache.size();
54 }
55
56 public Object getValueAt(int rowIndex, int columnIndex) {
57 return cache.get(rowIndex);
58 }
59
60 public void activeLayerChange(Layer oldLayer, Layer newLayer) {
61 if (oldLayer == layer) {
62 cache.clear();
63 }
64 if (newLayer == layer) {
65 cache.addAll(((OsmDataLayer)newLayer).data.getSelected());
66 }
67 fireTableDataChanged();
68 }
69
70 public void layerAdded(Layer newLayer) {
71 // do nothing
72 }
73
74 public void layerRemoved(Layer oldLayer) {
75 if (oldLayer == layer) {
76 unregister();
77 }
78 this.cache.clear();
79 fireTableDataChanged();
80 }
81
82 public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
83 if (layer == Main.map.mapView.getEditLayer()) {
84 cache.clear();
85 cache.addAll(newSelection);
86 } else {
87 cache.clear();
88 }
89 fireTableDataChanged();
90 }
91
92 public List<OsmPrimitive> getSelection() {
93 return cache;
94 }
95
96 /**
97 * populates the model with the primitives currently selected in
98 * <code>layer</code>
99 *
100 * @param layer the data layer
101 */
102 protected void populateSelectedPrimitives(OsmDataLayer layer) {
103 selectionChanged(layer.data.getSelected());
104 }
105}
Note: See TracBrowser for help on using the repository browser.