svn-gvsig-desktop / tags / v1_0_2_Build_897 / extensions / extCAD / src / com / iver / cit / gvsig / EditionUtilities.java @ 10444
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 | } |