Revision 20057 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/enhanced/ui/EnhancedListener.java

View differences:

EnhancedListener.java
31 31
import org.gvsig.raster.beans.canvas.GCanvasEvent;
32 32
import org.gvsig.raster.beans.canvas.IGCanvasListener;
33 33
import org.gvsig.raster.beans.canvas.layers.GraphicHistogram;
34
import org.gvsig.raster.beans.canvas.layers.functions.BaseFunction;
34 35
import org.gvsig.raster.beans.canvas.layers.functions.DensitySlicingLine;
35 36
import org.gvsig.raster.beans.canvas.layers.functions.LogaritmicExponentialLine;
36 37
import org.gvsig.raster.beans.canvas.layers.functions.SquareRootPowLine;
37 38
import org.gvsig.raster.beans.canvas.layers.functions.StraightLine;
38
import org.gvsig.raster.beans.previewbase.PreviewBasePanel;
39 39
import org.gvsig.raster.dataset.IRasterDataSource;
40 40
import org.gvsig.raster.dataset.Params;
41 41
import org.gvsig.raster.grid.filter.FilterTypeException;
42
import org.gvsig.raster.grid.filter.RasterFilterList;
42 43
import org.gvsig.raster.grid.filter.enhancement.EqualizationFilter;
44
import org.gvsig.raster.grid.filter.enhancement.LinearStretchEnhancementFilter;
45
import org.gvsig.raster.grid.filter.enhancement.LinearStretchParams;
46
import org.gvsig.raster.grid.filter.enhancement.LinearStretchParams.Stretch;
43 47
import org.gvsig.raster.hierarchy.IRasterRendering;
44 48
import org.gvsig.raster.util.RasterNotLoadException;
45 49
import org.gvsig.raster.util.RasterToolsUtil;
......
57 61
public class EnhancedListener implements ActionListener, IGCanvasListener, ButtonsPanelListener, IProcessActions {
58 62
	private SelectorsPanel   selectorsPanel  = null;
59 63
	private GraphicsPanel    graphicsPanel   = null;
60
	private PreviewBasePanel enhancedPanel   = null;
61 64
	private EnhancedDialog   enhancedDialog  = null;
62 65
	private PreviewFiltering filteredPreview = null;
63 66
	private EnhancedHistogramController  enhancedManager = null;
......
72 75
	 */
73 76
	public EnhancedListener(SelectorsPanel selectorsPanel, 
74 77
							GraphicsPanel graphicsPanel, 
75
							PreviewBasePanel enhancedPanel, 
76 78
							EnhancedDialog enhancedDialog, 
77 79
							PreviewFiltering filteredPreview) {
78 80
		this.selectorsPanel = selectorsPanel;
79 81
		this.graphicsPanel = graphicsPanel;
80
		this.enhancedPanel = enhancedPanel;
81 82
		this.enhancedDialog = enhancedDialog;
82 83
		this.filteredPreview = filteredPreview;
83 84
		
......
149 150
				graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
150 151
			}
151 152

  
152
			HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
153

  
154
			if (status.getBaseFunction().getClass().equals(DensitySlicingLine.class))
155
				selectorsPanel.getEnhancedType().setSelectedItem("Level-slice");
156

  
157
			if (status.getBaseFunction().getClass().equals(StraightLine.class))
158
				selectorsPanel.getEnhancedType().setSelectedItem("Lineal");
159

  
160
			if (status.getBaseFunction().getClass().equals(EqualizationFilter.class))
161
				selectorsPanel.getEnhancedType().setSelectedItem("Equalization");
162

  
163
			if (status.getBaseFunction().getClass().equals(SquareRootPowLine.class))
164
				selectorsPanel.getEnhancedType().setSelectedItem("Square-root");
165

  
166
			if (status.getBaseFunction().getClass().equals(LogaritmicExponentialLine.class))
167
				selectorsPanel.getEnhancedType().setSelectedItem("Logaritmic");
153
			updateTypeSelected();
168 154
			
169
			status = graphicsPanel.getOutputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
155
			HistogramStatus status = graphicsPanel.getOutputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
170 156

  
171 157
			switch (status.getGraphicHistogram().getType()) {
172 158
				case GraphicHistogram.TYPE_FILL:
......
268 254
				//No asignamos el nivel
269 255
			}
270 256
		}
271
		
272
		manageMainButtons(e);
273 257
	}
274 258
	
275 259
	/**
276
	 * Gestiona los eventos de los botones principales (Aceptar, Aplicar, Cancelar)
277
	 * @param e
260
	 * Actualiza el combo de EnhancedType para que este seleccionado siempre el
261
	 * item que corresponde con la grafica mostrada en ese momento
278 262
	 */
279
	private void manageMainButtons(ActionEvent e) {
280
		if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
281
			/*Params params = new Params();
282
			params.setParam("TailTrim",
283
					new Double(Math.round(0 * 100.0)),
284
					Params.SLIDER,
285
					new String[]{ "0", "100", "0", "1", "25" });
286
			params.setParam("Stretch",
287
					new Double[][] {{new Double(0), new Double(1269)}, {new Double(0), new Double(1525)}, {new Double(0), new Double(888)}},
288
					Params.CHOICE,
289
					null);
290
			params.setParam("StretchRGB",
291
					new Integer[] {new Integer(255)},
292
					Params.CHOICE,
293
					null);
294
			filteredPreview.addNewParam("param1", params, LinearStretchEnhancementFilter.class);*/
263
	private void updateTypeSelected() {
264
		HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
265

  
266
		if (status.getBaseFunction().getClass().equals(DensitySlicingLine.class))
267
			selectorsPanel.setSelectedEnhancedType("Level-slice");
268

  
269
		if (status.getBaseFunction().getClass().equals(StraightLine.class))
270
			selectorsPanel.setSelectedEnhancedType("Lineal");
271

  
272
		if (status.getBaseFunction().getClass().equals(EqualizationFilter.class))
273
			selectorsPanel.setSelectedEnhancedType("Equalization");
274

  
275
		if (status.getBaseFunction().getClass().equals(SquareRootPowLine.class))
276
			selectorsPanel.setSelectedEnhancedType("Square-root");
277

  
278
		if (status.getBaseFunction().getClass().equals(LogaritmicExponentialLine.class)) {
279
			if (((StraightLine) status.getBaseFunction()).getValueFunction() >= 0)
280
				selectorsPanel.setSelectedEnhancedType("Logaritmic");
281
			else
282
				selectorsPanel.setSelectedEnhancedType("Exponential");
295 283
		}
296
		if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
297
			
284
	}
285
	
286
	/**
287
	 * En la primera carga se define cada banda en los histogramas, para dejarlo en
288
	 * su estado logico.
289
	 * @param stretch
290
	 * @param band
291
	 */
292
	private void firstLoadBand(Stretch stretch, int band) {
293
		boolean firstBand = ((band == HistogramGraphicBase.GRAY) || (band == HistogramGraphicBase.RED));
294

  
295
		graphicsPanel.getInputHistogram().setHistogramDrawed(band);
296
		
297
		BaseFunction baseFunction = null;
298
		HistogramStatus status;
299
		status = graphicsPanel.getInputHistogram().getHistogramStatus(band);
300
		if (status == null)
301
			return;
302
		
303
		switch (stretch.functionType) {
304
			case 0:
305
				if (firstBand) {
306
					selectorsPanel.getEnhancedType().setSelectedItem("Lineal");
307
					graphicsPanel.setLevelsEnabled(false);
308
				}
309
				baseFunction = new StraightLine(status.getBaseFunction().getColor());
310
				break;
311
			case 1:
312
				if (firstBand) {
313
					if (stretch.valueFunction >= 0)
314
						selectorsPanel.getEnhancedType().setSelectedItem("Logaritmic");
315
					else
316
						selectorsPanel.getEnhancedType().setSelectedItem("Exponential");
317
					graphicsPanel.setLevelsEnabled(false);
318
				}
319
				baseFunction = new LogaritmicExponentialLine(status.getBaseFunction().getColor(), stretch.valueFunction);
320
				break;
321
			case 2:
322
				if (firstBand) {
323
					selectorsPanel.getEnhancedType().setSelectedItem("Square-root");
324
					graphicsPanel.setLevelsEnabled(false);
325
				}
326
				baseFunction = new SquareRootPowLine(status.getBaseFunction().getColor(), stretch.valueFunction);
327
				break;
328
			case 3:
329
				if (firstBand) {
330
					selectorsPanel.getEnhancedType().setSelectedItem("Level-slice");
331
					graphicsPanel.setLevelsEnabled(true);
332
				}
333
				baseFunction = new DensitySlicingLine(status.getBaseFunction().getColor(), (int) stretch.valueFunction);
334
				break;
298 335
		}
299
		if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
300
			enhancedDialog.close();
336
		if (baseFunction != null) {
337
			status.setBaseFunction(baseFunction);
338
			graphicsPanel.getInputHistogram().setHistogramDrawed(band);
339
//				graphicsPanel.getInputHistogram().getCanvas().replaceDrawableElement(baseFunction, BaseFunction.class);
301 340
		}
302 341
	}
342
	
343
	/**
344
	 * En la primera carga se han de establecer todos los histogramas de entrada
345
	 * a sus valores correspondientes segun el filtro.
346
	 */
347
	public void firstLoad() {
348
		RasterFilterList rasterFilterList = ((FLyrRasterSE) enhancedDialog.getLayer()).getRenderFilterList();
303 349

  
350
		LinearStretchEnhancementFilter filter = (LinearStretchEnhancementFilter) rasterFilterList.getByName(LinearStretchEnhancementFilter.names[0]);
351
		if (filter != null) {
352
			LinearStretchParams stretch = filter.getStretchs();
353
			
354
			firstLoadBand(stretch.blue, HistogramGraphicBase.BLUE);
355
			firstLoadBand(stretch.green, HistogramGraphicBase.GREEN);
356
			firstLoadBand(stretch.red, HistogramGraphicBase.RED);
357
			firstLoadBand(stretch.gray, HistogramGraphicBase.GRAY);
358
		}
359
		graphicsPanel.getInputHistogram().repaint();
360
	}
361
	
304 362
	/**
305 363
	 * Coge los datos que hay en los histogramas y los aplica a la vista previa
306 364
	 */
......
313 371
	 * Coge los datos que hay en los histogramas y los aplica en el histograma de salida
314 372
	 */
315 373
	private void updateHistogramOut() {
374
		updateTypeSelected();
316 375
		enhancedManager.updatePreview();
317 376
		enhancedManager.updateHistogramOut();
318 377
	}

Also available in: Unified diff