Statistics
| Revision:

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

History | View | Annotate | Download (3.9 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.layers.VectorialLayerEdited;
29
import com.iver.cit.gvsig.project.ProjectView;
30
import com.iver.utiles.SimpleFileFilter;
31

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

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

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

    
56
                vista = (View) f;
57

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

    
74
                                        return;
75
                                }
76
                        }
77
                }
78
                PluginServices.getMainFrame().enableControls();
79
        }
80

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

    
125
        }
126
}