/*******************************************************************************
* Copyright (c) 2001, 2010 Mathew A. Nelson and Robocode contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://robocode.sourceforge.net/license/epl-v10.html
*
* Contributors:
* Mathew A. Nelson
* - Initial API and implementation
* Matthew Reeder
* - Added Edit and Window menus
* - Added keyboard mnemonics to all menus and menu items
* Flemming N. Larsen
* - Code cleanup
* - Updated to use methods from the WindowUtil, which replaces window
* methods that have been (re)moved from the robocode.util.Utils class
* - Added confirm dialog when trying to reset the compiler preferences
* - Did a lot of NullPointerException bugfixes with getActiveWindow()
* - Changed menu accelerator keys to use getMenuShortcutKeyMask() instead of
* Event.CTRL_MASK in order to comply with other OSes like e.g. Mac OS
* - Changed the F6 key press for 'Compile' into 'modifier key' + B, and the
* F3 key press for 'Find Next' into 'modifier key' + G to comply with
* OSes like e.g. Mac OS, where the function keys are used for other
* purposes
*******************************************************************************/
package net.sf.robocode.ui.editor;
import net.sf.robocode.ui.dialog.WindowUtil;
import static net.sf.robocode.ui.util.ShortcutUtil.MENU_SHORTCUT_KEY_MASK;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
/**
* @author Mathew A. Nelson (original)
* @author Matthew Reeder (contributor)
* @author Flemming N. Larsen (contributor)
*/
@SuppressWarnings("serial")
public class RobocodeEditorMenuBar extends JMenuBar {
private JMenu fileMenu;
private JMenuItem fileOpenMenuItem;
private JMenuItem fileExtractMenuItem;
private JMenuItem fileSaveMenuItem;
private JMenuItem fileSaveAsMenuItem;
private JMenuItem fileExitMenuItem;
private class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
final Object source = e.getSource();
if (source == RobocodeEditorMenuBar.this.getFileNewRobotMenuItem()) {
fileNewRobotActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileNewJuniorRobotMenuItem()) {
fileNewJuniorRobotActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileNewJavaFileMenuItem()) {
fileNewJavaFileActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileOpenMenuItem()) {
fileOpenActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileExtractMenuItem()) {
fileExtractActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileSaveMenuItem()) {
fileSaveActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileSaveAsMenuItem()) {
fileSaveAsActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getFileExitMenuItem()) {
fileExitActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getCompilerCompileMenuItem()) {
compilerCompileActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getCompilerOptionsPreferencesMenuItem()) {
compilerOptionsPreferencesActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getCompilerOptionsResetCompilerMenuItem()) {
compilerOptionsResetCompilerActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getHelpRobocodeApiMenuItem()) {
helpRobocodeApiActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditUndoMenuItem()) {
editUndoActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditRedoMenuItem()) {
editRedoActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditCutMenuItem()) {
editCutActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditCopyMenuItem()) {
editCopyActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditPasteMenuItem()) {
editPasteActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditDeleteMenuItem()) {
editDeleteActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditSelectAllMenuItem()) {
editSelectAllActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditFindMenuItem()) {
editFindActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditFindNextMenuItem()) {
editFindNextActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getEditReplaceMenuItem()) {
editReplaceActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getWindowCloseMenuItem()) {
windowCloseActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getWindowCloseAllMenuItem()) {
windowCloseAllActionPerformed();
} else if (source == RobocodeEditorMenuBar.this.getWindowWindowsDialogMenuItem()) {
windowMoreWindowsActionPerformed();
}
}
}
private JMenuItem compilerCompileMenuItem;
private JMenu compilerMenu;
private JMenu compilerOptionsMenu;
private JMenuItem compilerOptionsPreferencesMenuItem;
private JMenuItem compilerOptionsResetCompilerMenuItem;
private final RobocodeEditor editor;
private final EventHandler eventHandler = new EventHandler();
private JMenuItem fileNewJavaFileMenuItem;
private JMenu fileNewMenu;
private JMenuItem fileNewRobotMenuItem;
private JMenuItem fileNewJuniorRobotMenuItem;
private JMenu helpMenu;
private JMenuItem helpRobocodeApiMenuItem;
// New Edit menu by Matthew Reeder
private JMenu editMenu;
private JMenuItem editUndoMenuItem;
private JMenuItem editRedoMenuItem;
private JMenuItem editCutMenuItem;
private JMenuItem editCopyMenuItem;
private JMenuItem editPasteMenuItem;
private JMenuItem editDeleteMenuItem;
private JMenuItem editFindMenuItem;
private JMenuItem editFindNextMenuItem;
private JMenuItem editReplaceMenuItem;
private JMenuItem editSelectAllMenuItem;
// New Window menu by Matthew Reeder
private JMenu windowMenu;
private JMenuItem windowCloseMenuItem;
private JMenuItem windowCloseAllMenuItem;
private JMenuItem windowWindowsDialogMenuItem;
private MoreWindowsDialog moreWindowsDialog;
public RobocodeEditorMenuBar(RobocodeEditor editor) {
super();
this.editor = editor;
initialize();
}
private void compilerCompileActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.compile();
}
}
private void compilerOptionsPreferencesActionPerformed() {
CompilerPreferencesDialog d = new CompilerPreferencesDialog(editor);
WindowUtil.packCenterShow(editor, d);
}
private void compilerOptionsResetCompilerActionPerformed() {
if (JOptionPane.showConfirmDialog(editor,
"You are about to reset the compiler preferences. Do you wish to proceed?", "Reset Compiler Preferences",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)
== JOptionPane.NO_OPTION) {
return;
}
new Thread(new Runnable() {
public void run() {
editor.resetCompilerProperties();
}
}).start();
}
private void fileExitActionPerformed() {
editor.dispose();
}
private void fileNewJavaFileActionPerformed() {
editor.createNewJavaFile();
getFileSaveMenuItem().setEnabled(true);
getFileSaveAsMenuItem().setEnabled(true);
}
private void fileNewRobotActionPerformed() {
editor.createNewRobot();
getFileSaveMenuItem().setEnabled(true);
getFileSaveAsMenuItem().setEnabled(true);
}
private void fileNewJuniorRobotActionPerformed() {
editor.createNewJuniorRobot();
getFileSaveMenuItem().setEnabled(true);
getFileSaveAsMenuItem().setEnabled(true);
}
private void fileOpenActionPerformed() {
editor.openRobot();
}
private void fileExtractActionPerformed() {
editor.extractRobot();
}
private void fileSaveActionPerformed() {
editor.saveRobot();
}
private void fileSaveAsActionPerformed() {
editor.saveAsRobot();
}
private void editUndoActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.undo();
}
}
private void editRedoActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.redo();
}
}
private void editCutActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.getEditorPane().cut();
}
}
private void editCopyActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.getEditorPane().copy();
}
}
private void editPasteActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.getEditorPane().paste();
}
}
private void editDeleteActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.getEditorPane().replaceSelection(null);
}
}
private void editSelectAllActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.getEditorPane().selectAll();
}
}
private void editFindActionPerformed() {
editor.findDialog();
}
private void editReplaceActionPerformed() {
editor.replaceDialog();
}
private void editFindNextActionPerformed() {
editor.getFindReplaceDialog().findNext();
}
private void windowCloseActionPerformed() {
EditWindow editWindow = editor.getActiveWindow();
if (editWindow != null) {
editWindow.doDefaultCloseAction();
}
}
private void windowCloseAllActionPerformed() {
JInternalFrame[] frames = editor.getDesktopPane().getAllFrames();
if (frames != null) {
for (JInternalFrame frame : frames) {
frame.doDefaultCloseAction();
}
}
}
private void windowMoreWindowsActionPerformed() {
getMoreWindowsDialog().setVisible(true);
}
private JMenuItem getCompilerCompileMenuItem() {
if (compilerCompileMenuItem == null) {
compilerCompileMenuItem = new JMenuItem();
compilerCompileMenuItem.setText("Compile");
compilerCompileMenuItem.setMnemonic('m');
compilerCompileMenuItem.setDisplayedMnemonicIndex(2);
compilerCompileMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, MENU_SHORTCUT_KEY_MASK));
compilerCompileMenuItem.addActionListener(eventHandler);
}
return compilerCompileMenuItem;
}
private JMenu getCompilerMenu() {
if (compilerMenu == null) {
compilerMenu = new JMenu();
compilerMenu.setText("Compiler");
compilerMenu.setMnemonic('C');
compilerMenu.add(getCompilerCompileMenuItem());
compilerMenu.add(getCompilerOptionsMenu());
}
return compilerMenu;
}
private JMenu getCompilerOptionsMenu() {
if (compilerOptionsMenu == null) {
compilerOptionsMenu = new JMenu();
compilerOptionsMenu.setText("Options");
compilerOptionsMenu.setMnemonic('O');
compilerOptionsMenu.add(getCompilerOptionsPreferencesMenuItem());
compilerOptionsMenu.add(getCompilerOptionsResetCompilerMenuItem());
}
return compilerOptionsMenu;
}
private JMenuItem getCompilerOptionsPreferencesMenuItem() {
if (compilerOptionsPreferencesMenuItem == null) {
compilerOptionsPreferencesMenuItem = new JMenuItem();
compilerOptionsPreferencesMenuItem.setText("Preferences");
compilerOptionsPreferencesMenuItem.setMnemonic('P');
compilerOptionsPreferencesMenuItem.addActionListener(eventHandler);
}
return compilerOptionsPreferencesMenuItem;
}
private JMenuItem getCompilerOptionsResetCompilerMenuItem() {
if (compilerOptionsResetCompilerMenuItem == null) {
compilerOptionsResetCompilerMenuItem = new JMenuItem();
compilerOptionsResetCompilerMenuItem.setText("Reset Compiler");
compilerOptionsResetCompilerMenuItem.setMnemonic('R');
compilerOptionsResetCompilerMenuItem.addActionListener(eventHandler);
}
return compilerOptionsResetCompilerMenuItem;
}
private JMenuItem getFileExitMenuItem() {
if (fileExitMenuItem == null) {
fileExitMenuItem = new JMenuItem();
fileExitMenuItem.setText("Exit");
fileExitMenuItem.setMnemonic('x');
fileExitMenuItem.setDisplayedMnemonicIndex(1);
fileExitMenuItem.addActionListener(eventHandler);
}
return fileExitMenuItem;
}
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("File");
fileMenu.setMnemonic('F');
fileMenu.add(getFileNewMenu());
fileMenu.add(getFileOpenMenuItem());
fileMenu.add(getFileExtractMenuItem());
fileMenu.add(getFileSaveMenuItem());
fileMenu.add(getFileSaveAsMenuItem());
fileMenu.add(new JSeparator());
fileMenu.add(getFileExitMenuItem());
}
return fileMenu;
}
private JMenuItem getFileNewJavaFileMenuItem() {
if (fileNewJavaFileMenuItem == null) {
fileNewJavaFileMenuItem = new JMenuItem();
fileNewJavaFileMenuItem.setText("Java File");
fileNewJavaFileMenuItem.setMnemonic('J');
fileNewJavaFileMenuItem.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_N, MENU_SHORTCUT_KEY_MASK | Event.SHIFT_MASK));
fileNewJavaFileMenuItem.addActionListener(eventHandler);
}
return fileNewJavaFileMenuItem;
}
private JMenu getFileNewMenu() {
if (fileNewMenu == null) {
fileNewMenu = new JMenu();
fileNewMenu.setText("New");
fileNewMenu.setMnemonic('N');
fileNewMenu.add(getFileNewRobotMenuItem());
fileNewMenu.add(getFileNewJuniorRobotMenuItem());
fileNewMenu.add(getFileNewJavaFileMenuItem());
}
return fileNewMenu;
}
private JMenuItem getFileNewRobotMenuItem() {
if (fileNewRobotMenuItem == null) {
fileNewRobotMenuItem = new JMenuItem();
fileNewRobotMenuItem.setText("Robot");
fileNewRobotMenuItem.setMnemonic('R');
fileNewRobotMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, MENU_SHORTCUT_KEY_MASK));
fileNewRobotMenuItem.addActionListener(eventHandler);
}
return fileNewRobotMenuItem;
}
private JMenuItem getFileNewJuniorRobotMenuItem() {
if (fileNewJuniorRobotMenuItem == null) {
fileNewJuniorRobotMenuItem = new JMenuItem();
fileNewJuniorRobotMenuItem.setText("JuniorRobot");
fileNewJuniorRobotMenuItem.setMnemonic('J');
fileNewJuniorRobotMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J, MENU_SHORTCUT_KEY_MASK));
fileNewJuniorRobotMenuItem.addActionListener(eventHandler);
}
return fileNewJuniorRobotMenuItem;
}
private JMenuItem getFileOpenMenuItem() {
if (fileOpenMenuItem == null) {
fileOpenMenuItem = new JMenuItem();
fileOpenMenuItem.setText("Open");
fileOpenMenuItem.setMnemonic('O');
fileOpenMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, MENU_SHORTCUT_KEY_MASK));
fileOpenMenuItem.addActionListener(eventHandler);
}
return fileOpenMenuItem;
}
private JMenuItem getFileExtractMenuItem() {
if (fileExtractMenuItem == null) {
fileExtractMenuItem = new JMenuItem();
fileExtractMenuItem.setText("Extract downloaded robot for editing");
fileExtractMenuItem.setMnemonic('t');
fileExtractMenuItem.setDisplayedMnemonicIndex(2);
fileExtractMenuItem.addActionListener(eventHandler);
}
return fileExtractMenuItem;
}
public JMenuItem getFileSaveAsMenuItem() {
if (fileSaveAsMenuItem == null) {
fileSaveAsMenuItem = new JMenuItem();
fileSaveAsMenuItem.setText("Save As");
fileSaveAsMenuItem.setMnemonic('A');
fileSaveAsMenuItem.setDisplayedMnemonicIndex(5);
fileSaveAsMenuItem.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_S, MENU_SHORTCUT_KEY_MASK | Event.SHIFT_MASK));
fileSaveAsMenuItem.addActionListener(eventHandler);
fileSaveAsMenuItem.setEnabled(false);
}
return fileSaveAsMenuItem;
}
public JMenuItem getFileSaveMenuItem() {
if (fileSaveMenuItem == null) {
fileSaveMenuItem = new JMenuItem();
fileSaveMenuItem.setText("Save");
fileSaveMenuItem.setMnemonic('S');
fileSaveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, MENU_SHORTCUT_KEY_MASK));
fileSaveMenuItem.addActionListener(eventHandler);
fileSaveMenuItem.setEnabled(false);
}
return fileSaveMenuItem;
}
@Override
public JMenu getHelpMenu() {
if (helpMenu == null) {
helpMenu = new JMenu();
helpMenu.setText("Help");
helpMenu.setMnemonic('H');
helpMenu.add(getHelpRobocodeApiMenuItem());
}
return helpMenu;
}
private JMenuItem getHelpRobocodeApiMenuItem() {
if (helpRobocodeApiMenuItem == null) {
helpRobocodeApiMenuItem = new JMenuItem();
helpRobocodeApiMenuItem.setText("Robocode API");
helpRobocodeApiMenuItem.setMnemonic('A');
helpRobocodeApiMenuItem.setDisplayedMnemonicIndex(9);
helpRobocodeApiMenuItem.addActionListener(eventHandler);
}
return helpRobocodeApiMenuItem;
}
private JMenu getEditMenu() {
if (editMenu == null) {
editMenu = new JMenu();
editMenu.setText("Edit");
editMenu.setMnemonic('E');
editMenu.add(getEditUndoMenuItem());
editMenu.add(getEditRedoMenuItem());
editMenu.addSeparator();
editMenu.add(getEditCutMenuItem());
editMenu.add(getEditCopyMenuItem());
editMenu.add(getEditPasteMenuItem());
editMenu.add(getEditDeleteMenuItem());
editMenu.addSeparator();
editMenu.add(getEditFindMenuItem());
editMenu.add(getEditFindNextMenuItem());
editMenu.add(getEditReplaceMenuItem());
editMenu.addSeparator();
editMenu.add(getEditSelectAllMenuItem());
}
return editMenu;
}
private JMenuItem getEditUndoMenuItem() {
if (editUndoMenuItem == null) {
editUndoMenuItem = new JMenuItem();
editUndoMenuItem.setText("Undo");
editUndoMenuItem.setMnemonic('U');
editUndoMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, MENU_SHORTCUT_KEY_MASK));
editUndoMenuItem.addActionListener(eventHandler);
}
return editUndoMenuItem;
}
private JMenuItem getEditRedoMenuItem() {
if (editRedoMenuItem == null) {
editRedoMenuItem = new JMenuItem();
editRedoMenuItem.setText("Redo");
editRedoMenuItem.setMnemonic('R');
editRedoMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, MENU_SHORTCUT_KEY_MASK));
editRedoMenuItem.addActionListener(eventHandler);
}
return editRedoMenuItem;
}
private JMenuItem getEditCutMenuItem() {
if (editCutMenuItem == null) {
editCutMenuItem = new JMenuItem();
editCutMenuItem.setText("Cut");
editCutMenuItem.setMnemonic('t');
editCutMenuItem.setDisplayedMnemonicIndex(2);
editCutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, MENU_SHORTCUT_KEY_MASK));
editCutMenuItem.addActionListener(eventHandler);
}
return editCutMenuItem;
}
private JMenuItem getEditCopyMenuItem() {
if (editCopyMenuItem == null) {
editCopyMenuItem = new JMenuItem();
editCopyMenuItem.setText("Copy");
editCopyMenuItem.setMnemonic('C');
editCopyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, MENU_SHORTCUT_KEY_MASK));
editCopyMenuItem.addActionListener(eventHandler);
}
return editCopyMenuItem;
}
private JMenuItem getEditPasteMenuItem() {
if (editPasteMenuItem == null) {
editPasteMenuItem = new JMenuItem();
editPasteMenuItem.setText("Paste");
editPasteMenuItem.setMnemonic('P');
editPasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, MENU_SHORTCUT_KEY_MASK));
editPasteMenuItem.addActionListener(eventHandler);
}
return editPasteMenuItem;
}
private JMenuItem getEditDeleteMenuItem() {
if (editDeleteMenuItem == null) {
editDeleteMenuItem = new JMenuItem();
editDeleteMenuItem.setText("Delete");
editDeleteMenuItem.setMnemonic('l');
editDeleteMenuItem.setDisplayedMnemonicIndex(2);
editDeleteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
editDeleteMenuItem.addActionListener(eventHandler);
}
return editDeleteMenuItem;
}
private JMenuItem getEditFindMenuItem() {
if (editFindMenuItem == null) {
editFindMenuItem = new JMenuItem();
editFindMenuItem.setText("Find...");
editFindMenuItem.setMnemonic('F');
editFindMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, MENU_SHORTCUT_KEY_MASK));
editFindMenuItem.addActionListener(eventHandler);
}
return editFindMenuItem;
}
private JMenuItem getEditFindNextMenuItem() {
if (editFindNextMenuItem == null) {
editFindNextMenuItem = new JMenuItem();
editFindNextMenuItem.setText("Find Next");
editFindNextMenuItem.setMnemonic('N');
editFindNextMenuItem.setDisplayedMnemonicIndex(5);
editFindNextMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, MENU_SHORTCUT_KEY_MASK));
editFindNextMenuItem.addActionListener(eventHandler);
}
return editFindNextMenuItem;
}
private JMenuItem getEditReplaceMenuItem() {
if (editReplaceMenuItem == null) {
editReplaceMenuItem = new JMenuItem();
editReplaceMenuItem.setText("Replace...");
editReplaceMenuItem.setMnemonic('R');
editReplaceMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, MENU_SHORTCUT_KEY_MASK));
editReplaceMenuItem.addActionListener(eventHandler);
}
return editReplaceMenuItem;
}
private JMenuItem getEditSelectAllMenuItem() {
if (editSelectAllMenuItem == null) {
editSelectAllMenuItem = new JMenuItem();
editSelectAllMenuItem.setText("Select All");
editSelectAllMenuItem.setMnemonic('A');
editSelectAllMenuItem.setDisplayedMnemonicIndex(7);
editSelectAllMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, MENU_SHORTCUT_KEY_MASK));
editSelectAllMenuItem.addActionListener(eventHandler);
}
return editSelectAllMenuItem;
}
public JMenu getWindowMenu() {
if (windowMenu == null) {
windowMenu = new JMenu();
windowMenu.setText("Window");
windowMenu.setMnemonic('W');
// If you add more items to this menu, you need to update the
// constants in WindowMenuItem, too, or the dynamic part of the
// window menu won't operate correctly.
windowMenu.add(getWindowCloseMenuItem());
windowMenu.add(getWindowCloseAllMenuItem());
windowMenu.addSeparator();
// stuff will be inserted here...
windowMenu.add(getWindowWindowsDialogMenuItem());
}
return windowMenu;
}
private JMenuItem getWindowCloseMenuItem() {
if (windowCloseMenuItem == null) {
windowCloseMenuItem = new JMenuItem();
windowCloseMenuItem.setText("Close");
windowCloseMenuItem.setMnemonic('C');
windowCloseMenuItem.addActionListener(eventHandler);
}
return windowCloseMenuItem;
}
private JMenuItem getWindowCloseAllMenuItem() {
if (windowCloseAllMenuItem == null) {
windowCloseAllMenuItem = new JMenuItem();
windowCloseAllMenuItem.setText("Close All");
windowCloseAllMenuItem.setMnemonic('A');
windowCloseAllMenuItem.setDisplayedMnemonicIndex(6);
windowCloseAllMenuItem.addActionListener(eventHandler);
}
return windowCloseAllMenuItem;
}
private JMenuItem getWindowWindowsDialogMenuItem() {
if (windowWindowsDialogMenuItem == null) {
windowWindowsDialogMenuItem = new WindowMenuItem();
windowWindowsDialogMenuItem.addActionListener(eventHandler);
}
return windowWindowsDialogMenuItem;
}
public MoreWindowsDialog getMoreWindowsDialog() {
if (moreWindowsDialog == null) {
moreWindowsDialog = new MoreWindowsDialog(editor);
}
return moreWindowsDialog;
}
private void helpRobocodeApiActionPerformed() {
editor.showHelpApi();
}
private void initialize() {
add(getFileMenu());
add(getEditMenu());
add(getCompilerMenu());
add(getWindowMenu());
add(getHelpMenu());
}
}