Statistics
| Revision:

svn-gvsig-desktop / tags / v1_1_Build_1002 / libraries / libCq_CMS_praster / src / org / cresques / ui / filter / TransparencyByPixelListener.java @ 12070

History | View | Annotate | Download (3.83 KB)

1
package org.cresques.ui.filter;
2

    
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.util.ArrayList;
6

    
7
import javax.swing.JButton;
8
import javax.swing.JList;
9
import javax.swing.JRadioButton;
10

    
11
import org.cresques.filter.enhancement.TransparencyRange;
12
import org.cresques.ui.raster.AddRemoveButtonsPanel;
13
import org.cresques.ui.raster.AndOrSelectorPanel;
14
import org.cresques.ui.raster.RGBInputPanel;
15

    
16

    
17
public class TransparencyByPixelListener implements ActionListener {
18

    
19
        private TransparencyByPixelPanel         panel = null;
20
        private RGBInputPanel                                rgbInputPanel = null;
21
        private        JList                                                list = null;
22
        private JButton                                                addButton = null;
23
        private JButton                                                removeButton = null;
24
        private JRadioButton                                andRb = null;
25
        private JRadioButton                                orRb = null;
26
        private ArrayList                                        entries = new ArrayList();
27
        
28
        /**
29
         * This is the default constructor
30
         */
31
        public TransparencyByPixelListener(TransparencyByPixelPanel panel) {
32
                this.panel = panel;
33
                rgbInputPanel = ((RGBInputPanel)panel.getPRGBInput());
34
                list = panel.getJList();
35
                
36
                addButton = ((AddRemoveButtonsPanel)panel.getPButtons()).getBAdd();
37
                removeButton = ((AddRemoveButtonsPanel)panel.getPButtons()).getBRemove();
38
                andRb = ((AndOrSelectorPanel)panel.getPOperation()).getRbAnd();
39
                orRb = ((AndOrSelectorPanel)panel.getPOperation()).getRbOr();
40
                
41
                addButton.addActionListener(this);
42
                removeButton.addActionListener(this);
43
                andRb.addActionListener(this);
44
                orRb.addActionListener(this);
45
        }
46

    
47
        //*******************************
48
        //ActionListener
49
        
50
        public void actionPerformed(ActionEvent e) {
51
                
52
                //A?ade elementos a la lista
53
                if(e.getSource() == addButton){
54
                        if(rgbInputPanel.isValidValue()){
55
                                TransparencyRange entry = new TransparencyRange();
56
                                entry.setRed(rgbInputPanel.getRangeRed());
57
                                entry.setGreen(rgbInputPanel.getRangeGreen());
58
                                entry.setBlue(rgbInputPanel.getRangeBlue());
59
                                                                
60
                                String textR = rgbInputPanel.getTRed().getText();
61
                                if(textR.equals(""))
62
                                        textR = "*";
63
                                String textG = rgbInputPanel.getTGreen().getText();
64
                                if(textG.equals(""))
65
                                        textG = "*";
66
                                String textB = rgbInputPanel.getTBlue().getText();
67
                                if(textB.equals(""))
68
                                        textB = "*";
69
                                if(andRb.isSelected()){        
70
                                        entry.setStrEntry(textR+" & "+textG+" & "+textB);
71
                                        entry.setAnd(true);
72
                                }
73
                                
74
                                if(orRb.isSelected()){
75
                                        entry.setStrEntry(textR+" | "+textG+" | "+textB);
76
                                        entry.setAnd(false);
77
                                }
78
                                panel.getListModel().addElement(entry.getStrEntry());
79
                                entries.add(entry);
80
                                
81
                                //Limpiamos los textField
82
                                rgbInputPanel.getTRed().setText("");
83
                                rgbInputPanel.getTGreen().setText("");
84
                                rgbInputPanel.getTBlue().setText("");
85
                        }
86
                }
87
                
88
                //Elimina elementos de la lista
89
                if(e.getSource() == removeButton){
90
                        if(list.getSelectedIndex() != -1){
91
                                String rule = (String)panel.getListModel().get(list.getSelectedIndex());
92
                                String[] s = rule.split(" & ");
93
                                if(s.length < 3){
94
                                        s = rule.split(" \\| ");
95
                                        andRb.setSelected(false);
96
                                        orRb.setSelected(true);
97
                                }else{
98
                                        andRb.setSelected(true);
99
                                        orRb.setSelected(false);
100
                                }
101
                                
102
                                for(int i=0;i<s.length;i++){
103
                                        if(s[i].equals("*"))
104
                                                s[i] = "";
105
                                }
106
                                
107
                                if(s.length == 3){
108
                                        rgbInputPanel.getTRed().setText(s[0].trim());        
109
                                        rgbInputPanel.getTGreen().setText(s[1].trim());
110
                                        rgbInputPanel.getTBlue().setText(s[2].trim());
111
                                        
112
                                        for(int i=0;i<entries.size();i++){
113
                                                if( ((TransparencyRange)entries.get(i)).getStrEntry().equals(rule) )
114
                                                        entries.remove(i);
115
                                        }
116
                                        panel.getListModel().remove(list.getSelectedIndex());
117
                                }
118
                        }
119
                }
120
        }
121
        
122
        /**
123
         * Obtiene el array de entradas de valores a?adidos a la lista
124
         * @return ArrayList
125
         */
126
        public ArrayList getEntries(){
127
                return entries;
128
        }
129
        
130
        /**
131
         * Asigna el array de entradas de valores a?adidos a la lista
132
         * @param list ArrayList
133
         */
134
        public void setEntries(ArrayList list){
135
                entries = list;
136
        }
137
}