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 ; 14 import java.awt.event.ActionListener ; 15 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 source, String 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 () { 124 public void actionPerformed(ActionEvent e) { 125 editor.menuGoTo.goToBackward(); 126 } 127 }); 128 129 forward.addActionListener(new ActionListener () { 130 public void actionPerformed(ActionEvent e) { 131 editor.menuGoTo.goToForward(); 132 } 133 }); 134 135 sort.addActionListener(new ActionListener () { 136 public void actionPerformed(ActionEvent e) { 137 editor.toggleRulesSorting(); 138 } 139 }); 140 141 sd.addActionListener(new ActionListener () { 142 public void actionPerformed(ActionEvent e) { 143 editor.toggleSyntaxDiagram(); 144 } 145 }); 146 147 coloring.addActionListener(new ActionListener () { 148 public void actionPerformed(ActionEvent e) { 149 editor.toggleSyntaxColoring(); 150 } 151 }); 152 153 ideas.addActionListener(new ActionListener () { 154 public void actionPerformed(ActionEvent e) { 155 editor.toggleIdeas(); 156 } 157 }); 158 159 find.addActionListener(new ActionListener () { 160 public void actionPerformed(ActionEvent e) { 161 editor.menuFind.find(); 162 } 163 }); 164 165 debug.addActionListener(new ActionListener () { 166 public void actionPerformed(ActionEvent e) { 167 editor.menuDebugger.debug(); 168 } 169 }); 170 171 debugAgain.addActionListener(new ActionListener () { 172 public void actionPerformed(ActionEvent e) { 173 editor.menuDebugger.debugAgain(); 174 } 175 }); 176 177 } 178 179 public AbstractButton createNewButton(ImageIcon icon, String 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 |