001 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
002 *
003 * Copyright 2000-2013, Michael Meyling <mime@qedeq.org>.
004 *
005 * "Hilbert II" is free software; you can redistribute
006 * it and/or modify it under the terms of the GNU General Public
007 * License as published by the Free Software Foundation; either
008 * version 2 of the License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU General Public License for more details.
014 */
015
016 package org.qedeq.gui.se.main;
017
018 import javax.swing.JMenu;
019 import javax.swing.JMenuBar;
020 import javax.swing.JMenuItem;
021
022 import org.qedeq.gui.se.control.QedeqController;
023 import org.qedeq.gui.se.pane.QedeqGuiConfig;
024 import org.qedeq.gui.se.util.GuiHelper;
025 import org.qedeq.gui.se.util.MenuHelper;
026
027 import com.jgoodies.looks.Options;
028 import com.jgoodies.looks.plastic.PlasticLookAndFeel;
029 import com.jgoodies.looks.windows.WindowsLookAndFeel;
030
031 /**
032 * Menu bar and pull-down menus.
033 *
034 * @author Michael Meyling
035 */
036 public class QedeqMenuBar extends JMenuBar {
037
038 /** Reference to controller. */
039 private QedeqController controller;
040
041 /** Icon resolution. Currently supported: "16x16", "22x22" and "32x32". */
042 private String resolution = QedeqGuiConfig.getInstance().getIconSize();
043
044 /**
045 * Constructor.
046 *
047 * @param controller Controller reference.
048 * @param options GUI options to create look specific design.
049 */
050 public QedeqMenuBar(final QedeqController controller, final GuiOptions options) {
051 this.controller = controller;
052
053 putClientProperty(Options.HEADER_STYLE_KEY,
054 options.getMenuBarHeaderStyle());
055 putClientProperty(PlasticLookAndFeel.BORDER_STYLE_KEY,
056 options.getMenuBarPlasticBorderStyle());
057 putClientProperty(WindowsLookAndFeel.BORDER_STYLE_KEY,
058 options.getMenuBarWindowsBorderStyle());
059 putClientProperty(PlasticLookAndFeel.IS_3D_KEY,
060 options.getMenuBar3DHint());
061
062 add(createFileMenu());
063 add(createCheckMenu());
064 add(createTransformMenu());
065 add(createToolsMenu());
066 add(createHelpMenu());
067 }
068
069 /**
070 * Create "File" menu.
071 *
072 * @return Created menu.
073 */
074 private JMenu createFileMenu() {
075 JMenuItem item;
076
077 JMenu menu = MenuHelper.createMenu("File", 'F');
078
079 item = MenuHelper.createMenuItem("Load from Web", 'W');
080 item.setToolTipText("Load QEDEQ module from anywhere in the Web");
081 item.addActionListener(controller.getAddAction());
082 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/list-add.png"));
083 menu.add(item);
084
085 item = MenuHelper.createMenuItem("Load local File", 'F');
086 item.setToolTipText("Load QEDEQ module from file system");
087 item.addActionListener(controller.getAddFileAction());
088 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/document-open.png"));
089 menu.add(item);
090
091 item = MenuHelper.createMenuItem("Load all from QEDEQ.org", 'Q');
092 item.setToolTipText("Load main set of QEDEQ modules from project home page");
093 item.addActionListener(controller.getAddAllModulesFromQedeqAction());
094 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/go-home.png"));
095 menu.add(item);
096
097 menu.addSeparator();
098
099 item = MenuHelper.createMenuItem("Remove module", 'R');
100 item.setToolTipText("Unload selected QEDEQ modules. Changes status of dependent modules. "
101 + "Local module buffer is not affected.");
102 item.addActionListener(controller.getRemoveModuleAction());
103 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/edit-cut.png"));
104 menu.add(item);
105
106 item = MenuHelper.createMenuItem("Clear Buffer", 'C');
107 item.setToolTipText("Unload all QEDEQ modules and clear the local module buffer.");
108 item.addActionListener(controller.getRemoveLocalBufferAction());
109 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/edit-delete.png"));
110 menu.add(item);
111
112 if (!MenuHelper.isQuitInOSMenu()) {
113 menu.addSeparator();
114 item = MenuHelper.createMenuItem("Exit", 'E');
115 item.setToolTipText("Leave application");
116 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/system-log-out.png"));
117 item.addActionListener(controller.getExitAction());
118 menu.add(item);
119 }
120 return menu;
121 }
122
123
124 /**
125 * Create "Check" menu.
126 *
127 * @return Menu.
128 */
129 private JMenu createCheckMenu() {
130 JMenuItem item;
131
132 JMenu menu = MenuHelper.createMenu("Check", 'C');
133
134 item = MenuHelper.createMenuItem("Check Well-Formedness", 'W');
135 item.setToolTipText(
136 "Check if all formulas are well formed within selected QEDEQ modules. This includes dependency checking.");
137 item.addActionListener(controller.getCheckLogicAction());
138 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/run.png"));
139 menu.add(item);
140
141 return menu;
142 }
143
144
145 /**
146 * Create "Plugins" menu.
147 *
148 * @return Menu.
149 */
150 private JMenu createTransformMenu() {
151 final JMenu menu = MenuHelper.createMenu("Plugins", 'P');
152 JMenuItem item;
153 item = MenuHelper.createMenuItem("Plugin Preferences", 'S');
154 item.addActionListener(controller.getPluginPreferencesAction());
155 item.setToolTipText("Set parameters for specific plugins.");
156 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/categories/preferences-desktop.png"));
157 menu.add(item);
158
159 item = MenuHelper.createMenuItem("Threads", 'T');
160 item.addActionListener(controller.getProcessViewAction());
161 item.setToolTipText("Show all plugin exections. Can stop running plugin threads.");
162 item.setIcon(GuiHelper.readImageIcon("oil/" + resolution + "/apps/utilities-system-monitor.png"));
163 menu.add(item);
164
165 menu.addSeparator();
166 final JMenuItem[] pluginMenu = controller.getPluginMenuEntries();
167 for (int i = 0; i < pluginMenu.length; i++) {
168 menu.add(pluginMenu[i]);
169 }
170
171 menu.addSeparator();
172
173 item = MenuHelper.createMenuItem("Remove Plugin Results", 'R');
174 item.addActionListener(controller.getRemovePluginResultsAction());
175 item.setToolTipText(
176 "Remove all warnings and errors that were produced by all plugin executions for the selected module.");
177 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/edit-clear.png"));
178 menu.add(item);
179
180 menu.addSeparator();
181
182 item = MenuHelper.createMenuItem("Terminate Threads", 'T');
183 item.addActionListener(controller.getTerminateAllAction());
184 item.setToolTipText(
185 "Terminate all currently running plugin processes.");
186 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/process-stop.png"));
187 menu.add(item);
188
189 return menu;
190 }
191
192
193 /**
194 * Create "Tools" menu.
195 *
196 * @return Menu.
197 */
198 private JMenu createToolsMenu() {
199 JMenuItem item;
200
201 JMenu menu = MenuHelper.createMenu("Tools", 'o');
202
203 item = MenuHelper.createMenuItem("LaTeX to QEDEQ", 'L');
204 item.addActionListener(controller.getLatexParserAction());
205 item.setToolTipText("Enter LaTeX formulas and transform them into QEDEQ syntax.");
206 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/format-indent-more.png"));
207 menu.add(item);
208
209 item = MenuHelper.createMenuItem("Text to QEDEQ", 'T');
210 item.addActionListener(controller.getTextParserAction());
211 item.setToolTipText("Enter text formulas and transform them into QEDEQ syntax.");
212 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/format-indent-more.png"));
213 menu.add(item);
214
215 item = MenuHelper.createMenuItem("Proof Text to QEDEQ", 'R');
216 item.addActionListener(controller.getProofTextParserAction());
217 item.setToolTipText("Enter proof text and transform it into QEDEQ syntax.");
218 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/format-indent-more.png"));
219 menu.add(item);
220
221 item = MenuHelper.createMenuItem("Preferences", 'P');
222 item.addActionListener(controller.getPreferencesAction());
223 item.setToolTipText("Edit various application parameters.");
224 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/categories/preferences-system.png"));
225 menu.add(item);
226
227 return menu;
228 }
229
230
231 /**
232 * Create help menu.
233 *
234 * @return Help menu.
235 */
236 private JMenu createHelpMenu() {
237 JMenu menu = MenuHelper.createMenu("Help", 'H');
238
239 JMenuItem item;
240 item = MenuHelper.createMenuItem("Help Contents",
241 GuiHelper.readImageIcon("tango/" + resolution + "/apps/help-browser.png"), 'H');
242 item.setToolTipText("Integrated help system.");
243 item.addActionListener(controller.getHelpAction());
244 menu.add(item);
245 if (!MenuHelper.isAboutInOSMenu()) {
246 menu.addSeparator();
247 item = MenuHelper.createMenuItem("About",
248 GuiHelper.readImageIcon("qedeq/" + resolution + "/qedeq.png"), 'a');
249 item.addActionListener(controller.getAboutAction());
250 menu.add(item);
251 }
252 return menu;
253 }
254
255 }
|