Statistics
| Revision:

root / trunk / libraries / libUI / src / org / gvsig / gui / beans / filterPanel / filterQueryPanel / FilterQueryJPanel.java @ 9855

History | View | Annotate | Download (12.1 KB)

1
package org.gvsig.gui.beans.filterPanel.filterQueryPanel;
2

    
3
import java.awt.Dimension;
4
import java.awt.GridBagConstraints;
5
import java.awt.GridBagLayout;
6
import java.io.Serializable;
7

    
8
import javax.swing.BorderFactory;
9
import javax.swing.DefaultListModel;
10
import javax.swing.JCheckBox;
11
import javax.swing.JPanel;
12
import javax.swing.JScrollPane;
13

    
14
import org.gvsig.gui.beans.Messages;
15
import org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel;
16
import org.gvsig.gui.beans.filterPanel.JLabelCellRenderer;
17
import org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelAsCell.DefaultListModelForJLabelAsCell;
18

    
19
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
20
 *
21
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
22
 *
23
 * This program is free software; you can redistribute it and/or
24
 * modify it under the terms of the GNU General Public License
25
 * as published by the Free Software Foundation; either version 2
26
 * of the License, or (at your option) any later version.
27
 *
28
 * This program is distributed in the hope that it will be useful,
29
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
30
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
31
 * GNU General Public License for more details.
32
 *
33
 * You should have received a copy of the GNU General Public License
34
 * along with this program; if not, write to the Free Software
35
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
36
 *
37
 * For more information, contact:
38
 *
39
 *  Generalitat Valenciana
40
 *   Conselleria d'Infraestructures i Transport
41
 *   Av. Blasco Ib??ez, 50
42
 *   46010 VALENCIA
43
 *   SPAIN
44
 *
45
 *      +34 963862235
46
 *   gvsig@gva.es
47
 *      www.gvsig.gva.es
48
 *
49
 *    or
50
 *
51
 *   IVER T.I. S.A
52
 *   Salamanca 50
53
 *   46005 Valencia
54
 *   Spain
55
 *
56
 *   +34 963163400
57
 *   dac@iver.es
58
 */
59

    
60
/**
61
 * This class is a version of the graphical interface of "FilterDialog" which was made by Fernando and is in 'appgvSIG' project.
62
 * It's supposed that other classes will extend from this and will add the logic as is in the "FilterDialog" class.
63
 * 
64
 * @author Pablo Piqueras Bartolom? (p_queras@hotmail.com)
65
 */
66
public class FilterQueryJPanel extends AbstractFilterQueryJPanel implements Serializable{
67
        protected JPanel topCenterJPanel = null;
68
        protected JCheckBox validateFilterExpressionJCheckBox = null;
69
        
70
        protected int filterJScrollPaneHeight = defaultBottomJPanelHeight - 10;
71
        protected int filterJScrollPanelWidth = defaultBottomJPanelWidth;
72
        protected int validateFilterExpressionJCheckBoxHeight = 20;
73
        
74
        /**
75
         * @see AbstractFilterQueryJPanel#AbstractFilterQueryJPanel()
76
         */
77
        public FilterQueryJPanel() {
78
                super();
79
                this.initialize();
80
        }
81

    
82
        /**
83
         * @see AbstractFilterQueryJPanel#AbstractFilterQueryJPanel(String)
84
         */
85
        public FilterQueryJPanel(String _title) {
86
                super(_title);
87
                this.initialize();
88
        }
89

    
90
        /*
91
         *  (non-Javadoc)
92
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#initialize()
93
         */
94
        protected void initialize() {
95
                super.initialize();
96
                this.setBorder(BorderFactory.createTitledBorder(Messages.getText("filterOnAWFSLayer")));
97
                getValuesJList().setCellRenderer(new JLabelCellRenderer());
98
        }
99
        
100
        /*
101
         *  (FilterQueryJPanel)
102
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFieldsJPanel()
103
         */
104
        protected JPanel getFieldsJPanel() {
105
                if (fieldsJPanel == null) {
106
                        fieldsJPanel = new javax.swing.JPanel();
107
                        fieldsJPanel.setPreferredSize(new java.awt.Dimension(fieldsJPanelWidth, fieldsJPanelHeight));
108
                        fieldsJPanel.setLayout(new GridBagLayout());
109
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
110
                        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
111
                        gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
112
                        gridBagConstraints.anchor = GridBagConstraints.NORTH;                        
113
                        fieldsJPanel.add(getFieldsJLabel(), gridBagConstraints);
114
                        gridBagConstraints.anchor = GridBagConstraints.SOUTH;
115
                        fieldsJPanel.add(getFieldsJScrollPane(), gridBagConstraints);                        
116
                }
117

    
118
                return fieldsJPanel;
119
        }        
120
        
121
        /**
122
         * @see AbstractFilterQueryJPanel#getValuesJList()
123
         */
124
        protected javax.swing.JList getValuesJList() {
125
                if (valuesJList == null) {
126
                        valuesJList = new javax.swing.JList(new DefaultListModel());
127
                        valuesListModel = new DefaultListModelForJLabelAsCell();
128
                        valuesJList.setModel(valuesListModel);
129
                        valuesJList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
130
                        
131
//                        valuesJList.addMouseListener(new MouseAdapter() {
132
//                                /*
133
//                                 *  (non-Javadoc)
134
//                                 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
135
//                                 */
136
//                                public void mouseClicked(MouseEvent e) {
137
//                                        if (e.getClickCount() == 2) {
138
//                                                int row = fieldsJTree.getRowForLocation(e.getX(), e.getY());
139
//        
140
//                                                if (row > -1) {
141
//                                                        putSymbol(((DefaultListModel)valuesJList.getModel()).get(row).toString());
142
//                                                }
143
//                                        }
144
//                                }
145
//                        });
146
                }
147

    
148
                return valuesJList;
149
        }
150

    
151
        /*
152
         * (non-Javadoc)
153
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFieldsJScrollPane()
154
         */
155
        protected javax.swing.JScrollPane getFieldsJScrollPane() {
156
                if (fieldsJScrollPane == null) {
157
                        fieldsJScrollPane = new javax.swing.JScrollPane();
158
                        fieldsJScrollPane.setPreferredSize(new java.awt.Dimension(fieldsAndValuesJScrollPaneWidth, fieldsAndValuesJScrollPaneHeight));
159
                        fieldsJScrollPane.setViewportView(getFieldsJTree());
160
                }
161

    
162
                return fieldsJScrollPane;
163
        }
164

    
165
        /*
166
         *  (non-Javadoc)
167
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getValuesJPanel()
168
         */
169
        protected JPanel getValuesJPanel() {
170
                if (valuesJPanel == null) {
171
                        valuesJPanel = new javax.swing.JPanel();
172
                        valuesJPanel.setPreferredSize(new java.awt.Dimension(valuesJPanelWidth, valuesJPanelHeight));
173
                        valuesJPanel.setLayout(new GridBagLayout());
174
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
175
                        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
176
                        gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
177
                        gridBagConstraints.anchor = GridBagConstraints.NORTH;
178
                        valuesJPanel.add(getValuesJLabel(), gridBagConstraints);
179
                        gridBagConstraints.anchor = GridBagConstraints.SOUTH;
180
                        valuesJPanel.add(getValuesJScrollPane(), gridBagConstraints);
181
                }
182

    
183
                return valuesJPanel;
184
        }
185
        
186
        /*
187
         * (non-Javadoc)
188
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getValuesJScrollPane()
189
         */
190
        protected javax.swing.JScrollPane getValuesJScrollPane() {
191
                if (valuesJScrollPane == null) {
192
                        valuesJScrollPane = new javax.swing.JScrollPane();
193
                        valuesJScrollPane.setPreferredSize(new Dimension(fieldsAndValuesJScrollPaneWidth, fieldsAndValuesJScrollPaneHeight));
194
                        valuesJScrollPane.setViewportView(getValuesJList());
195
                }
196

    
197
                return valuesJScrollPane;
198
        }
199

    
200
        /*
201
         *  (non-Javadoc)
202
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFilterJScrollPane()
203
         */
204
        protected JScrollPane getFilterJScrollPane() {
205
                if (filterJScrollPane == null) {
206
                        filterJScrollPane = new javax.swing.JScrollPane();
207
                        filterJScrollPane.setPreferredSize(new java.awt.Dimension(filterJScrollPanelWidth, filterJScrollPaneHeight));
208
                        filterJScrollPane.setViewportView(getTxtExpression());
209
                        filterJScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
210
                }
211

    
212
                return filterJScrollPane;
213
        }        
214

    
215
        /*
216
         * (non-Javadoc)
217
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getTxtExpression()
218
         */
219
        protected javax.swing.JTextArea getTxtExpression() {
220
                if (txtExpression == null) {
221
                        txtExpression = new javax.swing.JTextArea();
222
                        txtExpression.setLineWrap(true);
223
                }
224

    
225
        
226
                return txtExpression;
227
        }
228

    
229
        /*
230
         *  (non-Javadoc)
231
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getTopJPanel()
232
         */
233
        protected JPanel getTopJPanel() {
234
                if (topJPanel == null) {
235
                        topJPanel = new JPanel();
236

    
237
                    topJPanel.setPreferredSize(new Dimension(defaultTopJPanelWidth, defaultTopJPanelHeight));
238
                    topJPanel.setLayout(new GridBagLayout());
239
                    
240
                    GridBagConstraints gridBagConstraints = new GridBagConstraints();
241
                    gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;            
242
                    
243
                    gridBagConstraints.anchor = GridBagConstraints.WEST;
244
                    topJPanel.add(getFieldsJPanel(), gridBagConstraints);
245
                    
246
                        gridBagConstraints.anchor = GridBagConstraints.CENTER;
247
//                        topJPanel.add(getFilterButtonsJPanel(), gridBagConstraints);
248
                        topJPanel.add(getTopCenterJPanel(), gridBagConstraints);
249
//                        topJPanel.add(getValidateFilterExpressionJCheckBox(), gridBagConstraints);
250
                        
251
                        gridBagConstraints.anchor = GridBagConstraints.EAST;
252
                        topJPanel.add(getValuesJPanel(), gridBagConstraints);
253
                }
254
                
255
                return topJPanel;
256
        }
257
        
258
        /**
259
         * This method initializes topCenterJPanel
260
         *
261
         * @return javax.swing.JPanel
262
         */
263
        protected JPanel getTopCenterJPanel() {
264
                if (topCenterJPanel == null) {
265
                        topCenterJPanel = new JPanel();
266
                        topCenterJPanel.setPreferredSize(new Dimension(getFilterButtonsJPanel().getPreferredSize().width, getFilterButtonsJPanel().getPreferredSize().height + validateFilterExpressionJCheckBoxHeight));
267
                        topCenterJPanel.setLayout(null);
268
                        
269
                        getFilterButtonsJPanel().setBounds(0, 0, getFilterButtonsJPanel().getPreferredSize().width, getFilterButtonsJPanel().getPreferredSize().height);
270
                        topCenterJPanel.add(getFilterButtonsJPanel());
271
                        topCenterJPanel.add(getValidateFilterExpressionJCheckBox());
272
                }
273
                return topCenterJPanel;
274
        }
275
        
276
        /**
277
         * This method initializes validateFilterExpressionJCheckBox
278
         *
279
         * @return javax.swing.JCheckBox
280
         */
281
        protected JCheckBox getValidateFilterExpressionJCheckBox() {
282
                if (validateFilterExpressionJCheckBox == null) {
283
                        validateFilterExpressionJCheckBox = new JCheckBox();
284
                        validateFilterExpressionJCheckBox.setBounds(3, getFilterButtonsJPanel().getPreferredSize().height, getFilterButtonsJPanel().getWidth(), validateFilterExpressionJCheckBoxHeight);
285
                        validateFilterExpressionJCheckBox.setText(Messages.getText("validate_expression"));
286
                        validateFilterExpressionJCheckBox.setToolTipText(Messages.getText("validate_filter_expression_explanation"));
287
                }
288
                return validateFilterExpressionJCheckBox;
289
        }
290

    
291
        /*
292
         *  (non-Javadoc)
293
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getBottomJPanel()
294
         */
295
        protected JPanel getBottomJPanel() {
296
                if (bottomJPanel == null) {
297
                        bottomJPanel = new JPanel();
298
                        bottomJPanel.setPreferredSize(new Dimension(defaultBottomJPanelWidth, defaultBottomJPanelHeight));
299
                        bottomJPanel.add(getFilterJScrollPane(), null);
300
                }
301
                
302
                return bottomJPanel;
303
        }
304

    
305
        /*
306
         *  (non-Javadoc)
307
         * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#resizeWidth(int)
308
         */
309
        public void resizeWidth(int new_Width) {        
310
                int difference = new_Width - DefaultWidth;
311
                
312
                if (difference != 0) {
313
                        this.setPreferredSize(new Dimension(this.getPreferredSize().width + difference, this.getPreferredSize().height));
314
                        getTopJPanel().setPreferredSize(new Dimension(getTopJPanel().getPreferredSize().width + difference, getTopJPanel().getPreferredSize().height));
315
                        getBottomJPanel().setPreferredSize(new Dimension(getBottomJPanel().getPreferredSize().width + difference, getBottomJPanel().getPreferredSize().height));
316
                        getFilterJScrollPane().setPreferredSize(new Dimension(getFilterJScrollPane().getPreferredSize().width + difference, getFilterJScrollPane().getPreferredSize().height));
317
                        
318
                        int halfDifference = difference / 2;
319
                        
320
                        getFieldsJLabel().setPreferredSize(new Dimension(getFieldsJLabel().getPreferredSize().width + halfDifference, getFieldsJLabel().getPreferredSize().height));
321
                        getFieldsJPanel().setPreferredSize(new Dimension(getFieldsJPanel().getPreferredSize().width + halfDifference, getFieldsJPanel().getPreferredSize().height));
322
                        getFieldsJScrollPane().setPreferredSize(new Dimension(getFieldsJScrollPane().getPreferredSize().width + halfDifference, getFieldsJScrollPane().getPreferredSize().height));
323
                
324
                        getValuesJLabel().setPreferredSize(new Dimension(getValuesJLabel().getPreferredSize().width + halfDifference, getValuesJLabel().getPreferredSize().height));
325
                        getValuesJPanel().setPreferredSize(new Dimension(getValuesJPanel().getPreferredSize().width + halfDifference, getValuesJPanel().getPreferredSize().height));
326
                        getValuesJScrollPane().setPreferredSize(new Dimension(getValuesJScrollPane().getPreferredSize().width + halfDifference, getValuesJScrollPane().getPreferredSize().height));
327
                }
328
        }
329
}