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

View differences:

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