Revision 44902 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultJExpressionBuilder.java
DefaultJExpressionBuilder.java | ||
---|---|---|
44 | 44 |
import javax.swing.event.TreeModelListener; |
45 | 45 |
import javax.swing.event.TreeSelectionEvent; |
46 | 46 |
import javax.swing.event.TreeSelectionListener; |
47 |
import javax.swing.text.JTextComponent; |
|
47 | 48 |
import javax.swing.tree.DefaultTreeCellRenderer; |
48 | 49 |
import javax.swing.tree.TreeModel; |
49 | 50 |
import javax.swing.tree.TreePath; |
... | ... | |
85 | 86 |
*/ |
86 | 87 |
@SuppressWarnings("UseSpecificCatch") |
87 | 88 |
public class DefaultJExpressionBuilder |
88 |
extends DefaultJExpressionBuilderView2 |
|
89 |
// extends DefaultJExpressionBuilderView2
|
|
89 | 90 |
implements JExpressionBuilder { |
90 | 91 |
|
91 | 92 |
private final ExpressionEvaluatorSwingManager manager; |
... | ... | |
101 | 102 |
private AbstractAutomaticExpressionChecker automaticExpressionChecker; |
102 | 103 |
private HistoryController<Expression> historyController; |
103 | 104 |
private BookmarksController<Expression> bookmarksController; |
105 |
private final DefaultJExpressionBuilderView2 view; |
|
106 |
private boolean automaticExpressionCheckerEnabled; |
|
104 | 107 |
|
105 | 108 |
private static class InfoPanel implements Component { |
106 | 109 |
|
... | ... | |
277 | 280 |
} |
278 | 281 |
} |
279 | 282 |
} |
280 |
|
|
281 |
@SuppressWarnings("OverridableMethodCallInConstructor") |
|
282 |
public DefaultJExpressionBuilder(ExpressionEvaluatorSwingManager manager, ExpressionBuilderConfig config) { |
|
283 |
|
|
284 |
public DefaultJExpressionBuilder( |
|
285 |
ExpressionEvaluatorSwingManager manager, |
|
286 |
ExpressionBuilderConfig config, |
|
287 |
DefaultJExpressionBuilderView2 view |
|
288 |
) { |
|
283 | 289 |
this.manager = manager; |
284 | 290 |
if( config == null ) { |
285 | 291 |
this.builderConfig = new DefaultExpressionBuilderConfig(manager); |
286 | 292 |
} else { |
287 | 293 |
this.builderConfig = config; |
288 | 294 |
} |
295 |
this.view = view; |
|
289 | 296 |
this.initComponents(); |
290 | 297 |
} |
291 | 298 |
|
292 |
@Override |
|
293 |
public ImageIcon loadImage(String imageName) { |
|
294 |
String name = FilenameUtils.getBaseName(imageName); |
|
295 |
IconTheme theme = ToolsSwingLocator.getIconThemeManager().getDefault(); |
|
296 |
if (theme.exists(name)) { |
|
297 |
return theme.get(name); |
|
298 |
} |
|
299 |
URL url = this.getClass().getResource(name + ".png"); |
|
300 |
if (url == null) { |
|
301 |
return null; |
|
302 |
} |
|
303 |
return new ImageIcon(url); |
|
304 |
} |
|
305 |
|
|
306 | 299 |
@SuppressWarnings("Convert2Lambda") |
307 | 300 |
private void initComponents() { |
308 | 301 |
ConfigurableActionsMamager cfgActionsManager = ToolsUtilLocator.getConfigurableActionsMamager(); |
309 | 302 |
JComponent c = cfgActionsManager.getConfigurableActionsComponent(CONFIGURABLE_PANEL_ID, this); |
310 |
pnlCfgActions.setLayout(new BorderLayout(0,0)); |
|
311 |
pnlCfgActions.add(c, BorderLayout.LINE_END); |
|
303 |
this.view.pnlCfgActions.setLayout(new BorderLayout(0,0));
|
|
304 |
this.view.pnlCfgActions.add(c, BorderLayout.LINE_END);
|
|
312 | 305 |
|
313 | 306 |
final ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
314 | 307 |
final IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent(); |
315 | 308 |
final I18nManager i18n = ToolsLocator.getI18nManager(); |
316 | 309 |
|
317 |
this.automaticExpressionChecker = new AbstractAutomaticExpressionChecker( |
|
318 |
builderConfig, txtExpression |
|
319 |
) { |
|
320 |
@Override |
|
321 |
protected Expression getExpression() { |
|
322 |
return DefaultJExpressionBuilder.this.getExpressionWithOutHistory(); |
|
323 |
} |
|
324 |
|
|
325 |
@Override |
|
326 |
protected void setMessage(int mode, String text) { |
|
327 |
super.setMessage(mode, text); |
|
328 |
message(text); |
|
329 |
} |
|
330 |
|
|
331 |
@Override |
|
332 |
protected void setPreview(Object value) { |
|
333 |
super.setPreview(value); |
|
334 |
message(this.getPreview()); |
|
335 |
} |
|
336 |
|
|
337 |
@Override |
|
338 |
protected void setTip(String theTip) { |
|
339 |
super.setTip(theTip); |
|
340 |
btnTip.setToolTipText(toHTML(this.getTip())); |
|
341 |
btnTip.setVisible(this.isTipEnabled()); |
|
342 |
} |
|
343 |
|
|
344 |
@Override |
|
345 |
protected String getSuggestion() { |
|
346 |
return builderConfig.getSuggestion(this.getExpression()); |
|
347 |
} |
|
348 |
|
|
349 |
}; |
|
350 |
this.infoPanel = new InfoPanel(this.pnlDescription, load_description_from_resource()); |
|
310 |
this.infoPanel = new InfoPanel(this.view.pnlDescription, load_description_from_resource()); |
|
351 | 311 |
|
352 |
this.btnTip.setVisible(false); |
|
353 |
this.btnTip.addActionListener(new ActionListener() { |
|
312 |
this.view.btnTip.setVisible(false);
|
|
313 |
this.view.btnTip.addActionListener(new ActionListener() {
|
|
354 | 314 |
@Override |
355 | 315 |
public void actionPerformed(ActionEvent e) { |
356 | 316 |
ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager(); |
357 | 317 |
dialogs.messageDialog( |
358 |
btnTip.getToolTipText(), |
|
318 |
view.btnTip.getToolTipText(),
|
|
359 | 319 |
"Tip", |
360 | 320 |
JOptionPane.INFORMATION_MESSAGE |
361 | 321 |
); |
... | ... | |
366 | 326 |
this.defaultIconElement = theme.get("expressionbuilder-element"); |
367 | 327 |
|
368 | 328 |
// toolsSwingManager.translate(this.tabExpressionBuilder); |
369 |
toolsSwingManager.setDefaultPopupMenu(this.txtGroupElement); |
|
370 |
toolsSwingManager.setDefaultPopupMenu(this.txtSimpleElementFilter); |
|
371 |
toolsSwingManager.addClearButton(this.txtSimpleElementFilter, new ActionListener() { |
|
329 |
toolsSwingManager.setDefaultPopupMenu(this.view.txtGroupElement);
|
|
330 |
toolsSwingManager.setDefaultPopupMenu(this.view.txtSimpleElementFilter);
|
|
331 |
toolsSwingManager.addClearButton(this.view.txtSimpleElementFilter, new ActionListener() {
|
|
372 | 332 |
@Override |
373 | 333 |
public void actionPerformed(ActionEvent e) { |
374 |
txtSimpleElementFilter.setText(""); |
|
334 |
view.txtSimpleElementFilter.setText("");
|
|
375 | 335 |
doFilter(); |
376 | 336 |
} |
377 | 337 |
}); |
... | ... | |
379 | 339 |
msgMenuTextEditor.addActionListener(new ActionListener() { |
380 | 340 |
@Override |
381 | 341 |
public void actionPerformed(ActionEvent e) { |
382 |
automaticExpressionChecker.showMessageDialog(); |
|
342 |
if( automaticExpressionChecker!=null ) { |
|
343 |
automaticExpressionChecker.showMessageDialog(); |
|
344 |
} |
|
383 | 345 |
} |
384 | 346 |
}); |
385 | 347 |
JMenuItem msgMenuCopy = new JMenuItem(i18n.getTranslation("copy")); |
386 | 348 |
msgMenuTextEditor.addActionListener(new ActionListener() { |
387 | 349 |
@Override |
388 | 350 |
public void actionPerformed(ActionEvent e) { |
389 |
StringSelection selection = new StringSelection(automaticExpressionChecker.getMessage()); |
|
390 |
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); |
|
391 |
clipboard.setContents(selection, selection); |
|
351 |
if( automaticExpressionChecker!=null ) { |
|
352 |
StringSelection selection = new StringSelection(automaticExpressionChecker.getMessage()); |
|
353 |
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); |
|
354 |
clipboard.setContents(selection, selection); |
|
355 |
} |
|
392 | 356 |
} |
393 | 357 |
}); |
394 | 358 |
|
... | ... | |
396 | 360 |
msgMenu.add(msgMenuTextEditor); |
397 | 361 |
msgMenu.addSeparator(); |
398 | 362 |
msgMenu.add(msgMenuCopy); |
399 |
this.lblMsg.setComponentPopupMenu(msgMenu); |
|
363 |
this.view.lblMsg.setComponentPopupMenu(msgMenu);
|
|
400 | 364 |
|
401 |
this.pnlDescription.setLayout(new BorderLayout()); |
|
402 |
this.txtExpression.addCaretListener(new CaretListener() {
|
|
365 |
this.view.pnlDescription.setLayout(new BorderLayout());
|
|
366 |
this.view.getExpressionComponent().addCaretListener(new CaretListener() {
|
|
403 | 367 |
@Override |
404 | 368 |
public void caretUpdate(CaretEvent e) { |
405 |
lblColumn.setText(Integer.toString(e.getDot())); |
|
369 |
view.lblColumn.setText(Integer.toString(e.getDot()));
|
|
406 | 370 |
} |
407 | 371 |
}); |
408 |
this.treeElements.setRowHeight(0); |
|
409 |
this.treeElements.setCellRenderer(new DefaultTreeCellRenderer() { |
|
372 |
this.view.treeElements.setRowHeight(0);
|
|
373 |
this.view.treeElements.setCellRenderer(new DefaultTreeCellRenderer() {
|
|
410 | 374 |
@Override |
411 | 375 |
public java.awt.Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { |
412 | 376 |
JLabel component = (JLabel) super.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus); |
... | ... | |
434 | 398 |
} |
435 | 399 |
}); |
436 | 400 |
|
437 |
this.treeElements.addTreeSelectionListener(new TreeSelectionListener() { |
|
401 |
this.view.treeElements.addTreeSelectionListener(new TreeSelectionListener() {
|
|
438 | 402 |
@Override |
439 | 403 |
public void valueChanged(TreeSelectionEvent e) { |
440 | 404 |
TreePath path = e.getPath(); |
... | ... | |
443 | 407 |
updateSimpleElementsList(element); |
444 | 408 |
} |
445 | 409 |
}); |
446 |
this.treeElements.addMouseListener(new MouseAdapter() { |
|
410 |
this.view.treeElements.addMouseListener(new MouseAdapter() {
|
|
447 | 411 |
@Override |
448 | 412 |
public void mouseClicked(MouseEvent e) { |
449 | 413 |
if( e.getButton()==MouseEvent.BUTTON1 && e.getClickCount()==2 ) { |
450 |
TreePath path = treeElements.getSelectionPath(); |
|
414 |
TreePath path = view.treeElements.getSelectionPath();
|
|
451 | 415 |
if( path!=null ) { |
452 | 416 |
Element element = (Element) path.getLastPathComponent(); |
453 | 417 |
if( element instanceof SimpleElement ) { |
... | ... | |
457 | 421 |
} |
458 | 422 |
} |
459 | 423 |
}); |
460 |
this.btnGroupElementInsert.addActionListener(new ActionListener() { |
|
424 |
this.view.btnGroupElementInsert.addActionListener(new ActionListener() {
|
|
461 | 425 |
@Override |
462 | 426 |
public void actionPerformed(ActionEvent e) { |
463 | 427 |
if( currentElement!=null ) { |
464 | 428 |
doInsert(currentElement.getRenderedValue()); |
465 | 429 |
} else { |
466 |
doInsert(txtGroupElement.getText()); |
|
430 |
doInsert(view.txtGroupElement.getText());
|
|
467 | 431 |
} |
468 | 432 |
} |
469 | 433 |
}); |
470 |
this.btnSimpleElementInsert.addActionListener(new ActionListener() { |
|
434 |
this.view.btnSimpleElementInsert.addActionListener(new ActionListener() {
|
|
471 | 435 |
@Override |
472 | 436 |
public void actionPerformed(ActionEvent e) { |
473 |
Element element = (Element) lstSimpleElement.getSelectedValue(); |
|
437 |
Element element = (Element) view.lstSimpleElement.getSelectedValue();
|
|
474 | 438 |
if (element != null) { |
475 | 439 |
doInsert(element); |
476 | 440 |
} |
477 | 441 |
} |
478 | 442 |
}); |
479 |
this.btnSimpleElementFilter.addActionListener(new ActionListener() { |
|
443 |
this.view.btnSimpleElementFilter.addActionListener(new ActionListener() {
|
|
480 | 444 |
@Override |
481 | 445 |
public void actionPerformed(ActionEvent e) { |
482 | 446 |
doFilter(); |
483 | 447 |
} |
484 | 448 |
}); |
485 | 449 |
|
486 |
this.lstSimpleElement.setModel(new FilteredListModel()); |
|
487 |
this.lstSimpleElement.setCellRenderer(new DefaultListCellRenderer() { |
|
450 |
this.view.lstSimpleElement.setModel(new FilteredListModel());
|
|
451 |
this.view.lstSimpleElement.setCellRenderer(new DefaultListCellRenderer() {
|
|
488 | 452 |
@Override |
489 | 453 |
public java.awt.Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { |
490 | 454 |
JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); |
... | ... | |
508 | 472 |
return label; |
509 | 473 |
} |
510 | 474 |
}); |
511 |
this.lstSimpleElement.getSelectionModel().addListSelectionListener(new ListSelectionListener() { |
|
475 |
this.view.lstSimpleElement.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
|
|
512 | 476 |
@Override |
513 | 477 |
public void valueChanged(ListSelectionEvent e) { |
514 |
Element element = (Element) lstSimpleElement.getSelectedValue(); |
|
478 |
Element element = (Element) view.lstSimpleElement.getSelectedValue();
|
|
515 | 479 |
if (element != null) { |
516 | 480 |
doSelectElement(element); |
517 | 481 |
} |
518 | 482 |
} |
519 | 483 |
}); |
520 |
this.lstSimpleElement.addMouseListener(new MouseAdapter() { |
|
484 |
this.view.lstSimpleElement.addMouseListener(new MouseAdapter() {
|
|
521 | 485 |
@Override |
522 | 486 |
public void mouseClicked(MouseEvent e) { |
523 | 487 |
if( e.getButton()==MouseEvent.BUTTON1 && e.getClickCount()==2 ) { |
524 |
Element element = (Element) lstSimpleElement.getSelectedValue(); |
|
488 |
Element element = (Element) view.lstSimpleElement.getSelectedValue();
|
|
525 | 489 |
if (element != null) { |
526 | 490 |
doSelectElement(element); |
527 | 491 |
doInsert(element); |
... | ... | |
529 | 493 |
} |
530 | 494 |
} |
531 | 495 |
}); |
532 |
this.lstSimpleElement.addKeyListener(new KeyAdapter() { |
|
496 |
this.view.lstSimpleElement.addKeyListener(new KeyAdapter() {
|
|
533 | 497 |
@Override |
534 | 498 |
public void keyReleased(KeyEvent e) { |
535 | 499 |
if( e.getKeyCode()==KeyEvent.VK_ENTER ) { |
536 |
Element element = (Element) lstSimpleElement.getSelectedValue(); |
|
500 |
Element element = (Element) view.lstSimpleElement.getSelectedValue();
|
|
537 | 501 |
if (element != null) { |
538 | 502 |
doSelectElement(element); |
539 | 503 |
doInsert(element); |
... | ... | |
542 | 506 |
} |
543 | 507 |
}); |
544 | 508 |
|
545 |
this.btnSimpleElementTimeLimit.addActionListener(new ActionListener() { |
|
509 |
this.view.btnSimpleElementTimeLimit.addActionListener(new ActionListener() {
|
|
546 | 510 |
@Override |
547 | 511 |
public void actionPerformed(ActionEvent e) { |
548 | 512 |
doSetTimeLimit(); |
549 | 513 |
} |
550 | 514 |
}); |
551 |
this.btnSimpleElementSortDown.addActionListener(new ActionListener() { |
|
515 |
this.view.btnSimpleElementSortDown.addActionListener(new ActionListener() {
|
|
552 | 516 |
@Override |
553 | 517 |
public void actionPerformed(ActionEvent e) { |
554 |
FilteredListModel model = (FilteredListModel) lstSimpleElement.getModel(); |
|
518 |
FilteredListModel model = (FilteredListModel) view.lstSimpleElement.getModel();
|
|
555 | 519 |
model.sort(false); |
556 | 520 |
} |
557 | 521 |
}); |
558 |
this.btnSimpleElementSortUp.addActionListener(new ActionListener() { |
|
522 |
this.view.btnSimpleElementSortUp.addActionListener(new ActionListener() {
|
|
559 | 523 |
@Override |
560 | 524 |
public void actionPerformed(ActionEvent e) { |
561 |
FilteredListModel model = (FilteredListModel) lstSimpleElement.getModel(); |
|
525 |
FilteredListModel model = (FilteredListModel) view.lstSimpleElement.getModel();
|
|
562 | 526 |
model.sort(true); |
563 | 527 |
} |
564 | 528 |
}); |
565 |
this.txtSimpleElementFilter.addKeyListener(new KeyAdapter() { |
|
529 |
this.view.txtSimpleElementFilter.addKeyListener(new KeyAdapter() {
|
|
566 | 530 |
@Override |
567 | 531 |
public void keyTyped(KeyEvent e) { |
568 | 532 |
if (e.getKeyChar() == '\n') { |
... | ... | |
570 | 534 |
} |
571 | 535 |
} |
572 | 536 |
}); |
573 |
this.btnAdd.addActionListener(new ActionListener() { |
|
537 |
this.view.btnAdd.addActionListener(new ActionListener() {
|
|
574 | 538 |
@Override |
575 | 539 |
public void actionPerformed(ActionEvent e) { |
576 | 540 |
doInsert(" + "); |
577 | 541 |
} |
578 | 542 |
}); |
579 |
this.btnDiv.addActionListener(new ActionListener() { |
|
543 |
this.view.btnDiv.addActionListener(new ActionListener() {
|
|
580 | 544 |
@Override |
581 | 545 |
public void actionPerformed(ActionEvent e) { |
582 | 546 |
doInsert(" / "); |
583 | 547 |
} |
584 | 548 |
}); |
585 |
this.btnEq.addActionListener(new ActionListener() { |
|
549 |
this.view.btnEq.addActionListener(new ActionListener() {
|
|
586 | 550 |
@Override |
587 | 551 |
public void actionPerformed(ActionEvent e) { |
588 | 552 |
doInsert(" = "); |
589 | 553 |
} |
590 | 554 |
}); |
591 |
this.btnMult.addActionListener(new ActionListener() { |
|
555 |
this.view.btnMult.addActionListener(new ActionListener() {
|
|
592 | 556 |
@Override |
593 | 557 |
public void actionPerformed(ActionEvent e) { |
594 | 558 |
doInsert(" * "); |
595 | 559 |
} |
596 | 560 |
}); |
597 |
this.btnNeq.addActionListener(new ActionListener() { |
|
561 |
this.view.btnNeq.addActionListener(new ActionListener() {
|
|
598 | 562 |
@Override |
599 | 563 |
public void actionPerformed(ActionEvent e) { |
600 | 564 |
doInsert(" <> "); |
601 | 565 |
} |
602 | 566 |
}); |
603 |
this.btnParentClose.addActionListener(new ActionListener() { |
|
567 |
this.view.btnParentClose.addActionListener(new ActionListener() {
|
|
604 | 568 |
@Override |
605 | 569 |
public void actionPerformed(ActionEvent e) { |
606 | 570 |
doInsert(" ) "); |
607 | 571 |
} |
608 | 572 |
}); |
609 |
this.btnParentOpen.addActionListener(new ActionListener() { |
|
573 |
this.view.btnParentOpen.addActionListener(new ActionListener() {
|
|
610 | 574 |
@Override |
611 | 575 |
public void actionPerformed(ActionEvent e) { |
612 | 576 |
doInsert(" ( "); |
613 | 577 |
} |
614 | 578 |
}); |
615 |
this.btnSubst.addActionListener(new ActionListener() { |
|
579 |
this.view.btnSubst.addActionListener(new ActionListener() {
|
|
616 | 580 |
@Override |
617 | 581 |
public void actionPerformed(ActionEvent e) { |
618 | 582 |
doInsert(" - "); |
... | ... | |
646 | 610 |
}; |
647 | 611 |
this.historyController = toolsSwingManager.createHistoryController( |
648 | 612 |
ExpressionEvaluatorLocator.getManager().getHistory(), |
649 |
btnHistory |
|
613 |
view.btnHistory
|
|
650 | 614 |
); |
651 | 615 |
this.historyController.addActionListener(historyAndBookmarkListener); |
652 | 616 |
|
653 | 617 |
this.bookmarksController = toolsSwingManager.createBookmarksController( |
654 | 618 |
ExpressionEvaluatorLocator.getManager().getBookmarks(), |
655 |
btnBookmarks |
|
619 |
view.btnBookmarks
|
|
656 | 620 |
); |
657 | 621 |
this.bookmarksController.addActionListener(historyAndBookmarkListener); |
658 | 622 |
|
659 | 623 |
this.infoPanel.repaint(); |
660 | 624 |
|
661 |
this.setPreferredSize(new Dimension(750, 450)); |
|
625 |
this.view.setPreferredSize(new Dimension(750, 450));
|
|
662 | 626 |
|
663 | 627 |
|
664 |
Dimension dim = this.getPreferredSize(); |
|
665 |
this.spnlExpression.setDividerLocation(dim.height/5); |
|
666 |
this.spnlBottom.setDividerLocation(dim.width/3); |
|
667 |
this.spnlItem.setDividerLocation(dim.width/3); |
|
628 |
Dimension dim = this.view.getPreferredSize();
|
|
629 |
this.view.spnlExpression.setDividerLocation(dim.height/5);
|
|
630 |
this.view.spnlBottom.setDividerLocation(dim.width/3);
|
|
631 |
this.view.spnlItem.setDividerLocation(dim.width/3);
|
|
668 | 632 |
} |
669 | 633 |
|
670 | 634 |
private void message(String text) { |
671 | 635 |
if( StringUtils.isBlank(text) ) { |
672 |
lblMsg.setText(""); |
|
636 |
view.lblMsg.setText("");
|
|
673 | 637 |
return; |
674 | 638 |
} |
675 | 639 |
String msg = text; |
... | ... | |
681 | 645 |
msg = ss[0]; |
682 | 646 |
} |
683 | 647 |
} |
684 |
lblMsg.setText(toHTML(StringUtils.abbreviate(msg,70)+tail)); |
|
648 |
view.lblMsg.setText(toHTML(StringUtils.abbreviate(msg,70)+tail));
|
|
685 | 649 |
} |
686 | 650 |
|
687 | 651 |
private String toHTML(String s) { |
... | ... | |
708 | 672 |
|
709 | 673 |
@Override |
710 | 674 |
public String getText() { |
711 |
return this.txtExpression.getText();
|
|
675 |
return this.view.getExpressionComponent().getText();
|
|
712 | 676 |
} |
713 | 677 |
|
714 | 678 |
@Override |
715 | 679 |
public void setText(String text) { |
716 |
this.txtExpression.setText(text);
|
|
680 |
this.view.getExpressionComponent().setText(text);
|
|
717 | 681 |
} |
718 | 682 |
|
719 | 683 |
private void doInsert(String s) { |
720 |
this.txtExpression.replaceSelection(s); |
|
721 |
String ss = this.txtExpression.getText(); |
|
722 |
int start = ss.indexOf("{{"); |
|
723 |
int end = ss.indexOf("}}"); |
|
684 |
int start = s.indexOf("{{"); |
|
685 |
int end = s.indexOf("}}"); |
|
724 | 686 |
if (start > 0 && end > 0) { |
725 |
this.txtExpression.replaceRange("", end, end + 2); |
|
726 |
this.txtExpression.replaceRange("", start, start + 2); |
|
727 |
this.txtExpression.setSelectionStart(start); |
|
728 |
this.txtExpression.setSelectionEnd(end - 2); |
|
687 |
s = s.replace("{{", ""); |
|
688 |
s = s.replace("}}", ""); |
|
729 | 689 |
} |
730 |
this.txtExpression.requestFocusInWindow(); |
|
690 |
JTextComponent jtext = this.view.getExpressionComponent(); |
|
691 |
int selstart = this.view.getExpressionComponent().getSelectionStart(); |
|
692 |
jtext.replaceSelection(s); |
|
693 |
if (start > 0 && end > 0) { |
|
694 |
jtext.setSelectionStart(selstart+start); |
|
695 |
jtext.setSelectionEnd(selstart+end - 2); |
|
696 |
} |
|
697 |
jtext.requestFocusInWindow(); |
|
731 | 698 |
} |
732 | 699 |
|
733 | 700 |
private void doInsert(Element element) { |
... | ... | |
736 | 703 |
} |
737 | 704 |
|
738 | 705 |
private void doFilter() { |
739 |
FilteredListModel model = (FilteredListModel) this.lstSimpleElement.getModel(); |
|
740 |
model.setFilter(this.txtSimpleElementFilter.getText()); |
|
706 |
FilteredListModel model = (FilteredListModel) this.view.lstSimpleElement.getModel();
|
|
707 |
model.setFilter(this.view.txtSimpleElementFilter.getText());
|
|
741 | 708 |
} |
742 | 709 |
|
743 | 710 |
private void doSelectElement(Element element) { |
... | ... | |
754 | 721 |
FilteredListModel model = new FilteredListModel(); |
755 | 722 |
model.addElement("Loading..."); |
756 | 723 |
this.currentElement = element; |
757 |
this.txtGroupElement.setText(element.getName()); |
|
758 |
this.txtSimpleElementFilter.setText(""); |
|
724 |
this.view.txtGroupElement.setText(element.getName());
|
|
725 |
this.view.txtSimpleElementFilter.setText("");
|
|
759 | 726 |
// this.infoPanel.clean(); |
760 | 727 |
// this.infoPanel.repaint(); |
761 | 728 |
if (element instanceof SimpleElement) { |
762 |
this.btnGroupElementInsert.setEnabled(true); |
|
729 |
this.view.btnGroupElementInsert.setEnabled(true);
|
|
763 | 730 |
} else { |
764 |
this.btnGroupElementInsert.setEnabled(false); |
|
731 |
this.view.btnGroupElementInsert.setEnabled(false);
|
|
765 | 732 |
} |
766 |
this.lstSimpleElement.setEnabled(false); |
|
767 |
this.lstSimpleElement.setModel(model); |
|
733 |
this.view.lstSimpleElement.setEnabled(false);
|
|
734 |
this.view.lstSimpleElement.setModel(model);
|
|
768 | 735 |
|
769 | 736 |
Thread th = new Thread(new Runnable() { |
770 | 737 |
@Override |
... | ... | |
796 | 763 |
return; |
797 | 764 |
} |
798 | 765 |
if( element.hasMoreValues()) { |
799 |
lblSimpleElementsMsg.setText("More elements..."); |
|
766 |
view.lblSimpleElementsMsg.setText("More elements...");
|
|
800 | 767 |
} else { |
801 |
lblSimpleElementsMsg.setText(""); |
|
768 |
view.lblSimpleElementsMsg.setText("");
|
|
802 | 769 |
} |
803 |
lstSimpleElement.setEnabled(true); |
|
804 |
lstSimpleElement.setModel(model); |
|
770 |
view.lstSimpleElement.setEnabled(true);
|
|
771 |
view.lstSimpleElement.setModel(model);
|
|
805 | 772 |
} |
806 | 773 |
}); |
807 | 774 |
|
... | ... | |
817 | 784 |
|
818 | 785 |
@Override |
819 | 786 |
public Expression getExpressionWithOutHistory() { |
820 |
String phrase = this.txtExpression.getText();
|
|
787 |
String phrase = this.view.getExpressionComponent().getText();
|
|
821 | 788 |
if (StringUtils.isEmpty(phrase)) { |
822 | 789 |
return null; |
823 | 790 |
} |
... | ... | |
834 | 801 |
@Override |
835 | 802 |
public void setExpression(Expression expression) { |
836 | 803 |
if( expression==null ) { |
837 |
this.txtExpression.setText("");
|
|
804 |
this.view.getExpressionComponent().setText("");
|
|
838 | 805 |
} else { |
839 |
this.txtExpression.setText(expression.getPhrase());
|
|
806 |
this.view.getExpressionComponent().setText(expression.getPhrase());
|
|
840 | 807 |
} |
841 | 808 |
// try { this.scriptEditor.set(null); } catch(Exception ex) {} |
842 | 809 |
// this.scriptPicker.set(null); |
... | ... | |
901 | 868 |
this.builderConfig.setPreviewSymbolTable(symbolTable); |
902 | 869 |
} |
903 | 870 |
|
871 |
public void setAutomaticExpressionCheckerEnabled(boolean enabled) { |
|
872 |
if( this.automaticExpressionChecker==null ) { |
|
873 |
this.automaticExpressionCheckerEnabled = enabled; |
|
874 |
} |
|
875 |
} |
|
876 |
|
|
877 |
public boolean isAutomaticExpressionCheckerEnabled() { |
|
878 |
return this.automaticExpressionCheckerEnabled; |
|
879 |
} |
|
880 |
|
|
904 | 881 |
@Override |
905 | 882 |
public JComponent asJComponent() { |
906 |
this.initializeTree(); |
|
907 |
SwingUtilities.invokeLater(new Runnable() { |
|
908 |
@Override |
|
909 |
public void run() { |
|
910 |
txtExpression.requestFocusInWindow(); |
|
911 |
} |
|
912 |
}); |
|
913 |
return this; |
|
883 |
if (this.automaticExpressionChecker == null && this.automaticExpressionCheckerEnabled ) { |
|
884 |
this.automaticExpressionChecker = new AbstractAutomaticExpressionChecker( |
|
885 |
builderConfig, this.view.getExpressionComponent() |
|
886 |
) { |
|
887 |
@Override |
|
888 |
protected Expression getExpression() { |
|
889 |
return DefaultJExpressionBuilder.this.getExpressionWithOutHistory(); |
|
890 |
} |
|
891 |
|
|
892 |
@Override |
|
893 |
protected void setMessage(int mode, String text) { |
|
894 |
super.setMessage(mode, text); |
|
895 |
message(text); |
|
896 |
} |
|
897 |
|
|
898 |
@Override |
|
899 |
protected void setPreview(Object value) { |
|
900 |
super.setPreview(value); |
|
901 |
message(this.getPreview()); |
|
902 |
} |
|
903 |
|
|
904 |
@Override |
|
905 |
protected void setTip(String theTip) { |
|
906 |
super.setTip(theTip); |
|
907 |
view.btnTip.setToolTipText(toHTML(this.getTip())); |
|
908 |
view.btnTip.setVisible(this.isTipEnabled()); |
|
909 |
} |
|
910 |
|
|
911 |
@Override |
|
912 |
protected String getSuggestion() { |
|
913 |
return builderConfig.getSuggestion(this.getExpression()); |
|
914 |
} |
|
915 |
|
|
916 |
}; |
|
917 |
|
|
918 |
} |
|
919 |
this.initializeTree(); |
|
920 |
SwingUtilities.invokeLater(() -> { |
|
921 |
view.getExpressionComponent().requestFocusInWindow(); |
|
922 |
}); |
|
923 |
return this.view; |
|
914 | 924 |
} |
915 |
|
|
925 |
|
|
916 | 926 |
private void initializeTree() { |
917 | 927 |
if( this.treeModel == null ) { |
918 | 928 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
... | ... | |
921 | 931 |
i18n.getTranslation("_Elements"), |
922 | 932 |
this.getElements() |
923 | 933 |
).setConfig(this)); |
924 |
this.treeElements.setModel(this.treeModel); |
|
925 |
for (int i = 0; i < this.treeElements.getRowCount(); i++) { |
|
926 |
TreePath pathRow = this.treeElements.getPathForRow(i); |
|
934 |
this.view.treeElements.setModel(this.treeModel);
|
|
935 |
for (int i = 0; i < this.view.treeElements.getRowCount(); i++) {
|
|
936 |
TreePath pathRow = this.view.treeElements.getPathForRow(i);
|
|
927 | 937 |
Element element = (Element) pathRow.getLastPathComponent(); |
928 | 938 |
if (i18n.getTranslation("_Functions").equals(element.getName())) { |
929 |
this.treeElements.setSelectionPath(pathRow); |
|
939 |
this.view.treeElements.setSelectionPath(pathRow);
|
|
930 | 940 |
doSelectElement(element); |
931 | 941 |
updateSimpleElementsList(element); |
932 | 942 |
break; |
... | ... | |
983 | 993 |
@Override |
984 | 994 |
public void expandElement(Element element) { |
985 | 995 |
this.initializeTree(); |
986 |
for (int i = 0; i < this.treeElements.getRowCount(); i++) { |
|
987 |
TreePath path = this.treeElements.getPathForRow(i); |
|
996 |
for (int i = 0; i < this.view.treeElements.getRowCount(); i++) {
|
|
997 |
TreePath path = this.view.treeElements.getPathForRow(i);
|
|
988 | 998 |
if( path.getLastPathComponent()==element ) { |
989 | 999 |
// FIXME: habria que expandir los padres hasta llegar a este. |
990 |
this.treeElements.expandPath(path); |
|
1000 |
this.view.treeElements.expandPath(path);
|
|
991 | 1001 |
return; |
992 | 1002 |
} |
993 | 1003 |
} |
... | ... | |
999 | 1009 |
return; |
1000 | 1010 |
} |
1001 | 1011 |
this.initializeTree(); |
1002 |
for (int i = 0; i < this.treeElements.getRowCount(); i++) { |
|
1003 |
TreePath path = this.treeElements.getPathForRow(i); |
|
1012 |
for (int i = 0; i < this.view.treeElements.getRowCount(); i++) {
|
|
1013 |
TreePath path = this.view.treeElements.getPathForRow(i);
|
|
1004 | 1014 |
if( condition.test((Element) path.getLastPathComponent()) ) { |
1005 | 1015 |
// FIXME: habria que expandir los padres hasta llegar a este. |
1006 |
this.treeElements.expandPath(path); |
|
1016 |
this.view.treeElements.expandPath(path);
|
|
1007 | 1017 |
return; |
1008 | 1018 |
} |
1009 | 1019 |
} |
Also available in: Unified diff