Revision 44267 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 | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.awt.BorderLayout; |
4 | 4 |
import java.awt.Dimension; |
5 |
import java.awt.Point; |
|
6 | 5 |
import java.awt.Toolkit; |
7 | 6 |
import java.awt.datatransfer.Clipboard; |
8 | 7 |
import java.awt.datatransfer.StringSelection; |
... | ... | |
19 | 18 |
import java.util.HashSet; |
20 | 19 |
import java.util.List; |
21 | 20 |
import java.util.Locale; |
21 |
import java.util.Map; |
|
22 | 22 |
import java.util.Objects; |
23 | 23 |
import javax.swing.DefaultListCellRenderer; |
24 | 24 |
import javax.swing.ImageIcon; |
... | ... | |
48 | 48 |
import org.apache.commons.io.FilenameUtils; |
49 | 49 |
import org.apache.commons.io.IOUtils; |
50 | 50 |
import org.apache.commons.lang3.StringUtils; |
51 |
import org.gvsig.expressionevaluator.Bookmark; |
|
52 |
import org.gvsig.expressionevaluator.Bookmarks; |
|
53 | 51 |
import org.gvsig.expressionevaluator.Expression; |
54 | 52 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
55 | 53 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
56 |
import org.gvsig.expressionevaluator.History; |
|
57 | 54 |
import org.gvsig.expressionevaluator.SymbolTable; |
58 | 55 |
import org.gvsig.expressionevaluator.swing.Element; |
59 | 56 |
import org.gvsig.expressionevaluator.swing.Element.GroupElement; |
... | ... | |
70 | 67 |
import org.gvsig.tools.swing.api.pickercontroller.PickerController; |
71 | 68 |
import org.gvsig.tools.swing.api.script.ScriptSwingManager; |
72 | 69 |
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager; |
73 |
import org.gvsig.tools.swing.api.windowmanager.Dialog; |
|
74 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
|
75 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2; |
|
76 | 70 |
import org.gvsig.tools.swing.icontheme.IconTheme; |
77 | 71 |
|
78 | 72 |
/** |
... | ... | |
95 | 89 |
private ImageIcon defaultIconElement; |
96 | 90 |
private InfoPanel infoPanel; |
97 | 91 |
private AbstractAutomaticExpressionChecker automaticExpressionChecker; |
98 |
|
|
92 |
private HistoryController historyController; |
|
93 |
private BookmarksController bookmarksController; |
|
94 |
|
|
99 | 95 |
private static class InfoPanel implements Component { |
100 | 96 |
|
101 | 97 |
private final JEditorPane txtDescription; |
... | ... | |
382 | 378 |
this.lblMsg.setComponentPopupMenu(msgMenu); |
383 | 379 |
|
384 | 380 |
this.pnlDescription.setLayout(new BorderLayout()); |
385 |
// this.pnlDescription.setBackground(this.txtDescription.getBackground()); |
|
386 | 381 |
this.txtExpression.addCaretListener(new CaretListener() { |
387 | 382 |
@Override |
388 | 383 |
public void caretUpdate(CaretEvent e) { |
... | ... | |
396 | 391 |
JLabel component = (JLabel) super.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus); |
397 | 392 |
JLabel text = component; |
398 | 393 |
JLabel icon = component; |
399 |
|
|
400 |
// JPanel component = new JPanel(); |
|
401 |
// JLabel text = new JLabel(); |
|
402 |
// JLabel icon = new JLabel(); |
|
403 |
// component.setLayout(new FlowLayout()); |
|
404 |
// component.add(icon); |
|
405 |
// component.add(text); |
|
406 |
// component.setLayout(new GridBagLayout()); |
|
407 |
// component.add(icon, new GridBagConstraints(0,0,0,0,0,0,GridBagConstraints.NORTH,GridBagConstraints.BOTH,new Insets(1,1,1,1),1,1)); |
|
408 |
// component.add(text, new GridBagConstraints(1,0,0,0,0,0,GridBagConstraints.NORTH,GridBagConstraints.BOTH,new Insets(1,1,1,1),1,1)); |
|
409 | 394 |
|
410 | 395 |
if( value instanceof Element ) { |
411 | 396 |
Element element = (Element) value; |
... | ... | |
628 | 613 |
|
629 | 614 |
this.tabExpressionBuilder.setEnabledAt(0, this.builderConfig.getPreferences().getScriptsEnabled()); |
630 | 615 |
|
631 |
this.btnHistory.addActionListener(new ActionListener() {
|
|
616 |
this.historyController = new HistoryController(btnHistory) {
|
|
632 | 617 |
@Override |
633 |
public void actionPerformed(ActionEvent e) {
|
|
634 |
doHistory();
|
|
618 |
public void updateExpression(Expression expression) {
|
|
619 |
setExpression(expression);
|
|
635 | 620 |
} |
636 |
});
|
|
621 |
}; |
|
637 | 622 |
|
638 |
this.btnBookmarks.addActionListener(new ActionListener() {
|
|
623 |
this.bookmarksController = new BookmarksController(btnBookmarks) {
|
|
639 | 624 |
@Override |
640 |
public void actionPerformed(ActionEvent e) {
|
|
641 |
doBookmarks();
|
|
625 |
public void updateExpression(Expression expression) {
|
|
626 |
setExpression(expression);
|
|
642 | 627 |
} |
643 |
}); |
|
628 |
|
|
629 |
@Override |
|
630 |
public Expression getExpressionWithOutHistory() { |
|
631 |
return DefaultJExpressionBuilder.this.getExpressionWithOutHistory(); |
|
632 |
} |
|
633 |
}; |
|
644 | 634 |
|
645 | 635 |
|
646 | 636 |
this.infoPanel.repaint(); |
... | ... | |
935 | 925 |
} |
936 | 926 |
} |
937 | 927 |
} |
938 |
|
|
939 |
private void doHistory() { |
|
940 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
941 |
ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager(); |
|
942 |
JPopupMenu popup = new JPopupMenu(); |
|
943 |
History history = theManager.getHistory(); |
|
944 |
if( !history.isEmpty() ) { |
|
945 |
for (Expression expression : history) { |
|
946 |
popup.add(createHistoryMenuItem(expression)); |
|
947 |
} |
|
948 |
popup.addSeparator(); |
|
949 |
} |
|
950 |
JMenuItem showAllHistory = new JMenuItem(i18n.getTranslation("_Show_all_history")); |
|
951 |
showAllHistory.addActionListener(new ActionListener() { |
|
952 |
@Override |
|
953 |
public void actionPerformed(ActionEvent e) { |
|
954 |
doShowHistoryDialog(); |
|
955 |
} |
|
956 |
}); |
|
957 |
popup.add(showAllHistory); |
|
958 |
Point p = this.btnHistory.getLocationOnScreen(); |
|
959 |
popup.show(this.btnHistory, 0, this.btnHistory.getHeight()); |
|
928 |
|
|
929 |
@Override |
|
930 |
public Object getProperty(String name) { |
|
931 |
return this.builderConfig.getProperty(name); |
|
960 | 932 |
} |
961 |
|
|
962 |
private JMenuItem createHistoryMenuItem(final Expression expression) { |
|
963 |
JMenuItem item = new JMenuItem(StringUtils.abbreviate(expression.getPhrase(), 45)); |
|
964 |
item.addActionListener(new ActionListener() { |
|
965 |
@Override |
|
966 |
public void actionPerformed(ActionEvent e) { |
|
967 |
setExpression(expression); |
|
968 |
} |
|
969 |
}); |
|
970 |
return item; |
|
933 |
|
|
934 |
@Override |
|
935 |
public void setProperty(String name, Object value) { |
|
936 |
this.builderConfig.setProperty(name, value); |
|
971 | 937 |
} |
972 |
|
|
973 |
private void doShowHistoryDialog() { |
|
974 |
WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager(); |
|
975 |
final DefaultHistoryPanel panel = new DefaultHistoryPanel(); |
|
976 |
final Dialog dialog = winManager.createDialog( |
|
977 |
panel, |
|
978 |
"History", |
|
979 |
null, |
|
980 |
WindowManager_v2.BUTTONS_OK_CANCEL |
|
981 |
); |
|
982 |
dialog.addActionListener(new ActionListener() { |
|
983 |
@Override |
|
984 |
public void actionPerformed(ActionEvent e) { |
|
985 |
if( dialog.getAction()!=WindowManager_v2.BUTTON_OK ) { |
|
986 |
return; |
|
987 |
} |
|
988 |
setExpression(panel.getExpression()); |
|
989 |
} |
|
990 |
}); |
|
991 |
dialog.show(WindowManager.MODE.DIALOG); |
|
992 |
} |
|
993 | 938 |
|
994 |
private void doBookmarks() { |
|
995 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
996 |
ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager(); |
|
997 |
JPopupMenu popup = new JPopupMenu(); |
|
998 |
JMenuItem addToBookmarks = new JMenuItem(i18n.getTranslation("_Add_to_bookmarks")); |
|
999 |
addToBookmarks.addActionListener(new ActionListener() { |
|
1000 |
@Override |
|
1001 |
public void actionPerformed(ActionEvent e) { |
|
1002 |
doShowBookmarksDialog(getExpressionWithOutHistory()); |
|
1003 |
} |
|
1004 |
}); |
|
1005 |
popup.add(addToBookmarks); |
|
1006 |
Bookmarks bookmarks = theManager.getBookmarks(); |
|
1007 |
if( !bookmarks.isEmpty() ) { |
|
1008 |
popup.addSeparator(); |
|
1009 |
for (Bookmark bookmark : bookmarks) { |
|
1010 |
popup.add(createBookmarkMenuItem(bookmark)); |
|
1011 |
} |
|
1012 |
popup.addSeparator(); |
|
1013 |
JMenuItem showAllBookmarks = new JMenuItem(i18n.getTranslation("_Show_all_bookmarks")); |
|
1014 |
showAllBookmarks.addActionListener(new ActionListener() { |
|
1015 |
@Override |
|
1016 |
public void actionPerformed(ActionEvent e) { |
|
1017 |
doShowBookmarksDialog(null); |
|
1018 |
} |
|
1019 |
}); |
|
1020 |
popup.add(showAllBookmarks); |
|
1021 |
} |
|
1022 |
Point p = this.btnBookmarks.getLocationOnScreen(); |
|
1023 |
popup.show(this.btnBookmarks, 0, this.btnBookmarks.getHeight()); |
|
939 |
@Override |
|
940 |
public Map<String, Object> getProperties() { |
|
941 |
return this.builderConfig.getProperties(); |
|
1024 | 942 |
} |
1025 |
|
|
1026 |
private JMenuItem createBookmarkMenuItem(final Bookmark bookmark) { |
|
1027 |
JMenuItem item = new JMenuItem(StringUtils.abbreviate(bookmark.getName(), 45)); |
|
1028 |
item.addActionListener(new ActionListener() { |
|
1029 |
@Override |
|
1030 |
public void actionPerformed(ActionEvent e) { |
|
1031 |
setExpression(bookmark.getValue()); |
|
1032 |
} |
|
1033 |
}); |
|
1034 |
return item; |
|
1035 |
} |
|
1036 |
|
|
1037 |
private void doShowBookmarksDialog(Expression expression) { |
|
1038 |
WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager(); |
|
1039 |
final DefaultBookmarksPanel panel = new DefaultBookmarksPanel(expression); |
|
1040 |
final Dialog dialog = winManager.createDialog( |
|
1041 |
panel, |
|
1042 |
"Bookmarks", |
|
1043 |
null, |
|
1044 |
WindowManager_v2.BUTTONS_OK_CANCEL |
|
1045 |
); |
|
1046 |
dialog.addActionListener(new ActionListener() { |
|
1047 |
@Override |
|
1048 |
public void actionPerformed(ActionEvent e) { |
|
1049 |
if( dialog.getAction()!=WindowManager_v2.BUTTON_OK ) { |
|
1050 |
return; |
|
1051 |
} |
|
1052 |
Bookmark bookmark = panel.getCurrentBookmark(); |
|
1053 |
if( bookmark!=null ) { |
|
1054 |
setExpression(bookmark.getValue()); |
|
1055 |
} |
|
1056 |
} |
|
1057 |
}); |
|
1058 |
dialog.show(WindowManager.MODE.DIALOG); |
|
1059 |
} |
|
1060 | 943 |
} |
Also available in: Unified diff