Statistics
| Revision:

gvsig-raster / org.gvsig.raster.mosaic / trunk / org.gvsig.raster.mosaic / org.gvsig.raster.mosaic.app / src / main / java / org / gvsig / raster / mosaic / app / MainDialogActions.java @ 2300

History | View | Annotate | Download (6.92 KB)

1
package org.gvsig.raster.mosaic.app;
2

    
3
import java.io.File;
4
import java.io.IOException;
5
import java.util.ArrayList;
6
import java.util.List;
7

    
8
import org.gvsig.andami.PluginServices;
9
import org.gvsig.andami.ui.mdiManager.IWindow;
10
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
11
import org.gvsig.fmap.dal.coverage.RasterLocator;
12
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
13
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
14
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
15
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
16
import org.gvsig.fmap.dal.exception.InitializeException;
17
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
18
import org.gvsig.fmap.mapcontext.MapContextLocator;
19
import org.gvsig.fmap.mapcontext.MapContextManager;
20
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
21
import org.gvsig.i18n.Messages;
22
import org.gvsig.raster.fmap.layers.FLyrRaster;
23
import org.gvsig.raster.impl.provider.RasterProvider;
24
import org.gvsig.raster.mosaic.io.MosaicDataParameters;
25
import org.gvsig.raster.mosaic.io.MosaicRasterFormat;
26
import org.gvsig.raster.mosaic.swing.main.AddFilesEvent;
27
import org.gvsig.raster.mosaic.swing.main.AddFilesListener;
28
import org.gvsig.raster.mosaic.swing.main.AddFilesPanel;
29
import org.gvsig.raster.swing.RasterSwingLibrary;
30
import org.gvsig.tools.locator.LocatorException;
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
33

    
34
public class MainDialogActions implements AddFilesListener {
35
        private Logger                          log                  = LoggerFactory.getLogger(MainDialogActions.class);
36
        private String                          file                 = null;
37
        private String                          folder               = null;
38
        private AddFilesPanel                   addFilesPanel        = null;
39
        private AbstractViewPanel               selectedView         = null;
40
        
41
        public MainDialogActions(AddFilesPanel panel, String file, String folder) {
42
                this.file = file;
43
                this.folder = folder;
44
                this.addFilesPanel = panel;
45
        }
46
        
47
        public void saveLayer() {
48
                RasterDataStore mainRasterStore = addFilesPanel.getResult(false);
49
                
50
                try {
51
                        saveMosaicFileLayer(mainRasterStore);
52
                } catch (IOException e) {
53
                        RasterSwingLibrary.messageBoxError(Messages.getText("error_saving_mosaic"), addFilesPanel, e);
54
                }
55
        }
56
        
57
        /**
58
         * Saves the new layer in disk
59
         * @param layerName
60
         * @param file
61
         * @param uriList
62
         * @throws IOException
63
         */
64
        private String saveMosaicFileLayer(RasterDataStore mainRasterStore) throws IOException {
65
                MosaicDataParameters params = null; 
66
                if(mainRasterStore.getParameters() instanceof MosaicDataParameters)        {        
67
                                params = (MosaicDataParameters)mainRasterStore.getParameters();
68
                }
69
                if(mainRasterStore.getParameters() instanceof TileDataParameters) {
70
                        TileDataParameters tileparams = (TileDataParameters)mainRasterStore.getParameters();
71
                        params = (MosaicDataParameters)tileparams.getDataParameters();
72
                }
73
                        
74
                ArrayList<File> uriList = new ArrayList<File>();
75
                List<RasterProvider> providers = params.getProviders();
76
                
77
                for (int i = 0; i < providers.size(); i++) {
78
                        uriList.add(new File(providers.get(i).getURI()));
79
                }
80
                
81
                try {
82
                        return MosaicRasterFormat.saveMosaicRasterFormat(file, folder, uriList);
83
                } catch (IOException e) {
84
                        RasterSwingLibrary.messageBoxError(Messages.getText("error_salvando_mrf"), addFilesPanel, e);
85
                }
86
                return null;
87
        }
88
        
89
        public void loadLayer() {
90
                RasterDataStore mainRasterStore = addFilesPanel.getResult(true);
91
                if(mainRasterStore == null) {
92
                        return;
93
                }
94
                
95
                try {
96
                        loadLayerInView(mainRasterStore);
97
                } catch (LoadLayerException e) {
98
                        RasterSwingLibrary.messageBoxError(Messages.getText("error_loading_layer"), addFilesPanel, e);
99
                }
100
        }
101
        
102
        private void loadLayerInView(RasterDataStore mainRasterStore) throws LoadLayerException {
103
                MapContextManager mcm = MapContextLocator.getMapContextManager();
104
                FLyrRaster lyr = (FLyrRaster) mcm.createLayer(file, mainRasterStore);
105
                lyr.reload();
106

    
107
                getView().getMapControl().getMapContext().beginAtomicEvent();
108
                getView().getMapControl().getMapContext().getLayers().addLayer(lyr);
109
                getView().getMapControl().getMapContext().invalidate();
110
                getView().getMapControl().getMapContext().endAtomicEvent();
111
        }
112
        
113
        private AbstractViewPanel getView() {
114
                if(selectedView == null) {
115
                        IWindow[] wList = PluginServices.getMDIManager().getAllWindows();
116
                        for (int i = 0; i < wList.length; i++) {
117
                                if(wList[i] instanceof AbstractViewPanel)
118
                                        selectedView = (AbstractViewPanel)wList[i];
119
                        }
120
                }
121
                return selectedView;
122
        }
123

    
124
        public void actionAddFiles(AddFilesEvent e) {
125
                File[] fList = e.getFileList();
126
                for (int i = 0; i < fList.length; i++) {
127
                        try {
128
                                RasterDataStore store = RasterLocator.getManager().getProviderServices().open(fList[i].getAbsolutePath());
129
                                if(store != null)
130
                                        addFilesPanel.addDstFile(
131
                                                        store, 
132
                                                        getLayerNameFromFileName(store.getFullName()), 
133
                                                        store.getBandCount(), 
134
                                                        store.getDataType()[0],
135
                                                        store.getCellSize(),
136
                                                        store.getNoDataValue());
137
                        } catch (RasterDriverException e1) {
138
                                log.debug("Error loading a RasterDataStore from the list", e1);
139
                        } catch (InitializeException e1) {
140
                                log.debug("Error loading a RasterDataStore from the list", e1);
141
                        } catch (ProviderNotRegisteredException e1) {
142
                                log.debug("Error loading a RasterDataStore from the list", e1);
143
                        } catch (LocatorException e1) {
144
                                log.debug("Error loading a RasterDataStore from the list", e1);
145
                        } catch (NotSupportedExtensionException e1) {
146
                                log.debug("Error loading a RasterDataStore from the list", e1);
147
                        }
148
                }
149
        }
150

    
151
        public void actionAddFolder(AddFilesEvent e) {
152
                File[] folderList = e.getFileList();
153
                for (int i = 0; i < folderList.length; i++) {
154
                        try {
155
                                RasterDataStore store = RasterLocator.getManager().getProviderServices().open(folderList[i].getAbsolutePath());
156
                                if(store != null)
157
                                        addFilesPanel.addDstFile(
158
                                                        store, 
159
                                                        getLayerNameFromFileName(store.getFullName()), 
160
                                                        store.getBandCount(), 
161
                                                        store.getDataType()[0],
162
                                                        store.getCellSize(),
163
                                                        store.getNoDataValue());
164
                        } catch (RasterDriverException e1) {
165
                                log.debug("Error loading a RasterDataStore from the list", e1);
166
                        } catch (InitializeException e1) {
167
                                log.debug("Error loading a RasterDataStore from the list", e1);
168
                        } catch (ProviderNotRegisteredException e1) {
169
                                log.debug("Error loading a RasterDataStore from the list", e1);
170
                        } catch (LocatorException e1) {
171
                                log.debug("Error loading a RasterDataStore from the list", e1);
172
                        } catch (NotSupportedExtensionException e1) {
173
                                log.debug("Error loading a RasterDataStore from the list", e1);
174
                        }
175
                }
176
        }
177
        
178
        private String getLayerNameFromFileName(String fullName) {
179
                if(fullName.contains(File.separator)) {
180
                        int index = fullName.lastIndexOf(File.separator);
181
                        fullName = fullName.substring(index + 1);
182
                }
183
                
184
                /*if(fullName.contains(".")) {
185
                        int index = fullName.lastIndexOf(".");
186
                        fullName = fullName.substring(0, index);
187
                }*/
188
                return fullName;
189
        }
190
}