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.getCheckWellFormedAction());
138 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/status/software-update-available.png"));
139 menu.add(item);
140
141 item = MenuHelper.createMenuItem("Check Fully-Formally Proved", 'F');
142 item.setToolTipText(
143 "Check if all propositions have formal correct proofss within selected QEDEQ modules. "
144 + "This includes dependency checking.");
145 item.addActionListener(controller.getCheckFormallyProvedAction());
146 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/run.png"));
147 menu.add(item);
148
149 return menu;
150 }
151
152
153 /**
154 * Create "Plugins" menu.
155 *
156 * @return Menu.
157 */
158 private JMenu createTransformMenu() {
159 final JMenu menu = MenuHelper.createMenu("Process", 'P');
160 JMenuItem item;
161 item = MenuHelper.createMenuItem("Plugin Preferences", 'S');
162 item.addActionListener(controller.getPluginPreferencesAction());
163 item.setToolTipText("Set parameters for specific plugins.");
164 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/categories/preferences-desktop.png"));
165 menu.add(item);
166
167 item = MenuHelper.createMenuItem("View Processes", 'V');
168 item.addActionListener(controller.getProcessViewAction());
169 item.setToolTipText("Show all processes and their stage.");
170 item.setIcon(GuiHelper.readImageIcon("oil/" + resolution + "/apps/utilities-system-monitor.png"));
171 menu.add(item);
172
173 menu.addSeparator();
174
175 final JMenuItem[] pluginMenu = controller.getPluginMenuEntries();
176 for (int i = 0; i < pluginMenu.length; i++) {
177 menu.add(pluginMenu[i]);
178 }
179
180 menu.addSeparator();
181
182 item = MenuHelper.createMenuItem("Remove Plugin Results", 'R');
183 item.addActionListener(controller.getRemovePluginResultsAction());
184 item.setToolTipText(
185 "Remove all warnings and errors that were produced by all plugin executions for the selected module.");
186 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/edit-clear.png"));
187 menu.add(item);
188
189 menu.addSeparator();
190
191 item = MenuHelper.createMenuItem("Terminate All Processes", 'T');
192 item.addActionListener(controller.getTerminateAllAction());
193 item.setToolTipText(
194 "Terminate all currently running processes.");
195 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/process-stop.png"));
196 menu.add(item);
197
198 return menu;
199 }
200
201
202 /**
203 * Create "Tools" menu.
204 *
205 * @return Menu.
206 */
207 private JMenu createToolsMenu() {
208 JMenuItem item;
209
210 JMenu menu = MenuHelper.createMenu("Tools", 'o');
211
212 item = MenuHelper.createMenuItem("LaTeX to QEDEQ", 'L');
213 item.addActionListener(controller.getLatexParserAction());
214 item.setToolTipText("Enter LaTeX formulas and transform them into QEDEQ syntax.");
215 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/format-indent-more.png"));
216 menu.add(item);
217
218 item = MenuHelper.createMenuItem("Text to QEDEQ", 'T');
219 item.addActionListener(controller.getTextParserAction());
220 item.setToolTipText("Enter text formulas and transform them into QEDEQ syntax.");
221 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/format-indent-more.png"));
222 menu.add(item);
223
224 item = MenuHelper.createMenuItem("Proof Text to QEDEQ", 'R');
225 item.addActionListener(controller.getProofTextParserAction());
226 item.setToolTipText("Enter proof text and transform it into QEDEQ syntax.");
227 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/actions/format-indent-more.png"));
228 menu.add(item);
229
230 item = MenuHelper.createMenuItem("Preferences", 'P');
231 item.addActionListener(controller.getPreferencesAction());
232 item.setToolTipText("Edit various application parameters.");
233 item.setIcon(GuiHelper.readImageIcon("tango/" + resolution + "/categories/preferences-system.png"));
234 menu.add(item);
235
236 return menu;
237 }
238
239
240 /**
241 * Create help menu.
242 *
243 * @return Help menu.
244 */
245 private JMenu createHelpMenu() {
246 JMenu menu = MenuHelper.createMenu("Help", 'H');
247
248 JMenuItem item;
249 item = MenuHelper.createMenuItem("Help Contents",
250 GuiHelper.readImageIcon("tango/" + resolution + "/apps/help-browser.png"), 'H');
251 item.setToolTipText("Integrated help system.");
252 item.addActionListener(controller.getHelpAction());
253 menu.add(item);
254 if (!MenuHelper.isAboutInOSMenu()) {
255 menu.addSeparator();
256 item = MenuHelper.createMenuItem("About",
257 GuiHelper.readImageIcon("qedeq/" + resolution + "/qedeq.png"), 'a');
258 item.addActionListener(controller.getAboutAction());
259 menu.add(item);
260 }
261 return menu;
262 }
263
264 }
|