gvsig-geoprocess / org.gvsig.sextante / trunk / org.gvsig.sextante.app / org.gvsig.sextante.app.extension / src / main / java / org / gvsig / sextante / app / extension / gui / gvInputFactory.java @ 43
History | View | Annotate | Download (4.86 KB)
1 |
package org.gvsig.sextante.app.extension.gui; |
---|---|
2 |
|
3 |
import java.awt.geom.Rectangle2D; |
4 |
import java.util.ArrayList; |
5 |
import java.util.List; |
6 |
|
7 |
import org.gvsig.andami.PluginServices; |
8 |
import org.gvsig.app.extension.ProjectExtension; |
9 |
import org.gvsig.app.project.Project; |
10 |
import org.gvsig.app.project.ProjectManager; |
11 |
import org.gvsig.app.project.documents.Document; |
12 |
import org.gvsig.app.project.documents.table.TableDocument; |
13 |
import org.gvsig.app.project.documents.table.TableManager; |
14 |
import org.gvsig.app.project.documents.view.DefaultViewDocument; |
15 |
import org.gvsig.app.project.documents.view.ViewManager; |
16 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
17 |
import org.gvsig.fmap.mapcontext.layers.FLayers; |
18 |
import org.gvsig.fmap.mapcontext.layers.LayersIterator; |
19 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
20 |
import org.gvsig.fmap.raster.layers.FLyrRasterSE; |
21 |
import org.gvsig.sextante.app.extension.core.FileTools; |
22 |
import org.gvsig.sextante.app.extension.core.gvRasterLayer; |
23 |
import org.gvsig.sextante.app.extension.core.gvTable; |
24 |
import org.gvsig.sextante.app.extension.core.gvVectorLayer; |
25 |
|
26 |
import es.unex.sextante.core.AbstractInputFactory; |
27 |
import es.unex.sextante.core.NamedExtent; |
28 |
import es.unex.sextante.dataObjects.IDataObject; |
29 |
|
30 |
public class gvInputFactory extends AbstractInputFactory { |
31 |
|
32 |
public void createDataObjects() { |
33 |
|
34 |
ArrayList list = new ArrayList(); |
35 |
|
36 |
// Project project = ((ProjectExtension)PluginServices.getExtension(ProjectExtension.class)).getProject();
|
37 |
final Project project = ProjectManager.getInstance().getCurrentProject();
|
38 |
List<Document> views = project.getDocuments(ViewManager.TYPENAME); |
39 |
for (int i = 0; i < views.size(); i++) { |
40 |
DefaultViewDocument view = (DefaultViewDocument) views.get(i); |
41 |
FLayers layers = view.getMapContext().getLayers(); |
42 |
LayersIterator iter = new LayersIterator(layers);
|
43 |
while (iter.hasNext()){
|
44 |
FLayer layer = iter.nextLayer(); |
45 |
if (layer instanceof FLyrRasterSE){ |
46 |
gvRasterLayer rasterLayer = new gvRasterLayer();
|
47 |
rasterLayer.create((FLyrRasterSE)layer); |
48 |
list.add(rasterLayer); |
49 |
} |
50 |
else if (layer instanceof FLyrVect){ |
51 |
gvVectorLayer vectorLayer =new gvVectorLayer();
|
52 |
vectorLayer.create((FLyrVect)layer); |
53 |
list.add(vectorLayer); |
54 |
} |
55 |
} |
56 |
} |
57 |
|
58 |
List<Document> tables = project.getDocuments(TableManager.TYPENAME); |
59 |
for (int i = 0; i < tables.size(); i++) { |
60 |
gvTable table = new gvTable();
|
61 |
table.create((TableDocument) tables.get(i)); |
62 |
list.add(table); |
63 |
} |
64 |
|
65 |
m_Objects = new IDataObject[list.size()];
|
66 |
for (int i = 0; i < list.size(); i++) { |
67 |
m_Objects[i] = (IDataObject)list.get(i); |
68 |
} |
69 |
|
70 |
} |
71 |
|
72 |
public NamedExtent[] getPredefinedExtents() { |
73 |
final Project project = ProjectManager.getInstance().getCurrentProject();
|
74 |
List<Document> views = project.getDocuments(ViewManager.TYPENAME); |
75 |
NamedExtent ne[] = new NamedExtent[views.size()]; |
76 |
for (int i = 0; i < views.size(); i++) { |
77 |
DefaultViewDocument view = (DefaultViewDocument) views.get(i); |
78 |
Rectangle2D extent = view.getMapContext().getViewPort().getExtent();
|
79 |
String sName = view.getName();
|
80 |
ne[i] = new NamedExtent(sName, extent);
|
81 |
} |
82 |
|
83 |
return ne;
|
84 |
} |
85 |
|
86 |
|
87 |
public String[] getRasterLayerInputExtensions() { |
88 |
return FileTools.RASTER_EXT_IN;
|
89 |
} |
90 |
|
91 |
public String[] getVectorLayerInputExtensions() { |
92 |
return FileTools.VECTOR_EXT_IN;
|
93 |
} |
94 |
|
95 |
public String[] getTableInputExtensions() { |
96 |
return FileTools.TABLE_EXT;
|
97 |
} |
98 |
|
99 |
public IDataObject openDataObjectFromFile(String sFilename) { |
100 |
Object object = FileTools.open(sFilename);
|
101 |
|
102 |
if (object == null) { |
103 |
return null; |
104 |
} else
|
105 |
if (object instanceof FLyrRasterSE) { |
106 |
gvRasterLayer layer = new gvRasterLayer();
|
107 |
layer.create(object); |
108 |
return layer;
|
109 |
} else
|
110 |
if (object instanceof FLyrVect) { |
111 |
gvVectorLayer layer = new gvVectorLayer();
|
112 |
layer.create(object); |
113 |
return layer;
|
114 |
} else
|
115 |
return null; |
116 |
} |
117 |
|
118 |
public void close(String sName) { |
119 |
IDataObject dataObject = this.getInputFromName(sName);
|
120 |
|
121 |
Object obj = dataObject.getBaseDataObject();
|
122 |
if (obj instanceof FLayer){ |
123 |
removeLayer((FLayer)obj); |
124 |
} else {
|
125 |
Project project = ((ProjectExtension)PluginServices.getExtension(ProjectExtension.class)).getProject(); |
126 |
project.remove((Document) obj);
|
127 |
} |
128 |
} |
129 |
|
130 |
private static void removeLayer(FLayer baseLayer) { |
131 |
Project project = ((ProjectExtension)PluginServices.getExtension(ProjectExtension.class)).getProject(); |
132 |
List<Document> views = project.getDocuments(ViewManager.TYPENAME); |
133 |
for (int i = 0; i < views.size(); i++) { |
134 |
DefaultViewDocument view = (DefaultViewDocument) views.get(i); |
135 |
FLayers layers = view.getMapContext().getLayers(); |
136 |
LayersIterator iter = new LayersIterator(layers);
|
137 |
while (iter.hasNext()){
|
138 |
FLayer layer = iter.nextLayer(); |
139 |
if (layer.equals(baseLayer)){
|
140 |
layers.removeLayer(baseLayer); |
141 |
return;
|
142 |
} |
143 |
} |
144 |
} |
145 |
} |
146 |
|
147 |
} |