Statistics
| Revision:

svn-gvsig-desktop / 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 / HistoryController.java @ 44267

History | View | Annotate | Download (3.78 KB)

1
package org.gvsig.expressionevaluator.swing.impl;
2

    
3
import java.awt.Point;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import javax.swing.JButton;
7
import javax.swing.JMenu;
8
import javax.swing.JMenuItem;
9
import javax.swing.JPopupMenu;
10
import org.apache.commons.lang3.StringUtils;
11
import org.gvsig.expressionevaluator.Expression;
12
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
13
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
14
import org.gvsig.expressionevaluator.History;
15
import org.gvsig.tools.ToolsLocator;
16
import org.gvsig.tools.i18n.I18nManager;
17
import org.gvsig.tools.swing.api.ToolsSwingLocator;
18
import org.gvsig.tools.swing.api.windowmanager.Dialog;
19
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
20
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
21
import org.gvsig.tools.swing.icontheme.IconTheme;
22

    
23
/**
24
 *
25
 * @author jjdelcerro
26
 */
27
public abstract class HistoryController {
28

    
29
    private final JButton button;
30

    
31
    public HistoryController(JButton button) {
32
        this.button = button;
33
        if( this.button!=null ) {
34
            IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
35
            this.button.setIcon(iconTheme.get("expressionbuilder-history"));
36
            this.button.addActionListener(new ActionListener() {
37
                @Override
38
                public void actionPerformed(ActionEvent e) {
39
                    doHistory();
40
                }
41
            });
42
        }
43
        
44
    }
45
    
46
    public abstract void updateExpression(Expression expression);
47
    
48
    private void doHistory() {
49
        JPopupMenu popup = createMenu().getPopupMenu();
50
        Point p = this.button.getLocationOnScreen();
51
        popup.show(this.button, 0, this.button.getHeight());
52
    }
53
    
54
    public JMenu createMenu() {
55
        I18nManager i18n = ToolsLocator.getI18nManager();
56
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
57
        JMenu menu = new JMenu(i18n.getTranslation("_History"));
58
        History history = theManager.getHistory();
59
        if( !history.isEmpty() ) {
60
            for (Expression expression : history) {
61
                menu.add(createHistoryMenuItem(expression));
62
            }
63
            menu.addSeparator();
64
        }
65
        JMenuItem showAllHistory = new JMenuItem(i18n.getTranslation("_Show_all_history"));
66
        showAllHistory.addActionListener(new ActionListener() {
67
            @Override
68
            public void actionPerformed(ActionEvent e) {
69
                doShowHistoryDialog();
70
            }
71
        });
72
        menu.add(showAllHistory);
73
        return menu;
74
    }
75
    
76
    private JMenuItem createHistoryMenuItem(final Expression expression) {
77
        JMenuItem item = new JMenuItem(StringUtils.abbreviate(expression.getPhrase(), 45));
78
        item.addActionListener(new ActionListener() {
79
            @Override
80
            public void actionPerformed(ActionEvent e) {
81
                updateExpression(expression);
82
            }
83
        });
84
        return item;
85
    }
86
    
87
    private void doShowHistoryDialog() {
88
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
89
        final DefaultHistoryPanel panel = new DefaultHistoryPanel();
90
        final Dialog dialog = winManager.createDialog(
91
                panel,
92
                "History",
93
                null, 
94
                WindowManager_v2.BUTTONS_OK_CANCEL
95
        );
96
        dialog.addActionListener(new ActionListener() {
97
            @Override
98
            public void actionPerformed(ActionEvent e) {
99
                if( dialog.getAction()!=WindowManager_v2.BUTTON_OK ) {
100
                    return;
101
                }
102
                updateExpression(panel.getExpression());
103
            }
104
        });
105
        dialog.show(WindowManager.MODE.DIALOG);
106
    }
107
    
108
}