svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / EditionManager.java @ 10254
History | View | Annotate | Download (7.33 KB)
1 | 4144 | fjp | package com.iver.cit.gvsig; |
---|---|---|---|
2 | |||
3 | import java.util.ArrayList; |
||
4 | 4421 | fjp | import java.util.logging.Logger; |
5 | 4144 | fjp | |
6 | 5014 | caballero | import com.iver.andami.PluginServices; |
7 | 8930 | caballero | import com.iver.andami.ui.mdiManager.IWindow; |
8 | 4147 | fjp | import com.iver.cit.gvsig.fmap.MapControl; |
9 | 5063 | jorpiell | import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter; |
10 | 5227 | caballero | import com.iver.cit.gvsig.fmap.layers.CancelationException; |
11 | 4144 | fjp | import com.iver.cit.gvsig.fmap.layers.FLayer; |
12 | 5256 | caballero | import com.iver.cit.gvsig.fmap.layers.FLayers; |
13 | 4366 | caballero | import com.iver.cit.gvsig.fmap.layers.FLyrVect; |
14 | 5227 | caballero | import com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent; |
15 | import com.iver.cit.gvsig.fmap.layers.LayerCollectionListener; |
||
16 | 4144 | fjp | import com.iver.cit.gvsig.fmap.layers.LayerEvent; |
17 | import com.iver.cit.gvsig.fmap.layers.LayerListener; |
||
18 | 5227 | caballero | import com.iver.cit.gvsig.fmap.layers.LayerPositionEvent; |
19 | 4147 | fjp | import com.iver.cit.gvsig.layers.FactoryLayerEdited; |
20 | 4144 | fjp | import com.iver.cit.gvsig.layers.ILayerEdited; |
21 | 4366 | caballero | import com.iver.cit.gvsig.layers.VectorialLayerEdited; |
22 | 7304 | caballero | import com.iver.cit.gvsig.project.documents.view.gui.View; |
23 | 4144 | fjp | |
24 | /**
|
||
25 | * @author fjp
|
||
26 | *
|
||
27 | 4366 | caballero | * El prop?sito de esta clase es centralizar el manejo de la
|
28 | 4144 | fjp | * edici?n. Aqu? podemos encontrar una lista con todas
|
29 | * los temas en edici?n, y las propiedades que sean globales
|
||
30 | * e interesantes a la hora de ponerse a editar.
|
||
31 | 4366 | caballero | * Por ejemplo, podemos poner aqu? el Grid que vamos a usar,
|
32 | 4144 | fjp | * el MapControl que tenemos asociado, etc, etc.
|
33 | * Tambi?n ser? el responsable de mantener una lista de
|
||
34 | 4366 | caballero | * listeners interesados en los eventos de edici?n, y
|
35 | 4144 | fjp | * de lanzar los eventos que necesitemos.
|
36 | 4366 | caballero | * Lo principal es una colecci?n de LayerEdited, y cada
|
37 | 4144 | fjp | * LayerEdited es un wrapper alrededor de un tema que guarda
|
38 | * las propiedades de la edici?n.
|
||
39 | 5014 | caballero | *
|
40 | 4834 | fjp | * Nuevo: Llevar aqu? el control de las tablas en edici?n tambi?n
|
41 | * y centralizar los listeners interesados en los eventos de edici?n.
|
||
42 | 4366 | caballero | *
|
43 | 4147 | fjp | * TODO: Poner todo lo referente al EditionManager dentro de una vista.
|
44 | * para permitir tener varias vistas con temas en edici?n
|
||
45 | 4366 | caballero | *
|
46 | 4144 | fjp | */
|
47 | 5227 | caballero | public class EditionManager implements LayerListener,LayerCollectionListener { |
48 | 4144 | fjp | private ArrayList editedLayers = new ArrayList(); |
49 | 4834 | fjp | private ArrayList editedTables = new ArrayList(); |
50 | 5014 | caballero | //private ArrayList activeLayerEdited = new ArrayList();
|
51 | 4147 | fjp | private MapControl mapCtrl = null; |
52 | 5014 | caballero | private ILayerEdited ile=null; |
53 | //private int idActiveLayer=0;
|
||
54 | 4366 | caballero | |
55 | |||
56 | 4147 | fjp | /**
|
57 | * @param lyr
|
||
58 | 4366 | caballero | * @return
|
59 | 4147 | fjp | */
|
60 | 4144 | fjp | public ILayerEdited getLayerEdited(FLayer lyr)
|
61 | { |
||
62 | ILayerEdited aux = null;
|
||
63 | for (int i=0; i < editedLayers.size(); i++) |
||
64 | { |
||
65 | aux = (ILayerEdited) editedLayers.get(i); |
||
66 | if (aux.getLayer() == lyr)
|
||
67 | return aux;
|
||
68 | } |
||
69 | return null; |
||
70 | } |
||
71 | 4366 | caballero | |
72 | 4144 | fjp | public void visibilityChanged(LayerEvent e) { |
73 | } |
||
74 | |||
75 | public void activationChanged(LayerEvent e) { |
||
76 | 5227 | caballero | if (e.getSource().isActive()){
|
77 | 5207 | caballero | ile=getLayerEdited(e.getSource()); |
78 | 6880 | cesar | if (PluginServices.getMDIManager().getActiveWindow() instanceof View) |
79 | 5747 | fjp | { |
80 | 6880 | cesar | View view=(View)PluginServices.getMDIManager().getActiveWindow(); |
81 | 5747 | fjp | if (e.getSource().isEditing()){
|
82 | view.showConsole(); |
||
83 | }else{
|
||
84 | view.hideConsole(); |
||
85 | } |
||
86 | 5227 | caballero | } |
87 | |||
88 | } |
||
89 | 5210 | caballero | if (ile==null || ile.getLayer().equals(e.getSource())){ |
90 | 5014 | caballero | |
91 | 5207 | caballero | if (ile!=null && !ile.getLayer().isActive()) { |
92 | 5014 | caballero | VectorialLayerEdited lastVLE = (VectorialLayerEdited)ile; |
93 | lastVLE.activationLost(e); |
||
94 | 4366 | caballero | } |
95 | 5014 | caballero | if (e.getSource() instanceof FLyrVect) { |
96 | VectorialLayerEdited vle = null;
|
||
97 | vle=(VectorialLayerEdited)getLayerEdited(e.getSource()); |
||
98 | // for (int i = 0; i < editedLayers.size(); i++) {
|
||
99 | // vle = (VectorialLayerEdited) editedLayers.get(i);
|
||
100 | // if (vle.getLayer().equals(e.getSource())) {
|
||
101 | // idActiveLayer = i;
|
||
102 | ile=vle; |
||
103 | 5207 | caballero | if (getMapControl()!=null && vle!=null && vle.getLayer().isActive()){ |
104 | 5014 | caballero | getMapControl().setTool("cadtooladapter");
|
105 | vle.activationGained(e); |
||
106 | return;
|
||
107 | } |
||
108 | } |
||
109 | // }
|
||
110 | // idActiveLayer=-1;
|
||
111 | //ile=null;
|
||
112 | if (getMapControl()!=null){ |
||
113 | getMapControl().setTool("zoomIn");
|
||
114 | PluginServices.getMainFrame().setSelectedTool("ZOOM_IN");
|
||
115 | } |
||
116 | 5207 | caballero | } |
117 | 4144 | fjp | } |
118 | |||
119 | public void nameChanged(LayerEvent e) { |
||
120 | } |
||
121 | |||
122 | public void editionChanged(LayerEvent e) { |
||
123 | 4421 | fjp | Logger.global.info(e.toString());
|
124 | 4144 | fjp | ILayerEdited lyrEdit = getLayerEdited(e.getSource()); |
125 | 4366 | caballero | |
126 | 4144 | fjp | // Si no est? en la lista, comprobamos que est? en edici?n
|
127 | // y lo a?adimos
|
||
128 | if ((lyrEdit == null) && e.getSource().isEditing()) |
||
129 | { |
||
130 | 4147 | fjp | lyrEdit = FactoryLayerEdited.createLayerEdited(e.getSource()); |
131 | editedLayers.add(lyrEdit); |
||
132 | 5014 | caballero | if (getMapControl()!=null){ |
133 | getMapControl().setTool("cadtooladapter");
|
||
134 | CADExtension.setCADTool("_selection",true); |
||
135 | } |
||
136 | PluginServices.getMainFrame().setSelectedTool("_selection");
|
||
137 | //idActiveLayer = editedLayers.size() - 1;
|
||
138 | ile=getLayerEdited(e.getSource()); |
||
139 | 4487 | fjp | System.out.println("NUEVA CAPA EN EDICION: " + lyrEdit.getLayer().getName()); |
140 | 5014 | caballero | //activationChanged(e);
|
141 | |||
142 | 4834 | fjp | // Ponemos el resto de temas desactivados
|
143 | if (mapCtrl != null) |
||
144 | mapCtrl.getMapContext().getLayers().setActive(false);
|
||
145 | // y activamos el nuevo.
|
||
146 | e.getSource().setActive(true);
|
||
147 | 5207 | caballero | |
148 | 5063 | jorpiell | if (e.getSource() instanceof FLyrVect){ |
149 | FLyrVect fLyrVect = (FLyrVect)e.getSource(); |
||
150 | 5207 | caballero | VectorialEditableAdapter vea = |
151 | 5063 | jorpiell | (VectorialEditableAdapter)fLyrVect.getSource(); |
152 | 5207 | caballero | vea.addEditionListener(new EditionChangeManager(fLyrVect));
|
153 | 5063 | jorpiell | } |
154 | 5014 | caballero | }else{
|
155 | for (int i = 0; i < editedLayers.size(); i++) { |
||
156 | VectorialLayerEdited vle = (VectorialLayerEdited) editedLayers.get(i); |
||
157 | if (vle.equals(lyrEdit)) {
|
||
158 | editedLayers.remove(i); |
||
159 | ile=null;
|
||
160 | //idActiveLayer=-1;
|
||
161 | return;
|
||
162 | } |
||
163 | } |
||
164 | 4144 | fjp | } |
165 | 5014 | caballero | |
166 | 5207 | caballero | |
167 | |||
168 | 4144 | fjp | } |
169 | 4147 | fjp | |
170 | /**
|
||
171 | * @return Returns the activeLayerEdited. Null if there isn't any active AND edited
|
||
172 | */
|
||
173 | public ILayerEdited getActiveLayerEdited() {
|
||
174 | 5014 | caballero | return ile;
|
175 | 4147 | fjp | } |
176 | |||
177 | /**
|
||
178 | * @return Returns the mapCtrl.
|
||
179 | */
|
||
180 | public MapControl getMapControl() {
|
||
181 | return mapCtrl;
|
||
182 | } |
||
183 | |||
184 | /**
|
||
185 | * @param mapCtrl The mapCtrl to set.
|
||
186 | */
|
||
187 | public void setMapControl(MapControl mapCtrl) { |
||
188 | if (mapCtrl != null) |
||
189 | { |
||
190 | this.mapCtrl = mapCtrl;
|
||
191 | mapCtrl.getMapContext().getLayers().addLayerListener(this);
|
||
192 | 5227 | caballero | mapCtrl.getMapContext().getLayers().addLayerCollectionListener(this);
|
193 | 4147 | fjp | } |
194 | } |
||
195 | |||
196 | 5227 | caballero | public void layerAdded(LayerCollectionEvent e) { |
197 | // TODO Auto-generated method stub
|
||
198 | 4366 | caballero | |
199 | 5227 | caballero | } |
200 | |||
201 | public void layerMoved(LayerPositionEvent e) { |
||
202 | // TODO Auto-generated method stub
|
||
203 | |||
204 | } |
||
205 | |||
206 | public void layerRemoved(LayerCollectionEvent e) { |
||
207 | VectorialLayerEdited vle=(VectorialLayerEdited)getActiveLayerEdited(); |
||
208 | 5256 | caballero | if (vle!=null){ |
209 | 6305 | caballero | //FLayers layers=getMapControl().getMapContext().getLayers();
|
210 | 6173 | caballero | //if (layers.getLayersCount()>0)
|
211 | // layers.getLayer(0).setActive(true);
|
||
212 | 8930 | caballero | vle.clearSelection(VectorialLayerEdited.NOTSAVEPREVIOUS); |
213 | 6305 | caballero | editedLayers.remove(vle); |
214 | getMapControl().setTool("zoomIn");
|
||
215 | 5256 | caballero | FLyrVect lv=(FLyrVect)vle.getLayer(); |
216 | if (e.getAffectedLayer().equals(lv)){
|
||
217 | 8930 | caballero | IWindow window=PluginServices.getMDIManager().getActiveWindow(); |
218 | if (window instanceof View) { |
||
219 | View view=(View)window; |
||
220 | view.hideConsole(); |
||
221 | view.validate(); |
||
222 | view.repaint(); |
||
223 | } |
||
224 | 5256 | caballero | } |
225 | PluginServices.getMainFrame().enableControls(); |
||
226 | 5227 | caballero | } |
227 | |||
228 | } |
||
229 | |||
230 | public void layerAdding(LayerCollectionEvent e) throws CancelationException { |
||
231 | // TODO Auto-generated method stub
|
||
232 | |||
233 | } |
||
234 | |||
235 | public void layerMoving(LayerPositionEvent e) throws CancelationException { |
||
236 | // TODO Auto-generated method stub
|
||
237 | |||
238 | } |
||
239 | |||
240 | public void layerRemoving(LayerCollectionEvent e) throws CancelationException { |
||
241 | // TODO Auto-generated method stub
|
||
242 | |||
243 | } |
||
244 | |||
245 | public void activationChanged(LayerCollectionEvent e) throws CancelationException { |
||
246 | // TODO Auto-generated method stub
|
||
247 | |||
248 | } |
||
249 | |||
250 | public void visibilityChanged(LayerCollectionEvent e) throws CancelationException { |
||
251 | // TODO Auto-generated method stub
|
||
252 | |||
253 | } |
||
254 | |||
255 | |||
256 | 5845 | fjp | |
257 | 4144 | fjp | } |