Statistics
| Revision:

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
}