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 / BookmarksController.java @ 44267

History | View | Annotate | Download (4.57 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.Bookmark;
12
import org.gvsig.expressionevaluator.Bookmarks;
13
import org.gvsig.expressionevaluator.Expression;
14
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
15
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
16
import org.gvsig.tools.ToolsLocator;
17
import org.gvsig.tools.i18n.I18nManager;
18
import org.gvsig.tools.swing.api.ToolsSwingLocator;
19
import org.gvsig.tools.swing.api.windowmanager.Dialog;
20
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
21
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
22
import org.gvsig.tools.swing.icontheme.IconTheme;
23

    
24
/**
25
 *
26
 * @author jjdelcerro
27
 */
28
public abstract class BookmarksController {
29

    
30
    private final JButton btnBookmarks;
31
    
32
    
33
    public BookmarksController(JButton btnBookmarks) {
34
        this.btnBookmarks = btnBookmarks;
35
        if( this.btnBookmarks!=null ) {
36
            IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
37
            this.btnBookmarks.setIcon(iconTheme.get("expressionbuilder-bookmarks"));
38
            this.btnBookmarks.addActionListener(new ActionListener() {
39
                @Override
40
                public void actionPerformed(ActionEvent e) {
41
                    doBookmarks();
42
                }
43
            });
44
        }
45
    }
46
    
47
    public abstract Expression getExpressionWithOutHistory();
48
    
49
    public abstract void updateExpression(Expression expression);
50
    
51
    private void doBookmarks() {
52
        JPopupMenu popup = this.createMenu().getPopupMenu();
53
        Point p = this.btnBookmarks.getLocationOnScreen();
54
        popup.show(this.btnBookmarks, 0, this.btnBookmarks.getHeight());
55
    }
56
    
57
    public JMenu createMenu() {
58
        I18nManager i18n = ToolsLocator.getI18nManager();
59
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
60
        JMenu menu = new JMenu(i18n.getTranslation("_Bookmarks"));
61
        JMenuItem addToBookmarks = new JMenuItem(i18n.getTranslation("_Add_to_bookmarks"));
62
        addToBookmarks.addActionListener(new ActionListener() {
63
            @Override
64
            public void actionPerformed(ActionEvent e) {
65
                doShowBookmarksDialog(getExpressionWithOutHistory());
66
            }
67
        });
68
        menu.add(addToBookmarks);
69
        Bookmarks bookmarks = theManager.getBookmarks();
70
        if( !bookmarks.isEmpty() ) {
71
            menu.addSeparator();
72
            for (Bookmark bookmark : bookmarks) {
73
                menu.add(createBookmarkMenuItem(bookmark));
74
            }
75
            menu.addSeparator();
76
            JMenuItem showAllBookmarks = new JMenuItem(i18n.getTranslation("_Show_all_bookmarks"));
77
            showAllBookmarks.addActionListener(new ActionListener() {
78
                @Override
79
                public void actionPerformed(ActionEvent e) {
80
                    doShowBookmarksDialog(null);
81
                }
82
            });
83
            menu.add(showAllBookmarks);
84
        }
85
        return menu;
86
    }
87
    
88
    private JMenuItem createBookmarkMenuItem(final Bookmark bookmark) {
89
        JMenuItem item = new JMenuItem(StringUtils.abbreviate(bookmark.getName(), 45));
90
        item.addActionListener(new ActionListener() {
91
            @Override
92
            public void actionPerformed(ActionEvent e) {
93
                updateExpression(bookmark.getValue());
94
            }
95
        });
96
        return item;
97
    }
98
    
99
    private void doShowBookmarksDialog(Expression expression) {
100
        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
101
        final DefaultBookmarksPanel panel = new DefaultBookmarksPanel(expression);
102
        final Dialog dialog = winManager.createDialog(
103
                panel,
104
                "Bookmarks",
105
                null, 
106
                WindowManager_v2.BUTTONS_OK_CANCEL
107
        );
108
        dialog.addActionListener(new ActionListener() {
109
            @Override
110
            public void actionPerformed(ActionEvent e) {
111
                if( dialog.getAction()!=WindowManager_v2.BUTTON_OK ) {
112
                    return;
113
                }
114
                Bookmark bookmark = panel.getCurrentBookmark();
115
                if( bookmark!=null ) {
116
                    updateExpression(bookmark.getValue());
117
                }
118
            }
119
        });
120
        dialog.show(WindowManager.MODE.DIALOG);
121
    }
122
}