Revision 12333 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/saveraster/ui/listener/SaveRasterDialogListener.java

View differences:

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