Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_896 / extensions / extCAD / src / com / iver / cit / gvsig / EditionUtilities.java @ 10391

History | View | Annotate | Download (4.56 KB)

1 3808 fjp
package com.iver.cit.gvsig;
2
3 4430 fjp
import java.util.ArrayList;
4
5 3808 fjp
import com.iver.andami.PluginServices;
6 4850 fjp
import com.iver.cit.gvsig.fmap.DriverException;
7 6878 cesar
import com.iver.cit.gvsig.fmap.MapContext;
8 5558 fjp
import com.iver.cit.gvsig.fmap.drivers.ILayerDefinition;
9
import com.iver.cit.gvsig.fmap.drivers.LayerDefinition;
10 5595 fjp
import com.iver.cit.gvsig.fmap.drivers.VectorialDatabaseDriver;
11 4430 fjp
import com.iver.cit.gvsig.fmap.layers.FLayer;
12 3808 fjp
import com.iver.cit.gvsig.fmap.layers.FLayers;
13
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
14 9380 jmvivo
import com.iver.cit.gvsig.fmap.layers.LayersIterator;
15 8765 jjdelcerro
import com.iver.cit.gvsig.project.documents.view.IProjectView;
16
import com.iver.cit.gvsig.project.documents.view.gui.View;
17 3808 fjp
18
/**
19
 * @author fjp
20 8765 jjdelcerro
 *
21 3808 fjp
 * Clase con m?todos muy ?tiles a la hora de hacer nuevas extensiones, y otras
22
 * cosas que puedan ser gen?ricas para este plugin.
23
 *
24
 */
25
public class EditionUtilities {
26 8765 jjdelcerro
27 3808 fjp
        public static final int EDITION_STATUS_NO_EDITION = 0;
28
        public static final int EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE = 1;
29
        public static final int EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE = 2;
30
        public static final int EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE = 3;
31
        public static final int EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE = 4;
32
        public static int getEditionStatus()
33
        {
34
                int status = EDITION_STATUS_NO_EDITION;
35 6877 cesar
        com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
36 6880 cesar
        .getActiveWindow();
37 3808 fjp
        if (f == null)
38
                return status;
39
40 5900 jorpiell
        if (f instanceof View) {
41 3808 fjp
                View vista = (View) f;
42 8765 jjdelcerro
                IProjectView model = vista.getModel();
43 6878 cesar
                MapContext mapa = model.getMapContext();
44 3808 fjp
45
                FLayers capas = mapa.getLayers();
46
47
                int numActiveVectorial = 0;
48
                int numActiveVectorialEditable = 0;
49 9380 jmvivo
50
                LayersIterator iter = new LayersIterator(capas);
51
52
                FLayer capa;
53
                while (iter.hasNext()) {
54
                        capa = iter.nextLayer();
55
                        if (capa instanceof FLyrVect &&
56
                                        capa.isActive() && capa.isAvailable()) {
57 3808 fjp
                                numActiveVectorial++;
58 9380 jmvivo
                                if (capa.isEditing())
59 3808 fjp
                                        numActiveVectorialEditable++;
60
                        }
61 9380 jmvivo
62
                }
63
64
                if (numActiveVectorialEditable == 1 && numActiveVectorial == 1)
65 3808 fjp
                        return EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE;
66 9380 jmvivo
                if (numActiveVectorialEditable > 1 && numActiveVectorial == numActiveVectorialEditable)
67 3808 fjp
                        return EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE_AND_EDITABLE;
68
                if (numActiveVectorial == 1)
69
                        return EDITION_STATUS_ONE_VECTORIAL_LAYER_ACTIVE;
70
                if (numActiveVectorial > 1)
71
                        return EDITION_STATUS_MULTIPLE_VECTORIAL_LAYER_ACTIVE;
72 8765 jjdelcerro
73 3808 fjp
        }
74 8765 jjdelcerro
75 3808 fjp
                return status;
76
        }
77
78 4430 fjp
        public static FLayer[] getActiveAndEditedLayers()
79
        {
80
                int status = EDITION_STATUS_NO_EDITION;
81 6877 cesar
        com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager()
82 6880 cesar
        .getActiveWindow();
83 4430 fjp
        if (f == null)
84
                return null;
85
86 5900 jorpiell
        if (f instanceof View) {
87 4430 fjp
                View vista = (View) f;
88 8765 jjdelcerro
                IProjectView model = vista.getModel();
89 6878 cesar
                MapContext mapa = model.getMapContext();
90 8765 jjdelcerro
91 4430 fjp
                ArrayList resul = new ArrayList();
92
93
                FLayers capas = mapa.getLayers();
94
95
                int numActiveVectorial = 0;
96
                int numActiveVectorialEditable = 0;
97 9380 jmvivo
98
                LayersIterator iter = new LayersIterator(capas);
99
                FLayer capa;
100
                while (iter.hasNext()) {
101
                        capa = iter.nextLayer();
102
                        if (capa instanceof FLyrVect &&
103
                                        capa.isActive()) {
104 4430 fjp
                                numActiveVectorial++;
105 9380 jmvivo
                                if (capa.isEditing())
106 4430 fjp
                                {
107
                                        numActiveVectorialEditable++;
108 9380 jmvivo
                                        resul.add(capa);
109 4430 fjp
                                }
110
                        }
111 9380 jmvivo
112 4430 fjp
                }
113 9380 jmvivo
                if (resul.isEmpty())
114
                        return null;
115
116 4430 fjp
                       return (FLayer[]) resul.toArray(new FLayer[0]);
117 8765 jjdelcerro
118 4430 fjp
        }
119 8765 jjdelcerro
120 4430 fjp
                return null;
121
        }
122 5558 fjp
123
        public static ILayerDefinition createLayerDefinition(FLyrVect layer) throws DriverException {
124 5595 fjp
                LayerDefinition lyrDef;
125
                if (layer.getSource().getDriver() instanceof VectorialDatabaseDriver)
126
                {
127
                        VectorialDatabaseDriver dbDriver = (VectorialDatabaseDriver) layer.getSource().getDriver();
128 8765 jjdelcerro
                        return dbDriver.getLyrDef();
129 5558 fjp
                }
130 5595 fjp
                else
131
                {
132
                        lyrDef = new LayerDefinition();
133
                        lyrDef.setShapeType(layer.getShapeType());
134
                        lyrDef.setProjection(layer.getProjection());
135
                        lyrDef.setName(layer.getName());
136
                        try {
137
                                lyrDef.setFieldsDesc(layer.getRecordset().getFieldsDescription());
138
                        } catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
139
                                e.printStackTrace();
140
                                throw new DriverException(e);
141 8765 jjdelcerro
                        }
142 5595 fjp
                }
143 5558 fjp
                return lyrDef;
144
        }
145 8765 jjdelcerro
146 3808 fjp
}