gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.swing / org.gvsig.tools.swing.impl / src / main / java / org / gvsig / tools / swing / impl / component / DefaultEvaluatorPanel.java @ 1274
History | View | Annotate | Download (22.6 KB)
1 |
/* gvSIG. Desktop Geographic Information System.
|
---|---|
2 |
*
|
3 |
* Copyright ? 2007-2013 gvSIG Association
|
4 |
*
|
5 |
* This program is free software; you can redistribute it and/or
|
6 |
* modify it under the terms of the GNU General Public License
|
7 |
* as published by the Free Software Foundation; either version 2
|
8 |
* of the License, or (at your option) any later version.
|
9 |
*
|
10 |
* This program is distributed in the hope that it will be useful,
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
* GNU General Public License for more details.
|
14 |
*
|
15 |
* You should have received a copy of the GNU General Public License
|
16 |
* along with this program; if not, write to the Free Software
|
17 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
18 |
* MA 02110-1301, USA.
|
19 |
*
|
20 |
* For any additional information, do not hesitate to contact us
|
21 |
* at info AT gvsig.com, or visit our website www.gvsig.com.
|
22 |
*/
|
23 |
package org.gvsig.tools.swing.impl.component; |
24 |
|
25 |
import java.awt.BorderLayout; |
26 |
import java.awt.Color; |
27 |
import java.awt.Component; |
28 |
import java.awt.Dimension; |
29 |
import java.awt.Font; |
30 |
import java.awt.GridBagConstraints; |
31 |
import java.awt.GridBagLayout; |
32 |
import java.awt.GridLayout; |
33 |
import java.awt.Insets; |
34 |
import java.awt.Rectangle; |
35 |
import java.awt.event.ActionEvent; |
36 |
import java.awt.event.ActionListener; |
37 |
import java.awt.event.MouseEvent; |
38 |
import java.awt.event.MouseListener; |
39 |
import java.util.ArrayList; |
40 |
|
41 |
import javax.swing.AbstractButton; |
42 |
import javax.swing.BorderFactory; |
43 |
import javax.swing.ButtonGroup; |
44 |
import javax.swing.DefaultListModel; |
45 |
import javax.swing.JButton; |
46 |
import javax.swing.JLabel; |
47 |
import javax.swing.JList; |
48 |
import javax.swing.JPanel; |
49 |
import javax.swing.JRadioButton; |
50 |
import javax.swing.JScrollBar; |
51 |
import javax.swing.JScrollPane; |
52 |
import javax.swing.JTextArea; |
53 |
import javax.swing.JTextPane; |
54 |
import javax.swing.ListSelectionModel; |
55 |
import javax.swing.ScrollPaneConstants; |
56 |
import javax.swing.border.EmptyBorder; |
57 |
import javax.swing.event.ListSelectionEvent; |
58 |
import javax.swing.event.ListSelectionListener; |
59 |
import javax.swing.text.SimpleAttributeSet; |
60 |
import javax.swing.text.StyleConstants; |
61 |
import javax.swing.text.StyledDocument; |
62 |
|
63 |
import org.gvsig.tools.ToolsLocator; |
64 |
import org.gvsig.tools.dynobject.DynClass; |
65 |
import org.gvsig.tools.dynobject.DynField; |
66 |
import org.gvsig.tools.dynobject.DynStruct; |
67 |
import org.gvsig.tools.evaluator.EvaluatorWithDescriptions; |
68 |
import org.gvsig.tools.evaluator.EvaluatorWithDescriptions.Description; |
69 |
import org.gvsig.tools.i18n.I18nManager; |
70 |
import org.gvsig.tools.swing.api.evaluator.EvaluatorPanel; |
71 |
//import org.gvsig.tools.swing.impl.dynobject.dynfield.DynFieldListItem;
|
72 |
|
73 |
|
74 |
/**
|
75 |
*
|
76 |
* @author jldominguez
|
77 |
*
|
78 |
*/
|
79 |
public class DefaultEvaluatorPanel extends EvaluatorPanel |
80 |
implements ListSelectionListener, MouseListener, ActionListener { |
81 |
|
82 |
private DynClass dynclass = null; |
83 |
private EvaluatorWithDescriptions eval_wdesc = null; |
84 |
|
85 |
private JTextArea expressionArea = null; |
86 |
private JList fieldList = null; |
87 |
private JList opfuList = null; |
88 |
private JPanel categRadioPanel = null; |
89 |
|
90 |
private JTextArea fieldExplainLabel = null; |
91 |
private JTextArea opfuDescLabel = null; |
92 |
|
93 |
private JRadioButton num_CategRB = null; |
94 |
private JRadioButton str_CategRB = null; |
95 |
private JRadioButton dat_CategRB = null; |
96 |
private JRadioButton geo_CategRB = null; |
97 |
private JRadioButton boo_CategRB = null; |
98 |
private JRadioButton all_CategRB = null; |
99 |
|
100 |
private JPanel opfuDescPanel = null; |
101 |
private JScrollPane opfuDescScroll = null; |
102 |
private JPanel opfuPanel = null; |
103 |
private JPanel fieldsPanel = null; |
104 |
|
105 |
private JPanel topPanel = null; |
106 |
private JPanel expressionPanel = null; |
107 |
|
108 |
private JButton clearButton = null; |
109 |
private JButton validateButton = null; |
110 |
|
111 |
private static I18nManager im = ToolsLocator.getI18nManager(); |
112 |
|
113 |
public DefaultEvaluatorPanel(
|
114 |
DynClass dcla, EvaluatorWithDescriptions evaluator) { |
115 |
initialize(dcla, evaluator); |
116 |
} |
117 |
|
118 |
public String getExpression() { |
119 |
return getExpressionArea().getText();
|
120 |
} |
121 |
|
122 |
public void initialize(DynClass dcla, EvaluatorWithDescriptions evaluator) { |
123 |
dynclass = dcla; |
124 |
eval_wdesc = evaluator; |
125 |
initComponents(); |
126 |
} |
127 |
|
128 |
/**
|
129 |
*
|
130 |
*/
|
131 |
private void initComponents() { |
132 |
|
133 |
this.setLayout(new GridBagLayout()); |
134 |
GridBagConstraints gbc = new GridBagConstraints(); |
135 |
gbc.fill = GridBagConstraints.BOTH;
|
136 |
gbc.weightx = 1;
|
137 |
gbc.weighty = 0.8;
|
138 |
gbc.gridheight = 2;
|
139 |
gbc.gridx = 0;
|
140 |
gbc.gridy = 0;
|
141 |
this.add(getTopPanel(), gbc);
|
142 |
gbc.weightx = 1;
|
143 |
gbc.weighty = 0.2;
|
144 |
gbc.gridheight = 1;
|
145 |
gbc.gridy = 2;
|
146 |
gbc.insets = new Insets(5, 0, 0, 0); |
147 |
this.add(getExpressionPanel(), gbc);
|
148 |
|
149 |
} |
150 |
|
151 |
|
152 |
private JTextArea getExpressionArea() { |
153 |
if (expressionArea == null) { |
154 |
expressionArea = new JTextArea(); |
155 |
expressionArea.setLineWrap(true);
|
156 |
expressionArea.setWrapStyleWord(true);
|
157 |
if (eval_wdesc != null) { |
158 |
expressionArea.setText(eval_wdesc.getSQL()); |
159 |
} |
160 |
} |
161 |
return expressionArea;
|
162 |
} |
163 |
|
164 |
private JPanel getExpressionPanel() { |
165 |
|
166 |
if (expressionPanel == null) { |
167 |
expressionPanel = new JPanel(); |
168 |
expressionPanel.setLayout(new BorderLayout()); |
169 |
expressionPanel.setBorder(BorderFactory.createTitledBorder(
|
170 |
im.getTranslation("_User_expression")));
|
171 |
|
172 |
JScrollPane scroll = new JScrollPane(getExpressionArea()); |
173 |
scroll.setHorizontalScrollBarPolicy( |
174 |
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
175 |
scroll.setVerticalScrollBarPolicy( |
176 |
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
177 |
expressionPanel.add(scroll, BorderLayout.CENTER);
|
178 |
|
179 |
JPanel buttonsp = new JPanel(); |
180 |
buttonsp.setLayout(new GridLayout(1, 1)); |
181 |
// ========================
|
182 |
// JPanel aux = new JPanel();
|
183 |
// aux.add(getValidateButton());
|
184 |
// buttonsp.add(aux);
|
185 |
// =====================
|
186 |
JPanel aux = new JPanel(); |
187 |
aux.add(getClearButton()); |
188 |
buttonsp.add(aux); |
189 |
// ===========================
|
190 |
expressionPanel.add(buttonsp, BorderLayout.EAST);
|
191 |
} |
192 |
return expressionPanel;
|
193 |
|
194 |
} |
195 |
|
196 |
|
197 |
/**
|
198 |
* @return
|
199 |
*/
|
200 |
private Component getClearButton() { |
201 |
if (clearButton == null) { |
202 |
clearButton = new JButton(im.getTranslation("_Clear")); |
203 |
clearButton.addActionListener(this);
|
204 |
} |
205 |
return clearButton;
|
206 |
} |
207 |
|
208 |
/**
|
209 |
* @return
|
210 |
*/
|
211 |
private JButton getValidateButton() { |
212 |
if (validateButton == null) { |
213 |
validateButton = new JButton(im.getTranslation("_Validate")); |
214 |
validateButton.addActionListener(this);
|
215 |
} |
216 |
return validateButton;
|
217 |
} |
218 |
|
219 |
private JList getFieldList() { |
220 |
if (fieldList == null) { |
221 |
fieldList = new JList(); |
222 |
if (dynclass != null) { |
223 |
|
224 |
fieldList.addListSelectionListener(this);
|
225 |
DynField[] ff = dynclass.getDynFields();
|
226 |
DefaultListModel resultList = new DefaultListModel(); |
227 |
for (int i=0; i<ff.length; i++) { |
228 |
resultList.addElement(ff[i].getName()); |
229 |
} |
230 |
fieldList.setModel(resultList); |
231 |
fieldList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
232 |
fieldList.addMouseListener(this);
|
233 |
} |
234 |
} |
235 |
return fieldList;
|
236 |
} |
237 |
|
238 |
|
239 |
private JList getOpfuList() { |
240 |
if (opfuList == null) { |
241 |
opfuList = new JList(); |
242 |
reloadOpfuList(opfuList); |
243 |
opfuList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
244 |
opfuList.addListSelectionListener(this);
|
245 |
opfuList.addMouseListener(this);
|
246 |
} |
247 |
return opfuList;
|
248 |
} |
249 |
|
250 |
|
251 |
private void reloadOpfuList(JList list) { |
252 |
|
253 |
DefaultListModel dlm = new DefaultListModel(); |
254 |
if (this.eval_wdesc != null) { |
255 |
Description[] descs = getCurrentDescriptions(eval_wdesc);
|
256 |
for (int i=0; i<descs.length; i++) { |
257 |
dlm.addElement(new DescriptionListItem(descs[i]));
|
258 |
} |
259 |
} |
260 |
list.setModel(dlm); |
261 |
|
262 |
} |
263 |
|
264 |
private Description[] getCurrentDescriptions( |
265 |
EvaluatorWithDescriptions eval) { |
266 |
|
267 |
int goodbits = 0; |
268 |
if (getAllCategRB().isSelected()) {
|
269 |
goodbits = |
270 |
EvaluatorWithDescriptions.Description.DATATYPE_CATEGORY_ALL; |
271 |
} else {
|
272 |
if (getNumCategRB().isSelected()) {
|
273 |
goodbits = EvaluatorWithDescriptions.Description.DATATYPE_CATEGORY_NUMBER; |
274 |
} else {
|
275 |
if (getStrCategRB().isSelected()) {
|
276 |
goodbits = EvaluatorWithDescriptions.Description.DATATYPE_CATEGORY_STRING; |
277 |
} else {
|
278 |
if (getDatCategRB().isSelected()) {
|
279 |
goodbits = EvaluatorWithDescriptions.Description.DATATYPE_CATEGORY_DATETIME; |
280 |
} else {
|
281 |
if (getGeoCategRB().isSelected()) {
|
282 |
goodbits = EvaluatorWithDescriptions.Description.DATATYPE_CATEGORY_GEOMETRY; |
283 |
} else {
|
284 |
if (getBooCategRB().isSelected()) {
|
285 |
goodbits = EvaluatorWithDescriptions.Description.DATATYPE_CATEGORY_BOOLEAN; |
286 |
} else {
|
287 |
|
288 |
} |
289 |
} |
290 |
} |
291 |
} |
292 |
} |
293 |
} |
294 |
|
295 |
ArrayList list = new ArrayList(); |
296 |
Description[] dd = eval.getAvailableOperators();
|
297 |
int andop = 0; |
298 |
for (int i=0; i<dd.length; i++) { |
299 |
andop = (dd[i].getDataTypeCategories() & goodbits); |
300 |
if (goodbits == 0 /* all */ || andop != 0) { |
301 |
list.add(dd[i]); |
302 |
} |
303 |
} |
304 |
dd = eval.getAvailableFunctions(); |
305 |
for (int i=0; i<dd.length; i++) { |
306 |
andop = (dd[i].getDataTypeCategories() & goodbits); |
307 |
if (goodbits == 0 /* all */ || andop != 0) { |
308 |
list.add(dd[i]); |
309 |
} |
310 |
} |
311 |
|
312 |
return (Description[]) list.toArray(new Description[0]); |
313 |
} |
314 |
|
315 |
private JRadioButton getAllCategRB() { |
316 |
if (all_CategRB == null) { |
317 |
this.all_CategRB = new JRadioButton(im.getTranslation("_All")); |
318 |
this.all_CategRB.addActionListener(this); |
319 |
} |
320 |
return all_CategRB;
|
321 |
} |
322 |
|
323 |
|
324 |
private JRadioButton getNumCategRB() { |
325 |
if (num_CategRB == null) { |
326 |
this.num_CategRB = new JRadioButton(im.getTranslation("_Numeric")); |
327 |
this.num_CategRB.addActionListener(this); |
328 |
} |
329 |
return num_CategRB;
|
330 |
} |
331 |
|
332 |
|
333 |
private JRadioButton getStrCategRB() { |
334 |
if (str_CategRB == null) { |
335 |
this.str_CategRB = new JRadioButton(im.getTranslation("_String")); |
336 |
this.str_CategRB.addActionListener(this); |
337 |
} |
338 |
return str_CategRB;
|
339 |
} |
340 |
|
341 |
|
342 |
private JRadioButton getDatCategRB() { |
343 |
if (dat_CategRB == null) { |
344 |
this.dat_CategRB = new JRadioButton( |
345 |
im.getTranslation("_Date_or_time"));
|
346 |
this.dat_CategRB.addActionListener(this); |
347 |
} |
348 |
return dat_CategRB;
|
349 |
} |
350 |
|
351 |
|
352 |
private JRadioButton getGeoCategRB() { |
353 |
if (geo_CategRB == null) { |
354 |
this.geo_CategRB = new JRadioButton(im.getTranslation("_Geometry")); |
355 |
this.geo_CategRB.addActionListener(this); |
356 |
} |
357 |
return geo_CategRB;
|
358 |
} |
359 |
|
360 |
|
361 |
private JPanel getCategRadioPanel() { |
362 |
if (categRadioPanel == null) { |
363 |
categRadioPanel = new JPanel(); |
364 |
ButtonGroup bg = new ButtonGroup(); |
365 |
bg.add(getAllCategRB()); |
366 |
bg.add(getNumCategRB()); |
367 |
bg.add(getStrCategRB()); |
368 |
bg.add(getDatCategRB()); |
369 |
bg.add(getBooCategRB()); |
370 |
bg.add(getGeoCategRB()); |
371 |
getAllCategRB().setSelected(true);
|
372 |
categRadioPanel.setLayout(new GridBagLayout()); |
373 |
GridBagConstraints gbc = new GridBagConstraints(); |
374 |
gbc.anchor = GridBagConstraints.NORTHWEST;
|
375 |
gbc.fill = GridBagConstraints.BOTH;
|
376 |
gbc.weightx = 0.5;
|
377 |
gbc.gridx = 0;
|
378 |
gbc.gridy = 0;
|
379 |
categRadioPanel.add(getAllCategRB(), gbc); |
380 |
gbc.gridy = 1;
|
381 |
categRadioPanel.add(getNumCategRB(), gbc); |
382 |
gbc.gridy = 2;
|
383 |
categRadioPanel.add(getStrCategRB(), gbc); |
384 |
gbc.gridy = 3;
|
385 |
categRadioPanel.add(getDatCategRB(), gbc); |
386 |
gbc.gridy = 4;
|
387 |
categRadioPanel.add(getBooCategRB(), gbc); |
388 |
gbc.gridy = 5;
|
389 |
categRadioPanel.add(getGeoCategRB(), gbc); |
390 |
gbc.gridy = 6;
|
391 |
gbc.weighty = 1;
|
392 |
categRadioPanel.add(new JPanel(), gbc); |
393 |
} |
394 |
return categRadioPanel;
|
395 |
} |
396 |
|
397 |
|
398 |
/**
|
399 |
* @return
|
400 |
*/
|
401 |
private JRadioButton getBooCategRB() { |
402 |
if (boo_CategRB == null) { |
403 |
this.boo_CategRB = new JRadioButton(im.getTranslation("_Boolean")); |
404 |
this.boo_CategRB.addActionListener(this); |
405 |
} |
406 |
return boo_CategRB;
|
407 |
} |
408 |
|
409 |
private JTextArea getOpfuDescLabel(Color bgcolor) { |
410 |
if (opfuDescLabel == null) { |
411 |
opfuDescLabel = new JTextArea(); |
412 |
opfuDescLabel.setEditable(false);
|
413 |
opfuDescLabel.setBorder(new EmptyBorder(2,2,2,2)); |
414 |
if (bgcolor != null) { |
415 |
opfuDescLabel.setBackground(bgcolor); |
416 |
} |
417 |
opfuDescLabel.setWrapStyleWord(true);
|
418 |
opfuDescLabel.setLineWrap(true);
|
419 |
opfuDescLabel.setFont(new JLabel().getFont()); |
420 |
opfuDescLabel.setText(" \n \n \n ");
|
421 |
} |
422 |
return opfuDescLabel;
|
423 |
} |
424 |
|
425 |
private JPanel getOpfuListCategPanel() { |
426 |
|
427 |
if (opfuDescPanel == null) { |
428 |
opfuDescPanel = new JPanel(); |
429 |
opfuDescPanel.setLayout(new GridBagLayout()); |
430 |
|
431 |
GridBagConstraints gbc = new GridBagConstraints(); |
432 |
gbc.fill = GridBagConstraints.BOTH;
|
433 |
gbc.anchor = GridBagConstraints.NORTHWEST;
|
434 |
gbc.weightx = 0.5;
|
435 |
gbc.weighty = 1;
|
436 |
gbc.gridx = 0;
|
437 |
gbc.gridy = 0;
|
438 |
|
439 |
JScrollPane scroll = new JScrollPane(getOpfuList()); |
440 |
scroll.setHorizontalScrollBarPolicy( |
441 |
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
442 |
scroll.setVerticalScrollBarPolicy( |
443 |
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
444 |
// scroll.setMinimumSize(new Dimension(100, 100));
|
445 |
opfuDescPanel.add(scroll, gbc); |
446 |
|
447 |
gbc.weightx = 0.5;
|
448 |
gbc.weighty = 1;
|
449 |
gbc.gridx = 1;
|
450 |
gbc.insets = new Insets(0, 5, 0, 0); |
451 |
opfuDescPanel.add(getCategRadioPanel(), gbc); |
452 |
} |
453 |
return opfuDescPanel;
|
454 |
} |
455 |
|
456 |
private JPanel getOpfuPanel() { |
457 |
if (opfuPanel == null) { |
458 |
opfuPanel = new JPanel(); |
459 |
opfuPanel.setLayout(new GridBagLayout()); |
460 |
|
461 |
GridBagConstraints gbc = new GridBagConstraints(); |
462 |
gbc.anchor = GridBagConstraints.NORTHWEST;
|
463 |
gbc.fill = GridBagConstraints.BOTH;
|
464 |
gbc.gridx = 0;
|
465 |
gbc.gridy = 0;
|
466 |
gbc.gridheight = 2;
|
467 |
gbc.weightx = 1;
|
468 |
gbc.weighty = 0.5;
|
469 |
|
470 |
opfuPanel.add(getOpfuListCategPanel(), gbc); |
471 |
|
472 |
gbc.gridx = 0;
|
473 |
gbc.gridy = 2;
|
474 |
gbc.weightx = 1;
|
475 |
gbc.weighty = 0.5;
|
476 |
gbc.gridheight = 1;
|
477 |
gbc.insets = new Insets(5, 0, 0, 0); |
478 |
|
479 |
opfuPanel.add( |
480 |
getOpfuDescScroll(opfuPanel.getBackground()), gbc); |
481 |
// ==================
|
482 |
opfuPanel.setBorder(BorderFactory.createTitledBorder(
|
483 |
im.getTranslation("_Available_functions_and_operators")));
|
484 |
// ==================
|
485 |
ActionEvent aev = new ActionEvent(getAllCategRB(), 0, ""); |
486 |
this.actionPerformed(aev);
|
487 |
|
488 |
} |
489 |
return opfuPanel;
|
490 |
} |
491 |
|
492 |
private JScrollPane getOpfuDescScroll(Color bg) { |
493 |
|
494 |
if (opfuDescScroll == null) { |
495 |
opfuDescScroll = new JScrollPane(getOpfuDescLabel(bg)); |
496 |
opfuDescScroll.setHorizontalScrollBarPolicy( |
497 |
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
498 |
opfuDescScroll.setVerticalScrollBarPolicy( |
499 |
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
500 |
opfuDescScroll.setBorder(new EmptyBorder(0, 0, 0, 0)); |
501 |
|
502 |
} |
503 |
return opfuDescScroll;
|
504 |
} |
505 |
|
506 |
private JTextArea getFieldExplainLabel(Color bgcolor) { |
507 |
if (fieldExplainLabel == null) { |
508 |
fieldExplainLabel = new JTextArea(); |
509 |
fieldExplainLabel.setEditable(false);
|
510 |
fieldExplainLabel.setBorder(new EmptyBorder(2,2,2,2)); |
511 |
fieldExplainLabel.setBackground(bgcolor); |
512 |
fieldExplainLabel.setLineWrap(true);
|
513 |
fieldExplainLabel.setWrapStyleWord(true);
|
514 |
fieldExplainLabel.setFont(new JLabel().getFont()); |
515 |
fieldExplainLabel.setText( |
516 |
im.getTranslation("_Double-click_to_paste_into_expression_box"));
|
517 |
} |
518 |
return fieldExplainLabel;
|
519 |
} |
520 |
|
521 |
private JPanel getFieldsPanel() { |
522 |
if (fieldsPanel == null) { |
523 |
fieldsPanel = new JPanel(); |
524 |
fieldsPanel.setLayout(new GridLayout(1, 2, 12, 0)); |
525 |
|
526 |
/*
|
527 |
GridBagConstraints gbc = new GridBagConstraints();
|
528 |
gbc.fill = GridBagConstraints.BOTH;
|
529 |
gbc.anchor = GridBagConstraints.NORTHWEST;
|
530 |
gbc.gridx = 0;
|
531 |
gbc.gridy = 0;
|
532 |
gbc.weightx = 1;
|
533 |
gbc.weighty = 1;
|
534 |
*/
|
535 |
|
536 |
JScrollPane scroll = new JScrollPane(getFieldList()); |
537 |
scroll.setHorizontalScrollBarPolicy( |
538 |
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
539 |
scroll.setVerticalScrollBarPolicy( |
540 |
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
541 |
scroll.setMinimumSize(new Dimension(100, 100)); |
542 |
fieldsPanel.add(scroll); // , gbc);
|
543 |
|
544 |
/*
|
545 |
gbc.gridx = 1;
|
546 |
gbc.insets = new Insets(0, 5, 0, 0);
|
547 |
*/
|
548 |
fieldsPanel.add( |
549 |
getFieldExplainLabel(fieldsPanel.getBackground())); |
550 |
// , gbc);
|
551 |
|
552 |
// ================
|
553 |
fieldsPanel.setBorder(BorderFactory.createTitledBorder(
|
554 |
im.getTranslation("_Available_fields")));
|
555 |
} |
556 |
return fieldsPanel;
|
557 |
} |
558 |
|
559 |
private JPanel getTopPanel() { |
560 |
if (topPanel == null) { |
561 |
topPanel = new JPanel(); |
562 |
topPanel.setLayout(new GridLayout(1, 2, 12, 0)); |
563 |
topPanel.add(getFieldsPanel()); |
564 |
topPanel.add(getOpfuPanel()); |
565 |
} |
566 |
|
567 |
return topPanel;
|
568 |
} |
569 |
|
570 |
|
571 |
public void valueChanged(ListSelectionEvent e) { |
572 |
|
573 |
if (e.getSource() == this.getOpfuList()) { |
574 |
Object sel = this.getOpfuList().getSelectedValue(); |
575 |
if (sel instanceof DescriptionListItem) { |
576 |
DescriptionListItem item = (DescriptionListItem) sel; |
577 |
String txt = item.getDescription().getTemplate() + " : " |
578 |
+ item.getDescription().getDescription(); |
579 |
this.getOpfuDescLabel(null).setText(txt); |
580 |
this.getOpfuDescLabel(null).scrollRectToVisible( |
581 |
new Rectangle(0, 0, 10, 10)); |
582 |
|
583 |
// =============
|
584 |
this.getOpfuDescLabel(null).setCaretPosition(0); |
585 |
|
586 |
} else {
|
587 |
this.getOpfuDescLabel(null).setText(" \n \n \n "); |
588 |
} |
589 |
return;
|
590 |
} |
591 |
} |
592 |
|
593 |
|
594 |
public void mousePressed(MouseEvent e) { |
595 |
|
596 |
Object src = e.getSource();
|
597 |
|
598 |
if (src == this.getFieldList() && e.getClickCount() == 2) { |
599 |
// paste field in text area
|
600 |
Object sel = this.getFieldList().getSelectedValue(); |
601 |
if (sel instanceof String) { |
602 |
int pos = this.getExpressionArea().getCaretPosition(); |
603 |
this.getExpressionArea().insert((String) sel, pos); |
604 |
} |
605 |
return;
|
606 |
} |
607 |
|
608 |
if (src == this.getOpfuList() && e.getClickCount() == 2) { |
609 |
// paste function/operator in text area
|
610 |
Object sel = this.getOpfuList().getSelectedValue(); |
611 |
if (sel instanceof DescriptionListItem) { |
612 |
DescriptionListItem item = (DescriptionListItem) sel; |
613 |
int pos = this.getExpressionArea().getCaretPosition(); |
614 |
this.getExpressionArea().insert(
|
615 |
item.getDescription().getName(), pos); |
616 |
} |
617 |
return;
|
618 |
} |
619 |
|
620 |
} |
621 |
public void mouseReleased(MouseEvent e) { } |
622 |
public void mouseEntered(MouseEvent e) { } |
623 |
public void mouseExited(MouseEvent e) { } |
624 |
public void mouseClicked(MouseEvent e) { } |
625 |
|
626 |
private class DescriptionListItem { |
627 |
|
628 |
private Description desc = null; |
629 |
|
630 |
public DescriptionListItem(Description d) {
|
631 |
desc = d; |
632 |
} |
633 |
|
634 |
public String toString() { |
635 |
return desc.getName();
|
636 |
} |
637 |
|
638 |
public Description getDescription() {
|
639 |
return desc;
|
640 |
} |
641 |
|
642 |
} |
643 |
|
644 |
public void actionPerformed(ActionEvent e) { |
645 |
|
646 |
if (e.getSource() instanceof JRadioButton) { |
647 |
this.reloadOpfuList(this.getOpfuList()); |
648 |
} |
649 |
|
650 |
if (e.getSource() == this.getClearButton()) { |
651 |
this.getExpressionArea().setText(""); |
652 |
} |
653 |
|
654 |
if (e.getSource() == this.getValidateButton()) { |
655 |
// this.getExpressionArea().setText("");
|
656 |
} |
657 |
|
658 |
} |
659 |
|
660 |
|
661 |
} |