Statistics
| Revision:

gvsig-raster / org.gvsig.raster.georeferencing / trunk / org.gvsig.raster.georeferencing / org.gvsig.raster.georeferencing.swing / org.gvsig.raster.georeferencing.swing.impl / src / main / java / org / gvsig / raster / georeferencing / swing / impl / option / GCPListImpl.java @ 1730

History | View | Annotate | Download (2.55 KB)

1
package org.gvsig.raster.georeferencing.swing.impl.option;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5

    
6
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint;
7
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList;
8
import org.gvsig.raster.georeferencing.swing.impl.layer.GPGraphic;
9
import org.gvsig.raster.georeferencing.swing.model.GCPEvent;
10
import org.gvsig.raster.georeferencing.swing.model.GCPList;
11
import org.gvsig.raster.georeferencing.swing.model.GCPListener;
12

    
13
/**
14
 * @author Nacho Brodin nachobrodin@gmail.com
15
 */
16
public class GCPListImpl implements GCPList {
17
        private List<GPGraphic>   pList         = new ArrayList<GPGraphic>();
18
        private List<GCPListener> listeners     = new ArrayList<GCPListener>();
19
        private int               selectedPoint = -1;
20
        
21
        class GeoPointListImpl extends ArrayList<GeoPoint> implements GeoPointList {
22
                private static final long serialVersionUID = 1L;
23
        }
24
        
25
        public void addListener(GCPListener listener) {
26
                listeners.add(listener);
27
        }
28
        
29
        public void buildNewList(GeoPointList geoPointList) {
30
                long id = System.currentTimeMillis();
31
                if(geoPointList != null) {
32
                        pList.clear();
33
                        for (int i = 0; i < geoPointList.size(); i++) {
34
                                GPGraphic graphicGCP = new GPGraphic(geoPointList.get(i));
35
                                graphicGCP.setId(id);
36
                                geoPointList.get(i).setNumber(i);
37
                                pList.add(graphicGCP);
38
                                id += 1;
39
                        }
40
                }
41
        }
42
        
43
        public GeoPoint getGeoPoint(int i) {
44
                return pList.get(i).getGeoPoint();
45
        }
46
        
47
        public GeoPointList getGeoPointList() {
48
                GeoPointList geoPointList = new GeoPointListImpl();
49
                for (int i = 0; i < pList.size(); i++) {
50
                        geoPointList.add(pList.get(i).getGeoPoint());
51
                }
52
                return geoPointList;
53
        }
54
        
55
        public Object getGraphicPoint(int i) {
56
                return pList.get(i);
57
        }
58

    
59
        public int size() {
60
                return pList.size();
61
        }
62

    
63
        public void add(Object graphicPoint) {
64
                pList.add((GPGraphic)graphicPoint);
65
                for (int i = 0; i < listeners.size(); i++) {
66
                        listeners.get(i).addPoint(new GCPEvent(pList, pList.size() - 1));
67
                }
68
        }
69
        
70
        public void remove(int pos) {
71
                for (int i = 0; i < listeners.size(); i++) {
72
                        listeners.get(i).removePoint(new GCPEvent(pList, pos));
73
                }
74
                pList.remove(pos);
75
        }
76

    
77
        public void removeAll() {
78
                for (int i = 0; i < listeners.size(); i++) {
79
                        listeners.get(i).removePoint(new GCPEvent(pList, -1));
80
                }
81
                for (int i = pList.size() - 1; i >= 0; i--) {
82
                        pList.remove(i);
83
                }
84
        }
85
        
86
        public void setSelectedPoint(int number) {
87
                this.selectedPoint = number;
88
                for (int i = 0; i < listeners.size(); i++) {
89
                        listeners.get(i).selectPoint(new GCPEvent(pList, number));
90
                }
91
        }
92
        
93
        public int getSelectedPoint() {
94
                return selectedPoint;
95
        }
96
}