Revision 12333 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/saveraster/ui/listener/SaveRasterDialogListener.java
SaveRasterDialogListener.java | ||
---|---|---|
51 | 51 |
|
52 | 52 |
/** |
53 | 53 |
* Clase que gestiona los eventos de los botones del dialogo de Salvar a raster. |
54 |
*
|
|
54 |
* |
|
55 | 55 |
* @version 19/04/2007 |
56 | 56 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
57 | 57 |
* |
... | ... | |
61 | 61 |
private FLayers layers = null; |
62 | 62 |
private MapControl mapCtrl = null; |
63 | 63 |
private GeoRasterWriter writer = null; |
64 |
|
|
64 |
|
|
65 | 65 |
/** |
66 | 66 |
* Constructor |
67 | 67 |
* @param dialog |
... | ... | |
70 | 70 |
this.dialog = dialog; |
71 | 71 |
this.layers = layers; |
72 | 72 |
this.mapCtrl = mapCtrl; |
73 |
|
|
73 |
|
|
74 | 74 |
dialog.addButtonPressedListener(this); |
75 |
|
|
75 |
|
|
76 | 76 |
//Captura de eventos para el bot?n de propiedades |
77 | 77 |
((SaveRasterPanel)dialog.getControlsPanel()).getBProperties().addActionListener(new java.awt.event.ActionListener() { |
78 |
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
79 |
propsButtonActionPerformed(evt);
|
|
80 |
}
|
|
81 |
});
|
|
78 |
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
79 |
propsButtonActionPerformed(evt);
|
|
80 |
}
|
|
81 |
});
|
|
82 | 82 |
} |
83 |
|
|
83 |
|
|
84 | 84 |
/** |
85 | 85 |
* Eventos para los botones de aplicar, aceptar y cancelar |
86 | 86 |
* @param e |
... | ... | |
99 | 99 |
break; |
100 | 100 |
} |
101 | 101 |
} |
102 |
|
|
102 |
|
|
103 | 103 |
/** |
104 | 104 |
* Acciones realizadas al aceptar. |
105 | 105 |
* @param e |
106 | 106 |
*/ |
107 |
private boolean acceptButtonActionPerformed(ButtonsPanelEvent e) {
|
|
108 |
SaveRasterPanel controlPanel = dialog.getControlsPanel();
|
|
109 |
|
|
107 |
private boolean acceptButtonActionPerformed(ButtonsPanelEvent e) {
|
|
108 |
SaveRasterPanel controlPanel = dialog.getControlsPanel();
|
|
109 |
|
|
110 | 110 |
String fName = dialog.getDataInputListener().getFileName(); |
111 |
Dimension dimension = new Dimension(dialog.getDataInputListener().getWidthInPixels(),
|
|
111 |
Dimension dimension = new Dimension(dialog.getDataInputListener().getWidthInPixels(), |
|
112 | 112 |
dialog.getDataInputListener().getHeightInPixels() ); |
113 |
|
|
113 |
|
|
114 | 114 |
//Comprobamos que el en la ruta de destino tengamos permisos de escritura |
115 | 115 |
File f = new File(fName); |
116 | 116 |
if(!f.exists()) { |
... | ... | |
123 | 123 |
PluginServices.getText(this, "error_file_not_writable")); |
124 | 124 |
return false; |
125 | 125 |
} |
126 |
|
|
126 |
|
|
127 | 127 |
dialog.getDataInputListener().resetFileName(); |
128 | 128 |
dialog.getDataInputListener().enableButtons(); |
129 |
|
|
129 |
|
|
130 | 130 |
double lrX = Double.parseDouble(controlPanel.getTInfDerX().getText()); |
131 | 131 |
double lrY = Double.parseDouble(controlPanel.getTInfDerY().getText()); |
132 | 132 |
double ulX = Double.parseDouble(controlPanel.getTSupIzqX().getText()); |
... | ... | |
138 | 138 |
if(ulY > lrY) height = (double)(ulY - lrY); |
139 | 139 |
else height = (double)(lrY - ulY); |
140 | 140 |
Rectangle2D ext = null; |
141 |
|
|
141 |
|
|
142 | 142 |
if(ulY < lrY) |
143 | 143 |
ext = new Rectangle2D.Double(ulX, ulY, width, height); |
144 | 144 |
else |
145 | 145 |
ext = new Rectangle2D.Double(ulX, lrY, width, height); |
146 |
|
|
146 |
|
|
147 | 147 |
Params params = getWriterParams(fName); |
148 | 148 |
int blockSize = getBlockSize(params, layers); |
149 |
|
|
149 |
|
|
150 | 150 |
ViewPort vp = new ViewPort(layers.getProjection()); |
151 | 151 |
vp.setBackColor(mapCtrl.getViewPort().getBackColor()); |
152 | 152 |
vp.setImageSize(dimension); |
153 | 153 |
vp.setExtent(ext); |
154 |
|
|
154 |
|
|
155 | 155 |
//Creamos el servidor de datos de la vista |
156 | 156 |
RasterizerLayer rasterizer = new RasterizerLayer(layers, vp, blockSize); |
157 |
|
|
157 |
|
|
158 | 158 |
//Creamos la clase con el proceso y lo lanzamos |
159 | 159 |
SaveRasterProcess saveRasterProcess = new SaveRasterProcess(vp, dimension, rasterizer, fName, params); |
160 | 160 |
IncrementableTask incrementableTask = new IncrementableTask(rasterizer); |
... | ... | |
164 | 164 |
incrementableTask.start(); |
165 | 165 |
|
166 | 166 |
return true; |
167 |
}
|
|
168 |
|
|
169 |
/**
|
|
167 |
}
|
|
168 |
|
|
169 |
/**
|
|
170 | 170 |
* Comprueba si existe el fichero pasado por par?metro existe solicitando confirmaci?n |
171 | 171 |
* de sobreescritura. Si el usuario acepta devolver? true y si no acepta devuelve false. |
172 |
* Si se acepta la sobreescritura el fichero es borrado.
|
|
172 |
* Si se acepta la sobreescritura el fichero es borrado. |
|
173 | 173 |
* @param file Cadena con el nombre del fichero a comprobar su existencia. |
174 | 174 |
* @return Devuelve true si el fichero existe y va a ser sobreescrito |
175 | 175 |
*/ |
... | ... | |
184 | 184 |
PluginServices.getText(this, "confirmacion"), |
185 | 185 |
JOptionPane.YES_NO_OPTION, |
186 | 186 |
JOptionPane.QUESTION_MESSAGE, |
187 |
null,
|
|
188 |
options,
|
|
189 |
string1);
|
|
190 |
if (n == JOptionPane.YES_OPTION){
|
|
187 |
null, |
|
188 |
options, |
|
189 |
string1); |
|
190 |
if (n == JOptionPane.YES_OPTION){ |
|
191 | 191 |
f.delete(); |
192 | 192 |
return true; |
193 | 193 |
}else |
... | ... | |
195 | 195 |
} |
196 | 196 |
return true; |
197 | 197 |
} |
198 |
|
|
199 |
/**
|
|
200 |
* Funci?n a ejecutar cuando se pulsa el bot?n de propiedades.
|
|
201 |
* @param e ActionEvent
|
|
202 |
*/
|
|
203 |
private void propsButtonActionPerformed(ActionEvent e){
|
|
204 |
String name = dialog.getDataInputListener().getFileName();
|
|
205 |
|
|
198 |
|
|
199 |
/**
|
|
200 |
* Funci?n a ejecutar cuando se pulsa el bot?n de propiedades.
|
|
201 |
* @param e ActionEvent
|
|
202 |
*/
|
|
203 |
private void propsButtonActionPerformed(ActionEvent e){
|
|
204 |
String name = dialog.getDataInputListener().getFileName();
|
|
205 |
|
|
206 | 206 |
//Si no se ha seleccionado ning?n fichero salimos |
207 | 207 |
if(name == null || name.equals("")) |
208 | 208 |
return; |
209 |
|
|
209 |
|
|
210 | 210 |
Params params = getWriterParams(name); |
211 |
PropertiesPanel panel = new PropertiesPanel();
|
|
211 |
PropertiesPanel panel = new PropertiesPanel(); |
|
212 | 212 |
WriterPropertiesDialog dialog = new WriterPropertiesDialog(panel, params); |
213 | 213 |
PluginServices.getMDIManager().addWindow(dialog); |
214 | 214 |
} |
215 |
|
|
216 |
/**
|
|
217 |
* Obtiene los par?metros del driver de escritura. Si el driver no se ha creado a?n se obtienen
|
|
218 |
* unos par?metros con la inicializaci?n por defecto. Si se ha creado ya y se han modificado se
|
|
219 |
* devuelven los par?metros con las modificaciones. Si se cambia de driver se devolver? un WriterParams
|
|
220 |
* como si fuera la primera vez que se abre.
|
|
221 |
* @param name Nombre del fichero sobre el que se salva.
|
|
222 |
* @return WriterParams
|
|
223 |
*/
|
|
224 |
private Params getWriterParams(String name) {
|
|
225 |
String ext = RasterUtilities.getExtensionFromFileName(name);
|
|
226 |
try {
|
|
215 |
|
|
216 |
/**
|
|
217 |
* Obtiene los par?metros del driver de escritura. Si el driver no se ha creado a?n se obtienen
|
|
218 |
* unos par?metros con la inicializaci?n por defecto. Si se ha creado ya y se han modificado se
|
|
219 |
* devuelven los par?metros con las modificaciones. Si se cambia de driver se devolver? un WriterParams
|
|
220 |
* como si fuera la primera vez que se abre.
|
|
221 |
* @param name Nombre del fichero sobre el que se salva.
|
|
222 |
* @return WriterParams
|
|
223 |
*/
|
|
224 |
private Params getWriterParams(String name) {
|
|
225 |
String ext = RasterUtilities.getExtensionFromFileName(name);
|
|
226 |
try {
|
|
227 | 227 |
if(writer == null) //La primera vez que se obtiene el driver |
228 | 228 |
writer = GeoRasterWriter.getWriter(name); |
229 | 229 |
else { |
... | ... | |
232 | 232 |
if(!newType.equals(oldType)) //Cambio de driver despu?s de haber seleccionado y modificado las propiedades de uno |
233 | 233 |
writer = GeoRasterWriter.getWriter(name); |
234 | 234 |
} |
235 |
|
|
235 |
|
|
236 | 236 |
if(writer == null) |
237 | 237 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this, "no_driver_escritura")); |
238 |
|
|
238 |
|
|
239 | 239 |
return writer.getParams(); |
240 |
|
|
240 |
|
|
241 | 241 |
} catch (NotSupportedExtensionException e1) { |
242 | 242 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this, "no_driver_escritura")); |
243 | 243 |
return null; |
... | ... | |
245 | 245 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this, "no_driver_escritura")); |
246 | 246 |
return null; |
247 | 247 |
} |
248 |
}
|
|
249 |
|
|
250 |
/**
|
|
251 |
* Calculo del tama?o de bloque. Para ello comprueba si el raster est? siendo tileado. Si est? siendo
|
|
252 |
* tileado se aplica el alto del tile menor para no pedir un bloque mayor que lo que un servidor puede
|
|
253 |
* devolver. Si no est? siendo tileado se devuelve el tama?o de bloque de los par?metros.
|
|
254 |
* @param flyrs Capas
|
|
255 |
* @param params Par?metros del driver de escritura
|
|
256 |
* @return tama?o de bloque
|
|
257 |
*/
|
|
258 |
private int getBlockSize(Params params, FLayers flyrs) {
|
|
259 |
|
|
260 |
int blockSize = RasterLibrary.blockHeight;
|
|
248 |
}
|
|
249 |
|
|
250 |
/**
|
|
251 |
* Calculo del tama?o de bloque. Para ello comprueba si el raster est? siendo tileado. Si est? siendo
|
|
252 |
* tileado se aplica el alto del tile menor para no pedir un bloque mayor que lo que un servidor puede
|
|
253 |
* devolver. Si no est? siendo tileado se devuelve el tama?o de bloque de los par?metros.
|
|
254 |
* @param flyrs Capas
|
|
255 |
* @param params Par?metros del driver de escritura
|
|
256 |
* @return tama?o de bloque
|
|
257 |
*/
|
|
258 |
private int getBlockSize(Params params, FLayers flyrs) {
|
|
259 |
|
|
260 |
int blockSize = RasterLibrary.blockHeight;
|
|
261 | 261 |
try { |
262 |
blockSize = Integer.parseInt(params.getParamById("blocksize").defaultValue); |
|
262 |
blockSize = Integer.parseInt((String) params.getParamById("blocksize").defaultValue);
|
|
263 | 263 |
} catch (NumberFormatException ex) { |
264 | 264 |
//Se queda con el valor por defecto |
265 | 265 |
} |
266 |
|
|
266 |
|
|
267 | 267 |
//Recorremos todas las capas comprobando si alguna de ellas implementa RasterOperations y tilea. |
268 | 268 |
//En ese caso se obtiene el ancho de bloque. El ancho de bloque total ser? el menor obtenido. |
269 | 269 |
//Esto lo hacemos para que las capas que tilean WMS, WCS, ... no hagan demasiadas peticiones al servidor |
... | ... | |
287 | 287 |
params.changeParamValue("blocksize", String.valueOf(block)); |
288 | 288 |
return block; |
289 | 289 |
} |
290 |
|
|
290 |
|
|
291 | 291 |
return blockSize; |
292 |
}
|
|
293 |
|
|
292 |
}
|
|
293 |
|
|
294 | 294 |
} |
Also available in: Unified diff