Statistics
| Revision:

root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / StopEditingToGT2Shp.java @ 9243

History | View | Annotate | Download (4.26 KB)

1 3731 fjp
package com.iver.cit.gvsig;
2
3 3808 fjp
import java.awt.Component;
4 3731 fjp
import java.io.File;
5 3786 fjp
import java.net.URL;
6 3731 fjp
7 3808 fjp
import javax.swing.JFileChooser;
8
9 3786 fjp
import org.geotools.data.FeatureStore;
10
import org.geotools.data.FeatureWriter;
11
import org.geotools.data.shapefile.ShapefileDataStore;
12
import org.geotools.feature.FeatureType;
13 3731 fjp
14
import com.iver.andami.PluginServices;
15
import com.iver.andami.plugins.Extension;
16 6878 cesar
import com.iver.cit.gvsig.fmap.MapContext;
17 7550 caballero
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
18 5184 caballero
import com.iver.cit.gvsig.fmap.edition.EditionEvent;
19 3731 fjp
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
20
import com.iver.cit.gvsig.fmap.layers.FLayers;
21
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
22 7410 caballero
import com.iver.cit.gvsig.project.documents.view.IProjectView;
23 7304 caballero
import com.iver.cit.gvsig.project.documents.view.gui.View;
24 3786 fjp
import com.iver.cit.gvsig.writers.WriterGT2;
25 3808 fjp
import com.iver.utiles.SimpleFileFilter;
26 3731 fjp
27
28
/**
29
 * DOCUMENT ME!
30 5184 caballero
 *
31 3731 fjp
 * @author Vicente Caballero Navarro
32
 */
33 5005 jorpiell
public class StopEditingToGT2Shp extends Extension {
34 3731 fjp
    /**
35 5005 jorpiell
         * @see com.iver.andami.plugins.IExtension#initialize()
36 3808 fjp
         */
37 5005 jorpiell
    public void initialize() {
38 3731 fjp
    }
39
40
    /**
41 5005 jorpiell
         * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
42 3808 fjp
         */
43 3731 fjp
    public void execute(String s) {
44 6877 cesar
        com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
45 6880 cesar
                                                             .getActiveWindow();
46 3731 fjp
47
        View vista = (View) f;
48 7410 caballero
        IProjectView model = vista.getModel();
49 6878 cesar
        MapContext mapa = model.getMapContext();
50 3731 fjp
            FLayers layers = mapa.getLayers();
51
            if (s.equals("STOPEDITING")){
52
            for (int i = 0; i < layers.getLayersCount(); i++) {
53
                if (layers.getLayer(i) instanceof FLyrVect &&
54
                        layers.getLayer(i).isEditing()) {
55
                    FLyrVect lv = (FLyrVect) layers.getLayer(i);
56
                    stopEditing(lv);
57
58
                    return;
59
                }
60
            }
61
            }
62
            PluginServices.getMainFrame().enableControls();
63
    }
64
65
    /**
66 5005 jorpiell
         * @see com.iver.andami.plugins.IExtension#isEnabled()
67 3808 fjp
         */
68 3731 fjp
    public boolean isEnabled() {
69
        return true;
70
    }
71
72 5184 caballero
73
74
75 3731 fjp
    /**
76 3808 fjp
         * DOCUMENT ME!
77
         */
78 3731 fjp
    public void stopEditing(FLyrVect layer) {
79
        try {
80 3786 fjp
            // WriterGT2Shp writer = new WriterGT2Shp(layer);
81 5184 caballero
82
83 3808 fjp
            JFileChooser jfc = new JFileChooser();
84
            // if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
85
             /*
86
                                 * FLyrVect layer = (FLyrVect) test.createLayer("prueba",
87
                                 * (VectorialFileDriver) driverManager.getDriver( "gvSIG shp
88 7550 caballero
                                 * driver"), original, CRSFactory.getCRS("EPSG:23030"));
89 3808 fjp
                                 */
90
            SimpleFileFilter filterShp = new SimpleFileFilter(".shp", "Ficheros .shp");
91
            jfc.setFileFilter(filterShp);
92
             if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION)
93
             {
94
                             File newFile = jfc.getSelectedFile();
95
                             FeatureType featType = WriterGT2.getFeatureType(layer, "the_geom",
96
                                             newFile.getName());
97
                                        URL theUrl = newFile.toURL();
98
                                        ShapefileDataStore dataStore = new ShapefileDataStore(theUrl);
99
                                        dataStore.createSchema(featType);
100 5184 caballero
101 3808 fjp
                                        String featureName = dataStore.getTypeNames()[0];
102
                                        FeatureStore featStore = (FeatureStore) dataStore.getFeatureSource(featureName);
103 5184 caballero
104 3808 fjp
                                        // Necesitamos crear de verdad los ficheros antes de usarlos
105
                                        // para meter las features
106
                                        FeatureWriter featWriter = dataStore.getFeatureWriterAppend(featureName, featStore.getTransaction());
107
                                        featWriter.close();
108
                                        // Aqu? ya tenemos un fichero vac?o, listo para usar.
109 5184 caballero
110
111 3808 fjp
                                        WriterGT2 writer = new WriterGT2(featStore, true);
112 5184 caballero
113 3808 fjp
                            VectorialEditableAdapter vea = (VectorialEditableAdapter) layer.getSource();
114 5184 caballero
                            vea.stopEdition(writer,EditionEvent.GRAPHIC);
115 3808 fjp
                            layer.setSource(vea.getOriginalAdapter());
116
                            layer.setEditing(false);
117
             }
118 3731 fjp
        } catch (Exception e) {
119
            e.printStackTrace();
120
        }
121
    }
122
123 3802 fjp
124 3731 fjp
    /**
125 5005 jorpiell
         * @see com.iver.andami.plugins.IExtension#isVisible()
126 3808 fjp
         */
127 3731 fjp
    public boolean isVisible() {
128 3808 fjp
        if (EditionUtilities.getEditionStatus() == EditionUtilities.EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE)
129
                return true;
130 6604 caballero
              return false;
131 3731 fjp
132
    }
133
}