Revision 12180 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/control/EnhancedControl.java
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