Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / StopEditing.java @ 4430

History | View | Annotate | Download (3.67 KB)

1
package com.iver.cit.gvsig;
2

    
3
import java.awt.Component;
4
import java.io.File;
5
import java.io.IOException;
6

    
7
import javax.swing.JFileChooser;
8

    
9
import com.hardcode.driverManager.Driver;
10
import com.iver.andami.PluginServices;
11
import com.iver.andami.plugins.Extension;
12
import com.iver.cit.gvsig.fmap.DriverException;
13
import com.iver.cit.gvsig.fmap.FMap;
14
import com.iver.cit.gvsig.fmap.MapControl;
15
import com.iver.cit.gvsig.fmap.edition.EditionException;
16
import com.iver.cit.gvsig.fmap.edition.ISpatialWriter;
17
import com.iver.cit.gvsig.fmap.edition.IWriter;
18
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
19
import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
20
//import com.iver.cit.gvsig.fmap.edition.writers.shp.ShpWriter;
21
import com.iver.cit.gvsig.fmap.layers.FLayer;
22
import com.iver.cit.gvsig.fmap.layers.FLayers;
23
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
24
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
25
import com.iver.cit.gvsig.fmap.layers.VectorialAdapter;
26
import com.iver.cit.gvsig.fmap.layers.VectorialFileAdapter;
27
import com.iver.cit.gvsig.gui.View;
28
import com.iver.cit.gvsig.project.ProjectView;
29
import com.iver.utiles.SimpleFileFilter;
30

    
31
/**
32
 * @author Francisco Jos?
33
 * 
34
 * Cuando un tema se pone en edici?n, puede que su driver implemente
35
 * ISpatialWriter. En ese caso, es capaz de guardarse sobre s? mismo. Si no lo
36
 * implementa, esta opci?n estar? deshabilitada y la ?nica posibilidad de
37
 * guardar este tema ser? "Guardando como..."
38
 */
39
public class StopEditing implements Extension {
40
        private View vista;
41

    
42
        /**
43
         * @see com.iver.andami.plugins.Extension#inicializar()
44
         */
45
        public void inicializar() {
46
        }
47

    
48
        /**
49
         * @see com.iver.andami.plugins.Extension#execute(java.lang.String)
50
         */
51
        public void execute(String s) {
52
                com.iver.andami.ui.mdiManager.View f = PluginServices.getMDIManager()
53
                                .getActiveView();
54

    
55
                vista = (View) f;
56

    
57
                ProjectView model = vista.getModel();
58
                FMap mapa = model.getMapContext();
59
                FLayers layers = mapa.getLayers();
60
                if (s.equals("STOPEDITING")) {
61
                        FLayer[] actives = layers.getActives();
62
                        // TODO: Comprobar que solo hay una activa, o al menos
63
                        // que solo hay una en edici?n que est? activa, etc, etc
64
                        for (int i = 0; i < actives.length; i++) {
65
                                if (actives[i] instanceof FLyrVect && actives[i].isEditing()) {
66
                                        FLyrVect lv = (FLyrVect) actives[i];
67
                                        MapControl mapControl = (MapControl) vista.getMapControl();
68
                                        stopEditing(lv, mapControl);
69

    
70
                                        return;
71
                                }
72
                        }
73
                }
74
                PluginServices.getMainFrame().enableControls();
75
        }
76

    
77
        /**
78
         * @see com.iver.andami.plugins.Extension#isEnabled()
79
         */
80
public boolean isEnabled() {
81
                FLayer[] lyrs = EditionUtilities.getActiveAndEditedLayers();
82
                if (lyrs == null) return false;
83
                FLyrVect lyrVect = (FLyrVect) lyrs[0];
84
                VectorialEditableAdapter vea = (VectorialEditableAdapter) lyrVect.getSource();
85
                
86
                if (vea.getDriver() instanceof ISpatialWriter)
87
                        return true;
88
                else
89
                        return false;
90
    }
91
        /**
92
         * DOCUMENT ME!
93
         */
94
public void stopEditing(FLyrVect layer,MapControl mapControl) {
95
            VectorialEditableAdapter vea = (VectorialEditableAdapter) layer.getSource();
96
            
97
                ISpatialWriter writer = (ISpatialWriter) vea.getDriver();
98
                
99
                try {
100
                        writer.initialize(vea);
101
                vea.stopEdition(writer);
102
                vea.getCommandRecord().removeCommandListener(mapControl);
103
                
104
                layer.setEditing(false);
105
                vista.hideConsole();
106
                } catch (EditionException e) {
107
                        // TODO Auto-generated catch block
108
                        e.printStackTrace();
109
                }
110
                
111
    }
112
        /**
113
         * @see com.iver.andami.plugins.Extension#isVisible()
114
         */
115
        public boolean isVisible() {
116
                if (EditionUtilities.getEditionStatus() == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE)
117
                        return true;
118
                else
119
                        return false;
120

    
121
        }
122
}