gvsig-raster / org.gvsig.raster.tools / branches / org.gvsig.raster.tools_dataaccess_refactoring / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / tool / enhanced / ui / EnhancedListener.java @ 2340
History | View | Annotate | Download (20.5 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.tool.enhanced.ui; |
23 |
|
24 |
import java.awt.Color; |
25 |
import java.awt.Component; |
26 |
import java.awt.event.ActionEvent; |
27 |
import java.awt.event.ActionListener; |
28 |
import java.io.File; |
29 |
import java.util.List; |
30 |
|
31 |
import org.gvsig.fmap.dal.coverage.RasterLocator; |
32 |
import org.gvsig.fmap.dal.coverage.datastruct.Params; |
33 |
import org.gvsig.fmap.dal.coverage.datastruct.Stretch; |
34 |
import org.gvsig.fmap.dal.coverage.exception.FilterManagerException; |
35 |
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException; |
36 |
import org.gvsig.fmap.dal.coverage.grid.RasterFilter; |
37 |
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList; |
38 |
import org.gvsig.fmap.dal.coverage.grid.filter.LinearStretchParams; |
39 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel; |
40 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent; |
41 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener; |
42 |
import org.gvsig.i18n.Messages; |
43 |
import org.gvsig.raster.fmap.layers.FLyrRaster; |
44 |
import org.gvsig.raster.swing.RasterSwingLibrary; |
45 |
import org.gvsig.raster.swing.RasterSwingLocator; |
46 |
import org.gvsig.raster.swing.gcanvas.BaseFunction; |
47 |
import org.gvsig.raster.swing.gcanvas.DensitySlicingLine; |
48 |
import org.gvsig.raster.swing.gcanvas.DrawableElement; |
49 |
import org.gvsig.raster.swing.gcanvas.GCanvas; |
50 |
import org.gvsig.raster.swing.gcanvas.GCanvasEvent; |
51 |
import org.gvsig.raster.swing.gcanvas.GraphicHistogram; |
52 |
import org.gvsig.raster.swing.gcanvas.IGCanvasListener; |
53 |
import org.gvsig.raster.swing.gcanvas.LogaritmicExponentialLine; |
54 |
import org.gvsig.raster.swing.gcanvas.SquareRootPowLine; |
55 |
import org.gvsig.raster.swing.gcanvas.StraightLine; |
56 |
import org.gvsig.raster.tools.app.basic.RasterToolsUtil; |
57 |
import org.gvsig.raster.tools.app.basic.raster.bean.previewbase.ParamStruct; |
58 |
import org.gvsig.raster.tools.app.basic.raster.process.FilterProcess; |
59 |
import org.gvsig.raster.tools.app.basic.raster.process.IProcessActions; |
60 |
import org.gvsig.raster.tools.app.basic.tool.enhanced.graphics.HistogramGraphicBase; |
61 |
import org.gvsig.raster.tools.app.basic.tool.enhanced.graphics.HistogramGraphicBase.HistogramStatus; |
62 |
import org.gvsig.raster.util.LayerVisualStatusList; |
63 |
import org.gvsig.raster.util.RasterNotLoadException; |
64 |
|
65 |
/**
|
66 |
* Gestor de eventos de los paneles de gr?ficas y controles.
|
67 |
*
|
68 |
* 21/02/2008
|
69 |
* @author Nacho Brodin nachobrodin@gmail.com
|
70 |
*/
|
71 |
public class EnhancedListener implements ActionListener, IGCanvasListener, ButtonsPanelListener, IProcessActions { |
72 |
private SelectorsPanel selectorsPanel = null; |
73 |
private GraphicsPanel graphicsPanel = null; |
74 |
private EnhancedDialog enhancedDialog = null; |
75 |
private PreviewFiltering filteredPreview = null; |
76 |
private EnhancedHistogramController enhancedManager = null; |
77 |
private LayerVisualStatusList status = new LayerVisualStatusList(); |
78 |
|
79 |
/**
|
80 |
* Constructor
|
81 |
* @param selectorsPanel Panel con los selectores de opciones
|
82 |
* @param graphicsPanel Panel con los gr?ficos
|
83 |
* @param enhancedPanel Panel base con la previsualizaci?n
|
84 |
* @param enhancedDialog Dialogo general
|
85 |
* @param filteredPreview Preprocesado para la preview
|
86 |
*/
|
87 |
public EnhancedListener(SelectorsPanel selectorsPanel,
|
88 |
GraphicsPanel graphicsPanel, |
89 |
EnhancedDialog enhancedDialog, |
90 |
PreviewFiltering filteredPreview) { |
91 |
this.selectorsPanel = selectorsPanel;
|
92 |
this.graphicsPanel = graphicsPanel;
|
93 |
this.enhancedDialog = enhancedDialog;
|
94 |
this.filteredPreview = filteredPreview;
|
95 |
status.getVisualStatus(((FLyrRaster) enhancedDialog.getLayer())); |
96 |
|
97 |
|
98 |
enhancedManager = new EnhancedHistogramController(graphicsPanel.getInputHistogram(), graphicsPanel.getOutputHistogram(), enhancedDialog);
|
99 |
|
100 |
selectorsPanel.getHistogramType().addActionListener(this);
|
101 |
selectorsPanel.getDrawType().addActionListener(this);
|
102 |
selectorsPanel.getBand(null).addActionListener(this); |
103 |
selectorsPanel.getEnhancedType().addActionListener(this);
|
104 |
graphicsPanel.getLevels().addActionListener(this);
|
105 |
graphicsPanel.getRGB().addActionListener(this);
|
106 |
} |
107 |
|
108 |
public void actionPerformed(ActionEvent e) { |
109 |
//Cambio del tipo de de dibujado del histograma
|
110 |
if(e.getSource() == selectorsPanel.getDrawType()) {
|
111 |
if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals(Messages.getText("fill"))) { |
112 |
graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_FILL); |
113 |
graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_FILL); |
114 |
} |
115 |
|
116 |
if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals(Messages.getText("line"))) { |
117 |
graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_LINE); |
118 |
graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_LINE); |
119 |
} |
120 |
((Component)graphicsPanel.getInputHistogram().getCanvas()).repaint();
|
121 |
((Component)graphicsPanel.getOutputHistogram().getCanvas()).repaint();
|
122 |
} |
123 |
|
124 |
// Cambio el tipo de visualizacion del histograma
|
125 |
if (e.getSource() == selectorsPanel.getHistogramType()) {
|
126 |
if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("standard"))) { |
127 |
graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LINEAL); |
128 |
} |
129 |
|
130 |
if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("cumulative"))) { |
131 |
graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATED); |
132 |
} |
133 |
|
134 |
if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("logaritmic"))) { |
135 |
graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LOGARITHMIC); |
136 |
} |
137 |
|
138 |
if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("cumulative_logarithmic"))) { |
139 |
graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATEDLOG); |
140 |
} |
141 |
((Component)graphicsPanel.getOutputHistogram().getCanvas()).repaint();
|
142 |
} |
143 |
|
144 |
// Seleccion de modo RGB o normal
|
145 |
if (e.getSource() == graphicsPanel.getRGB()) {
|
146 |
graphicsPanel.updateHistogram(); |
147 |
updatePreview(); |
148 |
} |
149 |
|
150 |
//Cambio de banda
|
151 |
if(e.getSource() == selectorsPanel.getBand(null)) { |
152 |
if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals(Messages.getText("red"))) { |
153 |
graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.RED); |
154 |
graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.RED); |
155 |
} |
156 |
|
157 |
if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals(Messages.getText("green"))) { |
158 |
graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN); |
159 |
graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN); |
160 |
} |
161 |
|
162 |
if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals(Messages.getText("blue"))) { |
163 |
graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE); |
164 |
graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE); |
165 |
} |
166 |
|
167 |
updateTypeSelected(); |
168 |
|
169 |
HistogramStatus status = graphicsPanel.getOutputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED); |
170 |
|
171 |
switch (status.getGraphicHistogram().getType()) {
|
172 |
case GraphicHistogram.TYPE_FILL:
|
173 |
selectorsPanel.getDrawType().setSelectedItem(Messages.getText("fill"));
|
174 |
break;
|
175 |
default:
|
176 |
selectorsPanel.getDrawType().setSelectedItem(Messages.getText("line"));
|
177 |
break;
|
178 |
} |
179 |
|
180 |
switch (status.getGraphicHistogram().getTypeViewed()) {
|
181 |
case GraphicHistogram.VIEW_ACUMMULATED:
|
182 |
selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("cumulative"));
|
183 |
break;
|
184 |
case GraphicHistogram.VIEW_LOGARITHMIC:
|
185 |
selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("logaritmic"));
|
186 |
break;
|
187 |
case GraphicHistogram.VIEW_ACUMMULATEDLOG:
|
188 |
selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("cumulative_logarithmic"));
|
189 |
break;
|
190 |
default:
|
191 |
selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("standard"));
|
192 |
break;
|
193 |
} |
194 |
} |
195 |
|
196 |
//Cambio de operaci?n
|
197 |
if(e.getSource() == selectorsPanel.getEnhancedType()) {
|
198 |
graphicsPanel.setLevelsEnabled(false);
|
199 |
|
200 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("lineal"))) { |
201 |
graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_LINEAL); |
202 |
updatePreview(); |
203 |
} |
204 |
|
205 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("gaussian"))) { |
206 |
|
207 |
} |
208 |
|
209 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("logaritmic"))) { |
210 |
graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_LOGARIT); |
211 |
updatePreview(); |
212 |
} |
213 |
|
214 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("exponential"))) { |
215 |
graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_EXPONENT); |
216 |
updatePreview(); |
217 |
} |
218 |
|
219 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("equalization"))) { |
220 |
graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_NONE); |
221 |
int[] renderBands = enhancedDialog.getLayer().getRender().getRenderColorInterpretation().buildRenderBands(); |
222 |
String values = ""; |
223 |
for (int i = 0; i < renderBands.length; i++) |
224 |
values += renderBands[i] + " ";
|
225 |
values = values.trim(); |
226 |
Params params = RasterLocator.getManager().createParams("", 0, 0, null); |
227 |
params.setParam("Histogram", graphicsPanel.getHistogram(), -1, null); |
228 |
params.setParam("RenderBands", values, -1, null); |
229 |
params.setParam("EcualizedBands", new int[]{0, 1, 2}, -1, null); |
230 |
|
231 |
Class<?> filterClass = enhancedDialog.getLayer().getRender().getFilterList().getFilterClassByID("equalization"); |
232 |
filteredPreview.addNewParam("equalization", params, filterClass);
|
233 |
updatePreview(); |
234 |
} |
235 |
|
236 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("square_root"))) { |
237 |
graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_SQUARE_ROOT); |
238 |
updatePreview(); |
239 |
} |
240 |
|
241 |
if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("level_slice"))) { |
242 |
graphicsPanel.setLevelsEnabled(true);
|
243 |
graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_DENSITY); |
244 |
|
245 |
// Establece el numero de niveles en el cuadro de texto
|
246 |
HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED); |
247 |
graphicsPanel.getLevels().setValue(new Long(((DensitySlicingLine) status.getBaseFunction()).getLevels())); |
248 |
updatePreview(); |
249 |
} |
250 |
} |
251 |
|
252 |
//Cambio de tipo (estandar/acumulado)
|
253 |
if(e.getSource() == selectorsPanel.getHistogramType()) {
|
254 |
if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("standard"))) { |
255 |
|
256 |
} |
257 |
|
258 |
if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("cumulative"))) { |
259 |
|
260 |
} |
261 |
} |
262 |
|
263 |
//Cambio en el n?mero de niveles
|
264 |
if(e.getSource() == graphicsPanel.getLevels()) {
|
265 |
Long lValue = (Long)graphicsPanel.getLevels().getValue(); |
266 |
int value = lValue.intValue();
|
267 |
if(value > 30 || value < 2) { |
268 |
RasterSwingLibrary.messageBoxInfo(Messages.getText("range_wrong") + " [2-30]", graphicsPanel); |
269 |
if(value > 30) |
270 |
value = 30;
|
271 |
if(value < 2) |
272 |
value = 2;
|
273 |
} |
274 |
graphicsPanel.getLevels().setValue(new Long(value)); |
275 |
try {
|
276 |
graphicsPanel.getInputHistogram().setLevel(value); |
277 |
updatePreview(); |
278 |
} catch (NumberFormatException exc) { |
279 |
//No asignamos el nivel
|
280 |
} |
281 |
} |
282 |
} |
283 |
|
284 |
/**
|
285 |
* Actualiza el combo de EnhancedType para que este seleccionado siempre el
|
286 |
* item que corresponde con la grafica mostrada en ese momento
|
287 |
*/
|
288 |
private void updateTypeSelected() { |
289 |
HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED); |
290 |
|
291 |
if (status.getBaseFunction().getClass().equals(DensitySlicingLine.class))
|
292 |
selectorsPanel.setSelectedEnhancedType(Messages.getText("level_slice"));
|
293 |
|
294 |
if (status.getBaseFunction().getClass().equals(StraightLine.class))
|
295 |
selectorsPanel.setSelectedEnhancedType(Messages.getText("lineal"));
|
296 |
|
297 |
Class<?> filterClass = enhancedDialog.getLayer().getRender().getFilterList().getFilterClassByID("equalization"); |
298 |
if (status.getBaseFunction().getClass().equals(filterClass))
|
299 |
selectorsPanel.setSelectedEnhancedType(Messages.getText("equalization"));
|
300 |
|
301 |
if (status.getBaseFunction().getClass().equals(SquareRootPowLine.class))
|
302 |
selectorsPanel.setSelectedEnhancedType(Messages.getText("square_root"));
|
303 |
|
304 |
if (status.getBaseFunction().getClass().equals(LogaritmicExponentialLine.class)) {
|
305 |
if (((StraightLine) status.getBaseFunction()).getValueFunction() >= 0) |
306 |
selectorsPanel.setSelectedEnhancedType(Messages.getText("logaritmic"));
|
307 |
else
|
308 |
selectorsPanel.setSelectedEnhancedType(Messages.getText("exponential"));
|
309 |
} |
310 |
} |
311 |
|
312 |
/**
|
313 |
* En la primera carga se define cada banda en los histogramas, para dejarlo en
|
314 |
* su estado logico.
|
315 |
* @param stretch
|
316 |
* @param band
|
317 |
*/
|
318 |
private void firstLoadBand(Stretch stretch, int band) { |
319 |
boolean firstBand = ((band == HistogramGraphicBase.GRAY) || (band == HistogramGraphicBase.RED));
|
320 |
|
321 |
graphicsPanel.getInputHistogram().setHistogramDrawed(band); |
322 |
|
323 |
BaseFunction baseFunction = null;
|
324 |
HistogramStatus status; |
325 |
status = graphicsPanel.getInputHistogram().getHistogramStatus(band); |
326 |
if (status == null) |
327 |
return;
|
328 |
|
329 |
GCanvas canvas = RasterSwingLocator.getSwingManager().createGraphicCanvas(Color.white);
|
330 |
|
331 |
switch (stretch.getFunctionType()) {
|
332 |
case 0: |
333 |
if (firstBand) {
|
334 |
selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("lineal"));
|
335 |
graphicsPanel.setLevelsEnabled(false);
|
336 |
} |
337 |
baseFunction = canvas.createStraightLineForGCanvas( |
338 |
((DrawableElement)status.getBaseFunction()).getColor()); |
339 |
((StraightLine) baseFunction).clearSquares(); |
340 |
for (int i = 0; i < stretch.getStretchIn().length; i++) { |
341 |
((StraightLine) baseFunction).addSquare( |
342 |
(stretch.getStretchIn()[i] - stretch.getMinValue()) / (stretch.getMaxValue() - stretch.getMinValue()), |
343 |
stretch.getStretchOut()[i] / 255.0D);
|
344 |
} |
345 |
break;
|
346 |
case 1: |
347 |
if (firstBand) {
|
348 |
if (stretch.getValueFunction() >= 0) |
349 |
selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("logaritmic"));
|
350 |
else
|
351 |
selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("exponential"));
|
352 |
graphicsPanel.setLevelsEnabled(false);
|
353 |
} |
354 |
baseFunction = canvas.createLogaritmicExponentialLineForGCanvas( |
355 |
((DrawableElement)status.getBaseFunction()).getColor(), stretch.getValueFunction()); |
356 |
break;
|
357 |
case 2: |
358 |
if (firstBand) {
|
359 |
selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("square_root"));
|
360 |
graphicsPanel.setLevelsEnabled(false);
|
361 |
} |
362 |
baseFunction = canvas.createSquareRootPowLineForGCanvas( |
363 |
((DrawableElement)status.getBaseFunction()).getColor(), stretch.getValueFunction()); |
364 |
break;
|
365 |
case 3: |
366 |
if (firstBand) {
|
367 |
selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("level_slice"));
|
368 |
graphicsPanel.setLevelsEnabled(true);
|
369 |
} |
370 |
baseFunction = canvas.createDensitySliceForGCanvas( |
371 |
((DrawableElement)status.getBaseFunction()).getColor(), (int) stretch.getValueFunction());
|
372 |
break;
|
373 |
} |
374 |
if (baseFunction != null) { |
375 |
status.setBaseFunction(baseFunction); |
376 |
graphicsPanel.getInputHistogram().setHistogramDrawed(band); |
377 |
} |
378 |
} |
379 |
|
380 |
/**
|
381 |
* En la primera carga se han de establecer todos los histogramas de entrada
|
382 |
* a sus valores correspondientes segun el filtro.
|
383 |
*/
|
384 |
public void firstLoad() { |
385 |
RasterFilterList rasterFilterList = enhancedDialog.getLayer().getRender().getFilterList(); |
386 |
|
387 |
RasterFilter filter = rasterFilterList.getByName("enhanced_stretch");
|
388 |
if (filter != null) { |
389 |
LinearStretchParams stretch = (LinearStretchParams) filter.getParam("stretchs");
|
390 |
|
391 |
firstLoadBand(stretch.getBlue(), HistogramGraphicBase.BLUE); |
392 |
firstLoadBand(stretch.getGreen(), HistogramGraphicBase.GREEN); |
393 |
firstLoadBand(stretch.getRed(), HistogramGraphicBase.RED); |
394 |
firstLoadBand(stretch.getRed(), HistogramGraphicBase.GRAY); |
395 |
graphicsPanel.getRGB().setSelected(stretch.isRgb()); |
396 |
} |
397 |
graphicsPanel.getInputHistogram().repaint(); |
398 |
} |
399 |
|
400 |
/**
|
401 |
* Coge los datos que hay en los histogramas y los aplica a la vista previa
|
402 |
*/
|
403 |
public void updatePreview() { |
404 |
enhancedManager.updatePreview(); |
405 |
enhancedManager.updateHistogramOut(); |
406 |
} |
407 |
|
408 |
/**
|
409 |
* Coge los datos que hay en los histogramas y los aplica en el histograma de salida
|
410 |
*/
|
411 |
private void updateHistogramOut() { |
412 |
updateTypeSelected(); |
413 |
enhancedManager.updatePreview(); |
414 |
enhancedManager.updateHistogramOut(); |
415 |
} |
416 |
|
417 |
public void actionDataChanged(GCanvasEvent e) { |
418 |
if (e.getKey().equals("minmax")) { |
419 |
updatePreview(); |
420 |
return;
|
421 |
} |
422 |
if (e.getKey().equals("line")) { |
423 |
updatePreview(); |
424 |
return;
|
425 |
} |
426 |
} |
427 |
|
428 |
public void actionDataDragged(GCanvasEvent e) { |
429 |
if (e.getKey().equals("minmax")) { |
430 |
updateHistogramOut(); |
431 |
return;
|
432 |
} |
433 |
if (e.getKey().equals("line")) { |
434 |
updateHistogramOut(); |
435 |
return;
|
436 |
} |
437 |
} |
438 |
|
439 |
public void actionButtonPressed(ButtonsPanelEvent e) { |
440 |
switch (e.getButton()) {
|
441 |
case ButtonsPanel.BUTTON_CANCEL:
|
442 |
cancel(); |
443 |
break;
|
444 |
case ButtonsPanel.BUTTON_APPLY:
|
445 |
apply(); |
446 |
break;
|
447 |
case ButtonsPanel.BUTTON_CLOSE:
|
448 |
enhancedDialog.close(); |
449 |
break;
|
450 |
} |
451 |
} |
452 |
|
453 |
/**
|
454 |
* Que acciones se ejecutaran al haber presionado el bot?n aceptar o aplicar
|
455 |
*/
|
456 |
public void apply() { |
457 |
FLyrRaster lyr = enhancedDialog.getLayer(); |
458 |
if (lyr == null) |
459 |
return;
|
460 |
|
461 |
String path = null; |
462 |
if (!enhancedDialog.getNewOrSaveLayerPanel().isOnlyViewSelected()) {
|
463 |
path = enhancedDialog.getNewOrSaveLayerPanel().getFileSelected(); |
464 |
if (path == null) |
465 |
return;
|
466 |
} |
467 |
|
468 |
|
469 |
// Array para guardar los filtros que se van a usar en forma de ParamStruct
|
470 |
List<ParamStruct> listFilterUsed = enhancedDialog.getFilteredPreview().applySelectedFilters(null); |
471 |
|
472 |
if (enhancedDialog.getNewOrSaveLayerPanel().isOnlyViewSelected()) {
|
473 |
try {
|
474 |
ParamStruct.addSelectedFilters(lyr.getRender().getFilterList(), listFilterUsed); |
475 |
enhancedDialog.getLayer().getRender().setFilterList(lyr.getRender().getFilterList()); |
476 |
enhancedDialog.getLayer().getMapContext().invalidate(); |
477 |
} catch (FilterTypeException e) {
|
478 |
RasterSwingLibrary.messageBoxError(Messages.getText("error_adding_filters"), this, e); |
479 |
} catch (FilterManagerException e) {
|
480 |
RasterSwingLibrary.messageBoxError(Messages.getText("error_adding_filters"), this, e); |
481 |
} |
482 |
} else {
|
483 |
FilterProcess filterProcess = new FilterProcess();
|
484 |
filterProcess.setActions(this);
|
485 |
filterProcess.addParam("rendering", lyr);
|
486 |
filterProcess.addParam("filename", path);
|
487 |
filterProcess.addParam("rasterdatasource", lyr.getDataStore());
|
488 |
filterProcess.addParam("layer", ((FLyrRaster) enhancedDialog.getLayer()));
|
489 |
filterProcess.addParam("listfilterused", listFilterUsed);
|
490 |
filterProcess.addParam("onlyrenderbands", Boolean.TRUE); |
491 |
filterProcess.start(); |
492 |
} |
493 |
} |
494 |
|
495 |
/**
|
496 |
* Volvemos todo a la normalidad cuando se cancela
|
497 |
*/
|
498 |
public void cancel() { |
499 |
if (enhancedDialog.getLayer() != null) { |
500 |
status.restoreVisualStatus(enhancedDialog.getLayer()); |
501 |
enhancedDialog.getLayer().getMapContext().invalidate(); |
502 |
} |
503 |
} |
504 |
|
505 |
|
506 |
/**
|
507 |
* Acciones que se realizan al finalizar de crear los recortes de imagen.
|
508 |
* Este m?todo es llamado por el thread TailRasterProcess al finalizar.
|
509 |
*/
|
510 |
public void loadLayerInToc(String fileName) { |
511 |
if (!enhancedDialog.getNewOrSaveLayerPanel().isNewLayerSelected())
|
512 |
return;
|
513 |
if(!new File(fileName).exists()) |
514 |
return;
|
515 |
try {
|
516 |
RasterToolsUtil.loadLayer(enhancedDialog.getViewName(), fileName, null);
|
517 |
} catch (RasterNotLoadException e) {
|
518 |
RasterSwingLibrary.messageBoxError("error_cargar_capa", this, e); |
519 |
} |
520 |
|
521 |
if(enhancedDialog != null) |
522 |
enhancedDialog.getNewOrSaveLayerPanel().updateNewLayerText(); |
523 |
} |
524 |
|
525 |
public void end(Object param) { |
526 |
loadLayerInToc((String) param);
|
527 |
} |
528 |
|
529 |
public void interrupted() {} |
530 |
} |