Revision 12180 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/control/EnhancedControl.java

View differences:

EnhancedControl.java
20 20

  
21 21
import java.awt.event.ActionEvent;
22 22
import java.awt.event.ActionListener;
23
import java.awt.event.KeyEvent;
24
import java.awt.event.KeyListener;
25 23
import java.util.ArrayList;
26 24

  
27 25
import javax.swing.JCheckBox;
28
import javax.swing.event.ChangeEvent;
29
import javax.swing.event.ChangeListener;
30 26

  
27
import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
28
import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
31 29
import org.gvsig.raster.dataset.IStatistics;
30
import org.gvsig.raster.grid.filter.RasterFilter;
32 31
import org.gvsig.raster.grid.filter.RasterFilterList;
33 32
import org.gvsig.raster.grid.filter.RasterFilterListManager;
34 33
import org.gvsig.raster.grid.filter.enhancement.BrightnessContrastListManager;
......
36 35
import org.gvsig.raster.grid.filter.enhancement.ContrastFilter;
37 36
import org.gvsig.raster.grid.filter.enhancement.EnhancementListManager;
38 37
import org.gvsig.raster.grid.filter.enhancement.LinearEnhancementFilter;
38
import org.gvsig.raster.grid.filter.statistics.StatisticsListManager;
39 39
import org.gvsig.raster.grid.filter.statistics.TailTrimFilter;
40 40
import org.gvsig.raster.shared.IRasterDataset;
41 41
import org.gvsig.raster.shared.IRasterRendering;
......
63 63
	 * Manejador de eventos de los slider de brillo y contraste.
64 64
	 * @author Nacho Brodin (nachobrodin@gmail.com)
65 65
	 */
66
	class BrightnessContrastListener implements KeyListener, ChangeListener, ActionListener {
66
	class BrightnessContrastListener implements ActionListener, SliderListener {
67 67
		JCheckBox active = null;
68 68
		/**
69 69
		 * Constructor. Registra los listener
70 70
		 * @param panel
71 71
		 */
72 72
		public BrightnessContrastListener(EnhancedBrightnessContrastPanel panel) {
73
			panel.addBrightnessChangeListener(this);
74
			panel.addContrastChangeListener(this);
75
			panel.addBrightnessKeyListener(this);
76
			panel.addContrastKeyListener(this);
73
			panel.addBrightnessValueChangedListener(this);
74
			panel.addContrastValueChangedListener(this);
77 75
			active = panel.getActive();
78 76
			active.addActionListener(this);
79 77
		}
80 78

  
81
		public void keyPressed(KeyEvent e) {
82
		}
83

  
84
		public void keyReleased(KeyEvent e) {
85
			if (e.getKeyCode() == 10)
79
		/*
80
		 * (non-Javadoc)
81
		 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
82
		 */
83
		public void actionPerformed(ActionEvent e) {
84
			if (e.getSource() == active)
86 85
				onlyApply();
87 86
		}
88 87

  
89
		public void keyTyped(KeyEvent e) {
90
		}
91

  
92
		public void stateChanged(ChangeEvent e) {
88
		/*
89
		 * (non-Javadoc)
90
		 * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueChanged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
91
		 */
92
		public void actionValueChanged(SliderEvent e) {
93 93
			onlyApply();
94 94
		}
95 95

  
96
		public void actionPerformed(ActionEvent e) {
97
			if (e.getSource() == active)
98
				onlyApply();
96
		/*
97
		 * (non-Javadoc)
98
		 * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueDragged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
99
		 */
100
		public void actionValueDragged(SliderEvent e) {
99 101
		}
100 102
	}
101 103

  
......
105 107
	 * @version 14/06/2007
106 108
	 * @author Borja S?nchez Zamorano (borja.sanchez@iver.es)
107 109
	 */
108
	class EnhancedWithTrimListener implements ActionListener {
110
	class EnhancedWithTrimListener implements ActionListener, SliderListener {
109 111
		JCheckBox active = null;
110 112
		/**
111 113
		 * Constructor. Registra los listener
......
114 116
		public EnhancedWithTrimListener(EnhancedWithTrimPanel panel) {
115 117
			active = panel.getActive();
116 118
			active.addActionListener(this);
119
			panel.getTrimPanel().getRemoveCheck().addActionListener(this);
120
			panel.getTrimPanel().getTrimCheck().addActionListener(this);
121
			panel.getTrimPanel().getTrimSlider().addValueChangedListener(this);
117 122
		}
118 123

  
124
		/*
125
		 * (non-Javadoc)
126
		 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
127
		 */
119 128
		public void actionPerformed(ActionEvent e) {
120
			if (e.getSource() == active)
121
				onlyApply();
129
			onlyApply();
122 130
		}
131

  
132
		/*
133
		 * (non-Javadoc)
134
		 * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueChanged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
135
		 */
136
		public void actionValueChanged(SliderEvent e) {
137
			onlyApply();
138
		}
139

  
140
		/*
141
		 * (non-Javadoc)
142
		 * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueDragged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
143
		 */
144
		public void actionValueDragged(SliderEvent e) {
145
		}
123 146
	}
124 147

  
125 148
	/**
......
200 223
			int[] renderBands = new int[] { 0, 1, 2 };
201 224
			if (lyr instanceof IRasterRendering)
202 225
				renderBands = ((IRasterRendering) lyr).getRender().getRenderBands();
203
			if (!ePanel.isTailTrimCheckSelected() || ePanel.getTrimValue() == 0) // En este caso siempre es necesario el m?ximo y m?nimo
226
			 // En este caso siempre es necesario el m?ximo y m?nimo
227
			if (!ePanel.isTailTrimCheckSelected() || ePanel.getTrimValue() == 0) {
228
				filterList.remove(TailTrimFilter.class);
204 229
				eManager.addEnhancedFilter(ePanel.isRemoveEndsSelected(), stats, 0, renderBands);
205
			else
230
			} else
206 231
				eManager.addEnhancedFilter(ePanel.isRemoveEndsSelected(), stats, (double) (ePanel.getTrimValue() / 100D), renderBands);
207 232
		} else {
208 233
			filterList.remove(LinearEnhancementFilter.class);
......
222 247
		else
223 248
			filterList.remove(ContrastFilter.class);
224 249

  
250

  
251
		ArrayList listOrder = (ArrayList) RegistrableTabPanel.initialProperties.get("filterOrder");
252
		ArrayList listCopy = filterList.getStatusCloned();
253
		int cont = 0;
254
		for (int i=0; i<listOrder.size(); i++) {
255
			int pos = hasFilter(listCopy, ((RasterFilter) listOrder.get(i)).getName());
256
			if (pos != -1) {
257
				// Esta pero en posicion equivocada
258
				if (pos != cont) {
259
					Object copy = listCopy.remove(pos);
260
					listCopy.add(cont, copy);
261
				}
262
				cont++;
263
			}
264
		}
265
		filterList.setStatus(listCopy);
266
		filterList.controlTypes();
267

  
225 268
		// Redibujamos
226 269
		if (lyr != null)
227 270
			lyr.getMapContext().invalidate();
......
256 299
		restoreStatus();
257 300
	}
258 301

  
302
	private int hasFilter(ArrayList filter, String name) {
303
		for (int i = 0; i < filter.size(); i++) {
304
			if (((RasterFilter) filter.get(i)).getName().equals(name))
305
				return i;
306
		}
307
		return -1;
308
	}
309

  
259 310
	public void saveStatus() {
260 311
		RegistrableTabPanel.initialProperties.put("filterStatus", filterList.getStatusCloned());
312

  
313
		ArrayList filterOrder = filterList.getStatusCloned();
314
		int posEnhanced = hasFilter(filterOrder, "enhanced");
315
		int posTailTrim = hasFilter(filterOrder, "tailTrim");
316
		// Si tiene realce comprobamos el tailtrim
317
		if (posEnhanced != -1) {
318
			// Si no tiene el tailTrim, insertamos uno antes del realce
319
			if (posTailTrim == -1) {
320
				RasterFilter aux = StatisticsListManager.createTailFilter(0, 0, false, null);
321
				filterOrder.add(posEnhanced, aux);
322
			}
323
		} else {
324
			// Si existe un tailTrim lo borramos pq no tiene realce
325
			if (posTailTrim != -1)
326
				filterOrder.remove(posTailTrim);
327
			// Insertamos primero el tailtrim y luego el realce para conservar un orden logico
328
			filterOrder.add(0, StatisticsListManager.createTailFilter(0, 0, false, null));
329
			filterOrder.add(1, EnhancementListManager.createEnhancedFilter(false, null, 0, null));
330
		}
331

  
332
		// Si no tiene brillo, lo insertamos
333
		if (hasFilter(filterOrder, "brightness") == -1)
334
			filterOrder.add(BrightnessContrastListManager.createBrightnessFilter(0));
335

  
336
		// Si no tiene el contraste, lo insertamos
337
		if (hasFilter(filterOrder, "contrast") == -1)
338
			filterOrder.add(BrightnessContrastListManager.createContrastFilter(0));
339

  
340
		RegistrableTabPanel.initialProperties.put("filterOrder", filterOrder);
261 341
	}
262 342

  
263 343
	public void restoreStatus() {

Also available in: Unified diff