KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > antlr > works > editor > EditorToolbar


1 package org.antlr.works.editor;
2
3 import org.antlr.xjlib.foundation.notification.XJNotificationCenter;
4 import org.antlr.xjlib.foundation.notification.XJNotificationObserver;
5 import org.antlr.works.components.grammar.CEditorGrammar;
6 import org.antlr.works.debugger.Debugger;
7 import org.antlr.works.prefs.AWPrefs;
8 import org.antlr.works.swing.Toolbar;
9 import org.antlr.works.utils.IconManager;
10
11 import javax.swing.*;
12 import java.awt.*;
13 import java.awt.event.ActionEvent JavaDoc;
14 import java.awt.event.ActionListener JavaDoc;
15 /*
16
17 [The "BSD licence"]
18 Copyright (c) 2005 Jean Bovet
19 All rights reserved.
20
21 Redistribution and use in source and binary forms, with or without
22 modification, are permitted provided that the following conditions
23 are met:
24
25 1. Redistributions of source code must retain the above copyright
26 notice, this list of conditions and the following disclaimer.
27 2. Redistributions in binary form must reproduce the above copyright
28 notice, this list of conditions and the following disclaimer in the
29 documentation and/or other materials provided with the distribution.
30 3. The name of the author may not be used to endorse or promote products
31 derived from this software without specific prior written permission.
32
33 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
34 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
35 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
36 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
37 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
38 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
39 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
40 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
41 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
42 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43
44 */

45
46 public class EditorToolbar implements XJNotificationObserver {
47
48     public Toolbar toolbar;
49
50     public JButton debug;
51     public JButton debugAgain;
52
53     public JButton backward;
54     public JButton forward;
55
56     public JToggleButton sort;
57     public JToggleButton sd;
58     public JToggleButton coloring;
59     public JToggleButton ideas;
60
61     public JButton find;
62
63     public CEditorGrammar editor;
64
65     public EditorToolbar(CEditorGrammar editor) {
66         this.editor = editor;
67
68         createInterface();
69         addActions();
70         
71         debugAgain.setEnabled(false);
72
73         XJNotificationCenter.defaultCenter().addObserver(this, Debugger.NOTIF_DEBUG_STARTED);
74         XJNotificationCenter.defaultCenter().addObserver(this, Debugger.NOTIF_DEBUG_STOPPED);
75     }
76
77     public void close() {
78         XJNotificationCenter.defaultCenter().removeObserver(this);
79     }
80
81     public JComponent getToolbar() {
82         return toolbar;
83     }
84
85     public void notificationFire(Object JavaDoc source, String JavaDoc name) {
86         if(name.equals(Debugger.NOTIF_DEBUG_STARTED)) {
87             find.setEnabled(false);
88             debug.setEnabled(false);
89             debugAgain.setEnabled(false);
90         } else if(name.equals(Debugger.NOTIF_DEBUG_STOPPED)) {
91             find.setEnabled(true);
92             debug.setEnabled(true);
93             debugAgain.setEnabled(editor.debugger.canDebugAgain());
94         }
95     }
96
97     public void createInterface() {
98         toolbar = Toolbar.createHorizontalToolbar();
99         toolbar.addElement(sd = (JToggleButton)createNewButton(IconManager.shared().getIconSyntaxDiagram(), "Toggle Syntax diagram", true));
100         toolbar.addElement(coloring = (JToggleButton)createNewButton(IconManager.shared().getIconColoring(), "Toggle Syntax coloring", true));
101         toolbar.addElement(ideas = (JToggleButton)createNewButton(IconManager.shared().getIconIdea(), "Toggle Syntax ideas", true));
102         toolbar.addGroupSeparator();
103         toolbar.addElement(sort = (JToggleButton)createNewButton(IconManager.shared().getIconSort(), "Toggle Sort rules", true));
104         toolbar.addElement(find = (JButton)createNewButton(IconManager.shared().getIconFind(), "Find text", false));
105         toolbar.addGroupSeparator();
106         toolbar.addElement(backward = (JButton)createNewButton(IconManager.shared().getIconBackward(), "Back", false));
107         toolbar.addElement(forward = (JButton)createNewButton(IconManager.shared().getIconForward(), "Forward", false));
108         toolbar.addGroupSeparator();
109         toolbar.addElement(debug = (JButton)createNewButton(IconManager.shared().getIconDebug(), "Debug", false));
110         toolbar.addElement(debugAgain = (JButton)createNewButton(IconManager.shared().getIconDebugAgain(), "Debug Again", false));
111
112         AWPrefs.getPreferences().bindToPreferences(sort, AWPrefs.PREF_TOOLBAR_SORT, false);
113     }
114
115     public void awake() {
116         editor.rules.setSorted(AWPrefs.getPreferences().getBoolean(AWPrefs.PREF_TOOLBAR_SORT, false));
117         sd.setSelected(true);
118         coloring.setSelected(true);
119         ideas.setSelected(true);
120     }
121
122     public void addActions() {
123         backward.addActionListener(new ActionListener JavaDoc() {
124             public void actionPerformed(ActionEvent JavaDoc e) {
125                 editor.menuGoTo.goToBackward();
126             }
127         });
128
129         forward.addActionListener(new ActionListener JavaDoc() {
130             public void actionPerformed(ActionEvent JavaDoc e) {
131                 editor.menuGoTo.goToForward();
132             }
133         });
134
135         sort.addActionListener(new ActionListener JavaDoc() {
136             public void actionPerformed(ActionEvent JavaDoc e) {
137                 editor.toggleRulesSorting();
138             }
139         });
140
141         sd.addActionListener(new ActionListener JavaDoc() {
142             public void actionPerformed(ActionEvent JavaDoc e) {
143                 editor.toggleSyntaxDiagram();
144             }
145         });
146
147         coloring.addActionListener(new ActionListener JavaDoc() {
148             public void actionPerformed(ActionEvent JavaDoc e) {
149                 editor.toggleSyntaxColoring();
150             }
151         });
152
153         ideas.addActionListener(new ActionListener JavaDoc() {
154             public void actionPerformed(ActionEvent JavaDoc e) {
155                 editor.toggleIdeas();
156             }
157         });
158
159         find.addActionListener(new ActionListener JavaDoc() {
160             public void actionPerformed(ActionEvent JavaDoc e) {
161                 editor.menuFind.find();
162             }
163         });
164
165         debug.addActionListener(new ActionListener JavaDoc() {
166             public void actionPerformed(ActionEvent JavaDoc e) {
167                 editor.menuDebugger.debug();
168             }
169         });
170
171         debugAgain.addActionListener(new ActionListener JavaDoc() {
172             public void actionPerformed(ActionEvent JavaDoc e) {
173                 editor.menuDebugger.debugAgain();
174             }
175         });
176
177     }
178
179     public AbstractButton createNewButton(ImageIcon icon, String JavaDoc tooltip, boolean toggle) {
180         AbstractButton button;
181         if(toggle)
182             button = new JToggleButton(icon);
183         else
184             button = new JButton(icon);
185         button.setToolTipText(tooltip);
186         Dimension d = new Dimension(32, 32);
187         button.setMinimumSize(d);
188         button.setMaximumSize(d);
189         button.setPreferredSize(d);
190         button.setFocusable(false);
191         return button;
192     }
193 }
194
Popular Tags