Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / extension / OpenLayerOnStart.java @ 43328

History | View | Annotate | Download (5.98 KB)

1
package org.gvsig.app.extension;
2

    
3
import java.awt.GridBagConstraints;
4
import java.beans.PropertyVetoException;
5
import java.io.File;
6
import java.util.ArrayList;
7
import java.util.List;
8
import org.apache.commons.io.FilenameUtils;
9
import org.apache.commons.lang3.StringUtils;
10
import org.cresques.cts.IProjection;
11
import org.gvsig.andami.Arguments;
12
import org.gvsig.andami.PluginsLocator;
13
import org.gvsig.andami.PluginsManager;
14
import org.gvsig.andami.ui.mdiManager.IWindow;
15
import org.gvsig.app.ApplicationLocator;
16
import org.gvsig.app.ApplicationManager;
17
import org.gvsig.app.project.Project;
18
import org.gvsig.app.project.ProjectManager;
19
import org.gvsig.app.project.documents.DocumentManager;
20
import org.gvsig.app.project.documents.view.ViewDocument;
21
import org.gvsig.app.project.documents.view.ViewManager;
22
import org.gvsig.app.project.documents.view.gui.IView;
23
import org.gvsig.fmap.dal.DALLocator;
24
import org.gvsig.fmap.dal.DataManager;
25
import org.gvsig.fmap.dal.DataServerExplorer;
26
import org.gvsig.fmap.dal.DataServerExplorerParameters;
27
import org.gvsig.fmap.dal.DataStore;
28
import org.gvsig.fmap.dal.DataStoreParameters;
29
import org.gvsig.fmap.dal.DataTypes;
30
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter;
31
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
32
import org.gvsig.fmap.mapcontext.MapContextLocator;
33
import org.gvsig.fmap.mapcontext.MapContextManager;
34
import org.gvsig.fmap.mapcontext.layers.FLayer;
35
import org.gvsig.tools.dynobject.DynField;
36
import org.slf4j.Logger;
37
import org.slf4j.LoggerFactory;
38

    
39
public class OpenLayerOnStart implements Runnable {
40

    
41
    private static final Logger logger = LoggerFactory.getLogger(OpenLayerOnStart.class);
42

    
43
    @Override
44
    public void run() {
45
        PluginsManager PluginManager = PluginsLocator.getManager();
46
        DataManager dataManager = DALLocator.getDataManager();
47
        ApplicationManager application = ApplicationLocator.getManager();
48
        ProjectManager projectManager = application.getProjectManager();
49
        DocumentManager viewManager = projectManager.getDocumentManager(ViewManager.TYPENAME);
50
        MapContextManager mapContextManager = MapContextLocator.getMapContextManager();
51
        Project project = application.getProjectManager().getCurrentProject();
52

    
53
        Arguments args = PluginManager.getArguments();
54
        List<String> params = new ArrayList<>(args.parameters());
55
        params.remove(0);
56
        params.remove(0);
57
        for( String param : params ) {
58
            if( !StringUtils.isEmpty(param) && param.endsWith(Project.FILE_EXTENSION) ) {
59
                try {
60
                    File f = new File(param);
61
                    application.getUIManager().closeAllWindows();
62
                    project = projectManager.createProject();
63
                    project.loadState(f);
64
                    projectManager.setCurrentProject(project);
65
                } catch (Throwable th) {
66
                    logger.warn("Can't load project '" + param + "'.", th);
67
                }
68
                break;
69
            }
70
        }
71

    
72
        ViewDocument viewDoc = null;
73
        FilesystemServerExplorer explorer = null;
74
        FilesystemFileFilter filter = null;
75
        IProjection proj = null;
76
        for( String param : params ) {
77
            try {
78
                if( FilenameUtils.isExtension(param, "gvproj") ) {
79
                    continue;
80
                }
81
                if( explorer == null ) {
82
                    DataServerExplorerParameters explorerparams = dataManager.createServerExplorerParameters(FilesystemServerExplorer.NAME);
83
                    explorer = (FilesystemServerExplorer) dataManager.openServerExplorer(FilesystemServerExplorer.NAME, explorerparams);
84
                    filter = explorer.getFilter(DataServerExplorer.MODE_GEOMETRY | DataServerExplorer.MODE_RASTER, "All formats");
85
                }
86

    
87
                File f = new File(param);
88
                if( filter.accept(f) ) {
89
                    if( viewDoc == null ) {
90
                        viewDoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
91
                        if( viewDoc==null || !viewDoc.getMapContext().getLayers().isEmpty() ) {
92
                            application.getUIManager().closeAllWindows();
93
                            viewDoc = (ViewDocument) viewManager.createDocument();
94
                            project.addDocument(viewDoc);
95
                        }
96
                        proj = viewDoc.getMapContext().getProjection();
97
                        IView viewWindow = (IView) viewManager.getMainWindow(viewDoc);
98
                        application.getUIManager().addWindow(viewWindow, GridBagConstraints.CENTER);
99
                        try {
100
                            application.getUIManager().setMaximum((IWindow) viewWindow, true);
101
                        } catch (PropertyVetoException e) {
102

    
103
                        }
104
                    }
105
                    DataStoreParameters storeParams = explorer.createStoreParameters(f);
106
                    // Buscamos por el parametro de la proyeccion
107
                    // que sean obligatorios y est?n a null
108
                    // y le ponemos la proyeccion de la vista
109
                    DynField[] fields = storeParams.getDynClass().getDynFields();
110
                    for (DynField field : fields) {
111
                        if (field.getType() == DataTypes.CRS && field.isMandatory()) {
112
                            if (storeParams.getDynValue(field.getName()) == null) {
113
                                storeParams.setDynValue(field.getName(), proj);
114
                            }
115
                        }
116
                    }                    
117
                    DataStore store = dataManager.openStore(storeParams.getDataStoreName(), storeParams);
118
                    FLayer layer = mapContextManager.createLayer(store.getName(), store);
119
                    viewDoc.getMapContext().getLayers().add(layer);
120
                }
121
            } catch (Throwable th) {
122
                logger.warn("Can't load layer '" + param + "'.", th);
123
            }
124
        }
125

    
126
    }
127
}