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