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

Last change on this file since 4269 was 3416, checked in by jttt, 14 years ago

Add Dataset.add/removeSelectionListener methods, change eclipse project to java 1.6

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