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 | 20 | nbrodin | 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 | } |