Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / trunk / org.gvsig.raster.tools / org.gvsig.raster.tools.app / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / raster / gui / wizard / PrepareLayerAskUsingTiles.java @ 1139

History | View | Annotate | Download (6.05 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.app.basic.raster.gui.wizard;
23

    
24
import java.awt.Component;
25
import java.util.Map;
26

    
27
import javax.swing.JOptionPane;
28

    
29
import org.gvsig.andami.PluginServices;
30
import org.gvsig.app.prepareAction.PrepareContext;
31
import org.gvsig.app.prepareAction.PrepareContextView;
32
import org.gvsig.app.prepareAction.PrepareDataStoreParameters;
33
import org.gvsig.app.prepareAction.PrepareLayer;
34
import org.gvsig.fmap.dal.DALLocator;
35
import org.gvsig.fmap.dal.DataManager;
36
import org.gvsig.fmap.dal.DataStoreParameters;
37
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
38
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
39
import org.gvsig.fmap.dal.exception.CloseException;
40
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
41
import org.gvsig.fmap.mapcontext.MapContextLocator;
42
import org.gvsig.fmap.mapcontext.MapContextManager;
43
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
44
import org.gvsig.fmap.mapcontext.layers.FLayer;
45
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
46
import org.gvsig.raster.fmap.layers.FLyrRaster;
47
import org.gvsig.tools.exception.BaseException;
48

    
49
public class PrepareLayerAskUsingTiles implements PrepareDataStoreParameters, PrepareLayer {
50
        private boolean askMe    = true;
51
        private boolean answer   = false;
52
        
53
        /*
54
         * (non-Javadoc)
55
         * @see org.gvsig.app.prepareAction.PrepareDataStoreParameters#prepare(org.gvsig.fmap.dal.DataStoreParameters, org.gvsig.app.prepareAction.PrepareContext)
56
         */
57
        public DataStoreParameters prepare(DataStoreParameters storeParameters,
58
                        PrepareContext context) throws BaseException {
59
                if(!(storeParameters instanceof RasterDataParameters))
60
                        return storeParameters;
61
                if(askMe)
62
                        messageBoxYesOrNot(PluginServices.getText(this, "tiled_layer"), null);
63
                
64
                if(answer) {
65
                        DataManager manager = DALLocator.getDataManager();
66
                        TileDataParameters tileParams = null;
67
                        tileParams = (TileDataParameters) manager.createStoreParameters("Tile Store");
68
                        ((FilesystemStoreParameters) tileParams).setFile(((FilesystemStoreParameters)storeParameters).getFile());
69
                        tileParams.setDataParameters(storeParameters);
70
                        return tileParams;
71
                }
72
                
73
                return storeParameters;
74
        }
75
        
76
        public void post(DataStoreParameters storeParameters, PrepareContext context) {
77
                askMe = true;
78
        }
79
        
80
        public void pre(DataStoreParameters storeParameters, PrepareContext context) {
81
        }
82
        
83
        public boolean askMe() {
84
                return askMe;
85
        }
86
        
87
        public void setAskMe(boolean askMe) {
88
                this.askMe = askMe;
89
        }
90
        
91
        /*
92
         * (non-Javadoc)
93
         * @see org.gvsig.app.prepareAction.PrepareLayer#prepare(org.gvsig.fmap.mapcontext.layers.FLayer, org.gvsig.app.prepareAction.PrepareContextView)
94
         */
95
        public FLayer prepare(FLayer layer, PrepareContextView context) {
96
                if(layer instanceof FLyrRaster) {
97
                        FLyrRaster lyrRaster = (FLyrRaster)layer;
98
                        if(lyrRaster.getDataStore().getParameters() instanceof TileDataParameters) {
99
                                if(        lyrRaster.getFullEnvelope().getMinimum(0) == 0 &&
100
                                                lyrRaster.getFullEnvelope().getMinimum(1) == 0 &&
101
                                                lyrRaster.getFullEnvelope().getMaximum(0) == (lyrRaster).getPxWidth() &&
102
                                                lyrRaster.getFullEnvelope().getMaximum(1) == (lyrRaster).getPxHeight()) {
103
                                        MapContextManager mcm = MapContextLocator.getMapContextManager();
104
                                        try {
105
                                                FLyrRaster newLayer = (DefaultFLyrRaster) mcm.createLayer(lyrRaster.getName(), 
106
                                                                (DataStoreParameters)((TileDataParameters)lyrRaster.getDataStore().getParameters()).getDataParameters());
107
                                                lyrRaster.getDataStore().close();
108
                                                return newLayer;
109
                                        } catch (LoadLayerException e) {
110
                                                return lyrRaster;
111
                                        } catch (CloseException e) {
112
                                        }
113
                                }
114
                        }
115
                }
116
                return layer;
117
        }
118
        
119
        
120

    
121
        public void end(Object param) {
122
                
123
        }
124

    
125
        public String getDescription() {
126
                return "Prepare Tiles for Raster Layer";
127
        }
128

    
129
        public String getName() {
130
                return "PrepareRasterLayerAskUsingTiles";
131
        }
132

    
133
        public Object create() {
134
                return this;
135
        }
136

    
137
        public Object create(Object[] args) {
138
                return this;
139
        }
140

    
141
        @SuppressWarnings("unchecked")
142
        public Object create(Map args) {
143
                return this;
144
        }
145

    
146
        public void interrupted() {
147
        }
148
        
149
        /**
150
         * Muestra un dialogo con un texto y un bot?n Si o No.
151
         * @param msg Mensaje a mostrar en el dialogo.
152
         * @param parentWindow Ventana desde la que se lanza el dialogo
153
         * @return El bot?n seleccionado por el usuario. true si ha seleccionado "si"
154
         *         y false si ha seleccionado "no"
155
         */
156
        public void messageBoxYesOrNot(String msg, Object parentWindow){
157
                String string1 = PluginServices.getText(parentWindow, "yes");
158
                String string2 = PluginServices.getText(parentWindow, "no");
159
                String string3 = PluginServices.getText(parentWindow, "yes_dont_ask_more");
160
                String string4 = PluginServices.getText(parentWindow, "no_dont_ask_more");
161
                Object[] options = {string1, string2, string3, string4};
162
                int n = JOptionPane.showOptionDialog((Component)PluginServices.getMainFrame(),
163
                                        "<html>" + PluginServices.getText(parentWindow, msg).replaceAll("\n", "<br>") + "</html>",
164
                                        PluginServices.getText(parentWindow, "confirmacion"),
165
                                        JOptionPane.YES_NO_OPTION,
166
                                        JOptionPane.QUESTION_MESSAGE,
167
                                        null,
168
                                        options,
169
                                        string1);
170
                answer = false;
171
                if (n == 0) 
172
                        answer = true;
173
                if (n == 2) {
174
                        askMe = false;
175
                        answer = true;
176
                }
177
                if (n == 3) 
178
                        askMe = false;
179
        }
180
}