svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / StopEditing.java @ 5571
History | View | Annotate | Download (5.11 KB)
1 | 4421 | fjp | package com.iver.cit.gvsig; |
---|---|---|---|
2 | |||
3 | 5267 | fjp | import java.io.IOException; |
4 | |||
5 | import javax.swing.JOptionPane; |
||
6 | |||
7 | 4421 | fjp | import com.iver.andami.PluginServices; |
8 | 5267 | fjp | import com.iver.andami.messages.NotificationManager; |
9 | 4421 | fjp | import com.iver.andami.plugins.Extension; |
10 | 5558 | fjp | import com.iver.cit.gvsig.fmap.DriverException; |
11 | 4421 | fjp | import com.iver.cit.gvsig.fmap.FMap; |
12 | import com.iver.cit.gvsig.fmap.MapControl; |
||
13 | 5558 | fjp | import com.iver.cit.gvsig.fmap.drivers.ILayerDefinition; |
14 | 5184 | caballero | import com.iver.cit.gvsig.fmap.edition.EditionEvent; |
15 | 4421 | fjp | import com.iver.cit.gvsig.fmap.edition.EditionException; |
16 | 4430 | fjp | import com.iver.cit.gvsig.fmap.edition.ISpatialWriter; |
17 | 4421 | fjp | import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter; |
18 | import com.iver.cit.gvsig.fmap.layers.FLayer; |
||
19 | import com.iver.cit.gvsig.fmap.layers.FLayers; |
||
20 | import com.iver.cit.gvsig.fmap.layers.FLyrVect; |
||
21 | 5558 | fjp | import com.iver.cit.gvsig.fmap.layers.SelectableDataSource; |
22 | 5267 | fjp | import com.iver.cit.gvsig.gui.Table; |
23 | 4421 | fjp | import com.iver.cit.gvsig.gui.View; |
24 | import com.iver.cit.gvsig.project.ProjectView; |
||
25 | |||
26 | /**
|
||
27 | * @author Francisco Jos?
|
||
28 | 5482 | caballero | *
|
29 | 4430 | fjp | * Cuando un tema se pone en edici?n, puede que su driver implemente
|
30 | * ISpatialWriter. En ese caso, es capaz de guardarse sobre s? mismo. Si no lo
|
||
31 | * implementa, esta opci?n estar? deshabilitada y la ?nica posibilidad de
|
||
32 | * guardar este tema ser? "Guardando como..."
|
||
33 | 4421 | fjp | */
|
34 | 5005 | jorpiell | public class StopEditing extends Extension { |
35 | 4430 | fjp | private View vista; |
36 | |||
37 | 4421 | fjp | /**
|
38 | 5005 | jorpiell | * @see com.iver.andami.plugins.IExtension#initialize()
|
39 | 4430 | fjp | */
|
40 | 5005 | jorpiell | public void initialize() { |
41 | 4430 | fjp | } |
42 | 4421 | fjp | |
43 | 4430 | fjp | /**
|
44 | 5005 | jorpiell | * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
|
45 | 4430 | fjp | */
|
46 | public void execute(String s) { |
||
47 | com.iver.andami.ui.mdiManager.View f = PluginServices.getMDIManager() |
||
48 | .getActiveView(); |
||
49 | 4421 | fjp | |
50 | 4430 | fjp | vista = (View) f;
|
51 | 4421 | fjp | |
52 | 4430 | fjp | ProjectView model = vista.getModel(); |
53 | FMap mapa = model.getMapContext(); |
||
54 | FLayers layers = mapa.getLayers(); |
||
55 | 4475 | fjp | EditionManager edMan = CADExtension.getEditionManager(); |
56 | 4430 | fjp | if (s.equals("STOPEDITING")) { |
57 | FLayer[] actives = layers.getActives();
|
||
58 | // TODO: Comprobar que solo hay una activa, o al menos
|
||
59 | // que solo hay una en edici?n que est? activa, etc, etc
|
||
60 | for (int i = 0; i < actives.length; i++) { |
||
61 | if (actives[i] instanceof FLyrVect && actives[i].isEditing()) { |
||
62 | FLyrVect lv = (FLyrVect) actives[i]; |
||
63 | MapControl mapControl = (MapControl) vista.getMapControl(); |
||
64 | 5267 | fjp | // VectorialLayerEdited lyrEd = (VectorialLayerEdited)
|
65 | // edMan.getActiveLayerEdited();
|
||
66 | // lyrEd.clearSelection();
|
||
67 | 4430 | fjp | stopEditing(lv, mapControl); |
68 | 4421 | fjp | |
69 | 5267 | fjp | // return;
|
70 | 4430 | fjp | } |
71 | } |
||
72 | 5267 | fjp | vista.getMapControl().setTool("zoomIn");
|
73 | 5482 | caballero | vista.hideConsole(); |
74 | 4430 | fjp | } |
75 | PluginServices.getMainFrame().enableControls(); |
||
76 | } |
||
77 | 4421 | fjp | |
78 | 4430 | fjp | /**
|
79 | 5005 | jorpiell | * @see com.iver.andami.plugins.IExtension#isEnabled()
|
80 | 4430 | fjp | */
|
81 | 5267 | fjp | public boolean isEnabled() { |
82 | 4430 | fjp | FLayer[] lyrs = EditionUtilities.getActiveAndEditedLayers();
|
83 | 5267 | fjp | if (lyrs == null) |
84 | return false; |
||
85 | 4430 | fjp | FLyrVect lyrVect = (FLyrVect) lyrs[0];
|
86 | 5267 | fjp | if (lyrVect.getSource() instanceof VectorialEditableAdapter) { |
87 | 5526 | caballero | if (!lyrVect.getSource().getDriver().isWritable())
|
88 | return false; |
||
89 | 5267 | fjp | VectorialEditableAdapter vea = (VectorialEditableAdapter) lyrVect |
90 | .getSource(); |
||
91 | if (vea.getDriver() instanceof ISpatialWriter) |
||
92 | return true; |
||
93 | 4950 | caballero | } |
94 | return false; |
||
95 | 5267 | fjp | } |
96 | |||
97 | 4430 | fjp | /**
|
98 | * DOCUMENT ME!
|
||
99 | */
|
||
100 | 5267 | fjp | public void stopEditing(FLyrVect layer, MapControl mapControl) { |
101 | VectorialEditableAdapter vea = (VectorialEditableAdapter) layer |
||
102 | .getSource(); |
||
103 | 4950 | caballero | |
104 | 4430 | fjp | ISpatialWriter writer = (ISpatialWriter) vea.getDriver(); |
105 | 4950 | caballero | |
106 | 5267 | fjp | int resp = JOptionPane |
107 | .showConfirmDialog(null, PluginServices.getText(this, |
||
108 | 5373 | fjp | "realmente_desea_guardar_features_de_capa") + layer.getName(),
|
109 | PluginServices.getText(this,"Guardar"), |
||
110 | 5267 | fjp | JOptionPane.YES_NO_OPTION);
|
111 | 4421 | fjp | try {
|
112 | 5267 | fjp | if (resp == JOptionPane.NO_OPTION) { // CANCEL EDITING |
113 | com.iver.andami.ui.mdiManager.View[] views = PluginServices
|
||
114 | .getMDIManager().getAllViews(); |
||
115 | for (int j = 0; j < views.length; j++) { |
||
116 | if (views[j] instanceof Table) { |
||
117 | Table table = (Table) views[j]; |
||
118 | if (table.getModel().getAssociatedTable() != null |
||
119 | && table.getModel().getAssociatedTable() |
||
120 | .equals(layer)) { |
||
121 | table.cancelEditing(); |
||
122 | } |
||
123 | } |
||
124 | } |
||
125 | } else { // GUARDAMOS EL TEMA |
||
126 | 5571 | jmvivo | com.iver.andami.ui.mdiManager.View[] views = PluginServices
|
127 | .getMDIManager().getAllViews(); |
||
128 | for (int j = 0; j < views.length; j++) { |
||
129 | if (views[j] instanceof Table) { |
||
130 | Table table = (Table) views[j]; |
||
131 | if (table.getModel().getAssociatedTable() != null |
||
132 | && table.getModel().getAssociatedTable() |
||
133 | .equals(layer)) { |
||
134 | table.stopEditingCell(); |
||
135 | } |
||
136 | } |
||
137 | } |
||
138 | 5558 | fjp | ILayerDefinition lyrDef = EditionUtilities.createLayerDefinition(layer); |
139 | writer.initialize( lyrDef); |
||
140 | 5482 | caballero | vea.stopEdition(writer, EditionEvent.GRAPHIC); |
141 | 5267 | fjp | } |
142 | vea.getCommandRecord().removeCommandListener(mapControl); |
||
143 | layer.setEditing(false);
|
||
144 | 4421 | fjp | } catch (EditionException e) {
|
145 | 5267 | fjp | NotificationManager.addError(e); |
146 | |||
147 | } catch (IOException e) { |
||
148 | NotificationManager.addError(e); |
||
149 | 5558 | fjp | } catch (DriverException e) {
|
150 | NotificationManager.addError(e); |
||
151 | 4421 | fjp | } |
152 | 4950 | caballero | |
153 | 5267 | fjp | } |
154 | |||
155 | 4430 | fjp | /**
|
156 | 5005 | jorpiell | * @see com.iver.andami.plugins.IExtension#isVisible()
|
157 | 4430 | fjp | */
|
158 | public boolean isVisible() { |
||
159 | if (EditionUtilities.getEditionStatus() == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE)
|
||
160 | return true; |
||
161 | else
|
||
162 | return false; |
||
163 | 4421 | fjp | |
164 | 4430 | fjp | } |
165 | 4421 | fjp | } |