Statistics
| Revision:

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
}