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