List of usage examples for javax.swing Action ACCELERATOR_KEY
String ACCELERATOR_KEY
To view the source code for javax.swing Action ACCELERATOR_KEY.
Click Source Link
KeyStroke
to be used as the accelerator for the action. From source file:org.pmedv.blackboard.commands.UndoCommand.java
public UndoCommand() { putValue(Action.NAME, resources.getResourceByKey("UndoCommand.name")); putValue(Action.SMALL_ICON, resources.getIcon("icon.undo")); putValue(Action.SHORT_DESCRIPTION, resources.getResourceByKey("UndoCommand.description")); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK)); setEnabled(false);//w w w . j av a2 s.c om }
From source file:org.underworldlabs.swing.plaf.base.AcceleratorToolTipUI.java
private String getAcceleratorString(JToolTip tip) { String acceleratorString = null; Action action = ((AbstractButton) tip.getComponent()).getAction(); if (action != null) { KeyStroke keyStroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY); if (keyStroke != null) { int mod = keyStroke.getModifiers(); acceleratorString = KeyEvent.getKeyModifiersText(mod); if (!MiscUtils.isNull(acceleratorString)) { acceleratorString += DELIMITER; }/* w w w . java 2s. c o m*/ String keyText = KeyEvent.getKeyText(keyStroke.getKeyCode()); if (!MiscUtils.isNull(keyText)) { acceleratorString += keyText; } } } return acceleratorString; }
From source file:pcgen.gui2.PCGenFrame.java
private static InputMap createInputMap(ActionMap actionMap) { InputMap inputMap = new InputMap(); for (Object obj : actionMap.keys()) { KeyStroke key = (KeyStroke) actionMap.get(obj).getValue(Action.ACCELERATOR_KEY); if (key != null) { inputMap.put(key, obj);//ww w . j a v a2 s.c o m } } return inputMap; }
From source file:ro.nextreports.designer.action.chart.OpenChartAction.java
public OpenChartAction(boolean fullName) { if (fullName) { putValue(Action.NAME, I18NSupport.getString("open.chart")); } else {/*from ww w.j a v a2 s . c o m*/ putValue(Action.NAME, I18NSupport.getString("open.chart.small")); } Icon icon = ImageUtil.getImageIcon("chart_open"); putValue(Action.SMALL_ICON, icon); putValue(Action.MNEMONIC_KEY, ShortcutsUtil.getMnemonic("chart.open.mnemonic", new Integer('A'))); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(ShortcutsUtil.getShortcut("chart.open.accelerator", "control A"))); putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("open.chart")); putValue(Action.LONG_DESCRIPTION, I18NSupport.getString("open.chart")); }
From source file:ro.nextreports.designer.action.tools.RestoreDockingAction.java
public RestoreDockingAction() { putValue(Action.NAME, I18NSupport.getString("restore.docking.action.name")); putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("docking_restore")); putValue(Action.MNEMONIC_KEY, ShortcutsUtil.getMnemonic("layout.reset.mnemonic", new Integer('L'))); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(ShortcutsUtil.getShortcut("layout.reset.accelerator", "control L"))); putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("restore.docking.action.name")); putValue(Action.LONG_DESCRIPTION, I18NSupport.getString("restore.docking.action.name")); }
From source file:ro.nextreports.designer.NextReports.java
void start() { long time = System.currentTimeMillis(); final SplashScreen splash = new SplashScreen("splash"); Runnable runnable = new Runnable() { public void run() { for (int i = 0; i <= 100; i += 5) { if (stop) { break; }// w w w . jav a 2 s.c o m splash.updateSplash(i); try { Thread.sleep(250); } catch (Exception e) { e.printStackTrace(); } } } }; Thread t = new Thread(runnable); t.start(); // redirect output redirectOutput(); // set engine properties System.setProperty(EngineProperties.RUN_PRIORITY_PROPERTY, String.valueOf(Thread.MIN_PRIORITY)); System.setProperty(EngineProperties.RECORDS_YIELD_PROPERTY, String.valueOf(5000)); System.setProperty(EngineProperties.MILLIS_YIELD_PROPERTY, String.valueOf(100)); // set pdf font and encoding Globals.setPdfEncoding(); Globals.setPdfFont(); // set pdf direction and arabic Globals.setPdfDirection(); Globals.setPdfArabicOptions(); // set oracle client path Globals.setOracleClientPath(); // set locale Globals.setLocale(); FontUtil.registerFonts(Globals.getFontDirectories()); // print parameters printParameters(); // create the main frame final MainFrame mainFrame = createMainFrame(); // add global actions GlobalHotkeyManager hotkeyManager = GlobalHotkeyManager.getInstance(); InputMap inputMap = hotkeyManager.getInputMap(); ActionMap actionMap = hotkeyManager.getActionMap(); Action queryPerspectiveAction = new OpenQueryPerspectiveAction(); inputMap.put((KeyStroke) queryPerspectiveAction.getValue(Action.ACCELERATOR_KEY), "queryPerspective"); actionMap.put("queryPerspective", queryPerspectiveAction); Action reportPerspectiveAction = new OpenReportPerspectiveAction(); inputMap.put((KeyStroke) reportPerspectiveAction.getValue(Action.ACCELERATOR_KEY), "reportPerspective"); actionMap.put("reportPerspective", reportPerspectiveAction); disposeSplash(splash); mainFrame.setVisible(true); time = System.currentTimeMillis() - time; LOG.info("Start in " + time + " ms"); // do not show start dialog if we start from server if (Globals.getServerUrl() == null) { showStartDialog(true); showSurveyDialog(); } else { new NextReportsServerRequest(); } }
From source file:ro.nextreports.designer.querybuilder.QueryBuilderPanel.java
private void initUI() { JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); split.setDividerLocation(250);//from w w w.j a v a2 s .co m split.setOneTouchExpandable(true); JToolBar toolBar = new JToolBar(); toolBar.putClientProperty("JToolBar.isRollover", Boolean.TRUE); // hide buttons borders toolBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH); toolBar.setBorderPainted(false); // add refresh action toolBar.add(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("refresh"); } else if (AbstractAction.SHORT_DESCRIPTION.equals(key)) { return I18NSupport.getString("querybuilder.refresh"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { try { if (Globals.getConnection() == null) { return; } // refresh tables, views, procedures TreeUtil.refreshDatabase(); // add new queries to tree TreeUtil.refreshQueries(); // add new reports to tree TreeUtil.refreshReports(); // add new charts to tree TreeUtil.refreshCharts(); } catch (Exception ex) { Show.error(ex); } } }); // add expand action toolBar.add(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("expandall"); } else if (AbstractAction.SHORT_DESCRIPTION.equals(key)) { return I18NSupport.getString("querybuilder.expand.all"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { TreeUtil.expandAll(dbBrowserTree); } }); // add collapse action toolBar.add(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("collapseall"); } else if (AbstractAction.SHORT_DESCRIPTION.equals(key)) { return I18NSupport.getString("querybuilder.collapse.all"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { TreeUtil.collapseAll(dbBrowserTree); } }); // add properties button /* JButton propButton = new MagicButton(new AbstractAction() { public Object getValue(String key) { if (AbstractAction.SMALL_ICON.equals(key)) { return ImageUtil.getImageIcon("properties"); } return super.getValue(key); } public void actionPerformed(ActionEvent e) { DBBrowserPropertiesPanel joinPanel = new DBBrowserPropertiesPanel(); JDialog dlg = new DBBrowserPropertiesDialog(joinPanel); dlg.pack(); dlg.setResizable(false); Show.centrateComponent(Globals.getMainFrame(), dlg); dlg.setVisible(true); } }); propButton.setToolTipText(I18NSupport.getString("querybuilder.properties")); */ //browserButtonsPanel.add(propButton); // ro.nextreports.designer.util.SwingUtil.registerButtonsForFocus(browserButtonsPanel); browserPanel = new JXPanel(new BorderLayout()); browserPanel.add(toolBar, BorderLayout.NORTH); // browser tree JScrollPane scroll = new JScrollPane(dbBrowserTree); browserPanel.add(scroll, BorderLayout.CENTER); split.setLeftComponent(browserPanel); tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM); // tabbedPane.putClientProperty(Options.EMBEDDED_TABS_KEY, Boolean.TRUE); // look like eclipse JSplitPane split2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT); split2.setResizeWeight(0.66); split2.setOneTouchExpandable(true); // desktop pane desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); desktop.setDropTarget( new DropTarget(desktop, DnDConstants.ACTION_MOVE, new DesktopPaneDropTargetListener(), true)); // create the toolbar JToolBar toolBar2 = new JToolBar(); toolBar2.putClientProperty("JToolBar.isRollover", Boolean.TRUE); // hide buttons borders toolBar2.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH); toolBar2.setBorderPainted(false); Action distinctAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { if (distinctButton.isSelected()) { selectQuery.setDistinct(true); } else { selectQuery.setDistinct(false); } } }; distinctAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("query.distinct")); distinctAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("querybuilder.distinct")); toolBar2.add(distinctButton = new JToggleButton(distinctAction)); Action groupByAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { groupBy = groupByButton.isSelected(); Globals.getEventBus().publish(new GroupByEvent(QueryBuilderPanel.this.desktop, groupBy)); } }; groupByAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("query.group_by")); groupByAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("querybuilder.group.by")); toolBar2.add(groupByButton = new JToggleButton(groupByAction)); Action clearAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { clear(false); } }; clearAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("clear")); clearAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("querybuilder.clear")); toolBar2.add(clearAction); // add separator SwingUtil.addCustomSeparator(toolBar2); // add run button Action runQueryAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { selectSQLViewTab(); sqlView.doRun(); } }; runQueryAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("run")); KeyStroke ks = KeyStroke.getKeyStroke(ShortcutsUtil.getShortcut("query.run.accelerator", "control 4")); runQueryAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("run.query") + " (" + ShortcutsUtil.getShortcut("query.run.accelerator.display", "Ctrl 4") + ")"); runQueryAction.putValue(Action.ACCELERATOR_KEY, ks); toolBar2.add(runQueryAction); // register run query shortcut GlobalHotkeyManager hotkeyManager = GlobalHotkeyManager.getInstance(); InputMap inputMap = hotkeyManager.getInputMap(); ActionMap actionMap = hotkeyManager.getActionMap(); inputMap.put((KeyStroke) runQueryAction.getValue(Action.ACCELERATOR_KEY), "runQueryAction"); actionMap.put("runQueryAction", runQueryAction); JScrollPane scroll2 = new JScrollPane(desktop, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroll2.setPreferredSize(DBTablesDesktopPane.PREFFERED_SIZE); DecoratedScrollPane.decorate(scroll2); JPanel topPanel = new JPanel(); topPanel.setLayout(new GridBagLayout()); topPanel.add(toolBar2, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); topPanel.add(scroll2, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); split2.setTopComponent(topPanel); designPanel = new DesignerTablePanel(selectQuery); split2.setBottomComponent(designPanel); split2.setDividerLocation(400); tabbedPane.addTab(I18NSupport.getString("querybuilder.query.designer"), ImageUtil.getImageIcon("designer"), split2); tabbedPane.setMnemonicAt(0, 'D'); sqlView = new SQLViewPanel(); sqlView.getEditorPane().setDropTarget(new DropTarget(sqlView.getEditorPane(), DnDConstants.ACTION_MOVE, new SQLViewDropTargetListener(), true)); tabbedPane.addTab(I18NSupport.getString("querybuilder.query.editor"), ImageUtil.getImageIcon("sql"), sqlView); tabbedPane.setMnemonicAt(1, 'E'); split.setRightComponent(tabbedPane); // register a change listener tabbedPane.addChangeListener(new ChangeListener() { // this method is called whenever the selected tab changes public void stateChanged(ChangeEvent ev) { if (ev.getSource() == QueryBuilderPanel.this.tabbedPane) { // get current tab int sel = QueryBuilderPanel.this.tabbedPane.getSelectedIndex(); if (sel == 1) { // sql view String query; if (!synchronizedPanels) { query = sqlView.getQueryString(); synchronizedPanels = true; } else { if (Globals.getConnection() != null) { query = getSelectQuery().toString(); } else { query = ""; } // if (query.equals("")) { // query = sqlView.getQueryString(); // } } if (resetTable) { sqlView.clear(); resetTable = false; } //System.out.println("query="+query); sqlView.setQueryString(query); } else if (sel == 0) { // design view if (queryWasModified(false)) { Object[] options = { I18NSupport.getString("optionpanel.yes"), I18NSupport.getString("optionpanel.no") }; String m1 = I18NSupport.getString("querybuilder.lost"); String m2 = I18NSupport.getString("querybuilder.continue"); int option = JOptionPane.showOptionDialog(Globals.getMainFrame(), "<HTML>" + m1 + "<BR>" + m2 + "</HTML>", I18NSupport.getString("querybuilder.confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); if (option != JOptionPane.YES_OPTION) { synchronizedPanels = false; tabbedPane.setSelectedIndex(1); } else { resetTable = true; } } } else if (sel == 2) { // report view } } } }); // this.add(split, BorderLayout.CENTER); parametersPanel = new ParametersPanel(); }
From source file:ro.nextreports.designer.querybuilder.SQLViewPanel.java
private void initUI() { sqlEditor = new Editor() { public void afterCaretMove() { removeHighlightErrorLine();// w w w. j a v a 2 s . c om } }; this.queryArea = sqlEditor.getEditorPanel().getEditorPane(); queryArea.setText(DEFAULT_QUERY); errorPainter = new javax.swing.text.Highlighter.HighlightPainter() { @Override public void paint(Graphics g, int p0, int p1, Shape bounds, JTextComponent c) { try { Rectangle r = c.modelToView(c.getCaretPosition()); g.setColor(Color.RED.brighter().brighter()); g.fillRect(0, r.y, c.getWidth(), r.height); } catch (BadLocationException e) { // ignore } } }; ActionMap actionMap = sqlEditor.getEditorPanel().getEditorPane().getActionMap(); // create the toolbar JToolBar toolBar = new JToolBar(); toolBar.putClientProperty("JToolBar.isRollover", Boolean.TRUE); // hide buttons borders toolBar.putClientProperty(Options.HEADER_STYLE_KEY, HeaderStyle.BOTH); toolBar.setBorderPainted(false); // add cut action Action cutAction = actionMap.get(BaseEditorKit.cutAction); cutAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("cut")); cutAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("sqlviewpanel.cut")); toolBar.add(cutAction); // add copy action Action copyAction = actionMap.get(BaseEditorKit.copyAction); copyAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("copy")); copyAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("sqlviewpanel.copy")); toolBar.add(copyAction); // add paste action Action pasteAction = actionMap.get(BaseEditorKit.pasteAction); pasteAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("paste")); pasteAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("sqlviewpanel.paste")); toolBar.add(pasteAction); // add separator SwingUtil.addCustomSeparator(toolBar); // add undo action Action undoAction = actionMap.get(BaseEditorKit.undoAction); undoAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("undo")); undoAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("undo")); toolBar.add(undoAction); // add redo action Action redoAction = actionMap.get(BaseEditorKit.redoAction); redoAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("redo")); redoAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("redo")); toolBar.add(redoAction); // add separator SwingUtil.addCustomSeparator(toolBar); // add find action Action findReplaceAction = actionMap.get(BaseEditorKit.findReplaceAction); findReplaceAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("find")); findReplaceAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("sqleditor.findReplaceActionName")); toolBar.add(findReplaceAction); // add separator SwingUtil.addCustomSeparator(toolBar); // add run action runAction = new SQLRunAction(); runAction.putValue(Action.SMALL_ICON, ImageUtil.getImageIcon("run")); runAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(ShortcutsUtil.getShortcut("query.run.accelerator", "control 4"))); runAction.putValue(Action.SHORT_DESCRIPTION, I18NSupport.getString("run.query") + " (" + ShortcutsUtil.getShortcut("query.run.accelerator.display", "Ctrl 4") + ")"); // runAction is globally registered in QueryBuilderPanel ! toolBar.add(runAction); // ro.nextreports.designer.util.SwingUtil.registerButtonsForFocus(buttonsPanel); // create the table resultTable = new JXTable(); resultTable.setDefaultRenderer(Integer.class, new ToStringRenderer()); // to remove thousand separators resultTable.setDefaultRenderer(Long.class, new ToStringRenderer()); resultTable.setDefaultRenderer(Date.class, new DateRenderer()); resultTable.setDefaultRenderer(Double.class, new DoubleRenderer()); resultTable.addMouseListener(new CopyTableMouseAdapter(resultTable)); TableUtil.setRowHeader(resultTable); resultTable.setColumnControlVisible(true); // resultTable.getTableHeader().setReorderingAllowed(false); resultTable.setHorizontalScrollEnabled(true); // highlight table Highlighter alternateHighlighter = HighlighterFactory.createAlternateStriping(Color.WHITE, ColorUtil.PANEL_BACKROUND_COLOR); Highlighter nullHighlighter = new TextHighlighter(ResultSetTableModel.NULL_VALUE, Color.YELLOW.brighter()); Highlighter blobHighlighter = new TextHighlighter(ResultSetTableModel.BLOB_VALUE, Color.GRAY.brighter()); Highlighter clobHighlighter = new TextHighlighter(ResultSetTableModel.CLOB_VALUE, Color.GRAY.brighter()); resultTable.setHighlighters(alternateHighlighter, nullHighlighter, blobHighlighter, clobHighlighter); resultTable.setBackground(ColorUtil.PANEL_BACKROUND_COLOR); resultTable.setGridColor(Color.LIGHT_GRAY); resultTable.setRolloverEnabled(true); resultTable.addHighlighter(new ColorHighlighter(HighlightPredicate.ROLLOVER_ROW, null, Color.RED)); JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT); split.setResizeWeight(0.66); split.setOneTouchExpandable(true); JPanel topPanel = new JPanel(); topPanel.setLayout(new GridBagLayout()); topPanel.add(toolBar, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); topPanel.add(sqlEditor, new GridBagConstraints(0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); JPanel bottomPanel = new JPanel(); bottomPanel.setLayout(new GridBagLayout()); JScrollPane scrPanel = new JScrollPane(resultTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); statusPanel = new SQLStatusPanel(); bottomPanel.add(scrPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); bottomPanel.add(statusPanel, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); split.setTopComponent(topPanel); split.setBottomComponent(bottomPanel); split.setDividerLocation(400); setLayout(new BorderLayout()); this.add(split, BorderLayout.CENTER); }
From source file:statechum.analysis.learning.Visualiser.java
public static void updatePopupMenu(JPopupMenu popupMenu, Map<Integer, Action> keyToActionMap) { for (Entry<Integer, Action> ia : keyToActionMap.entrySet()) { ia.getValue().putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(ia.getKey(), 0)); JMenuItem menuitem = new JMenuItem(ia.getValue()); popupMenu.add(menuitem);/*from ww w .jav a 2s . c o m*/ } }
From source file:VASSAL.launch.EditorWindow.java
protected EditorWindow() { setTitle("VASSAL " + getEditorType() + " Editor"); setLayout(new BorderLayout()); ApplicationIcons.setFor(this); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { close();//from w ww. j a v a2 s .com } }); toolBar.setFloatable(false); add(toolBar, BorderLayout.NORTH); // setup menubar and actions final MenuManager mm = MenuManager.getInstance(); final MenuBarProxy mb = mm.getMenuBarProxyFor(this); // file menu if (SystemUtils.IS_OS_MAC_OSX) { mm.addToSection("Editor.File", mm.addKey("Editor.save")); mm.addToSection("Editor.File", mm.addKey("Editor.save_as")); } else { final MenuProxy fileMenu = new MenuProxy(Resources.getString("General.file")); // FIMXE: setting nmemonic from first letter could cause collisions in // some languages fileMenu.setMnemonic(Resources.getString("General.file.shortcut").charAt(0)); fileMenu.add(mm.addKey("Editor.save")); fileMenu.add(mm.addKey("Editor.save_as")); fileMenu.addSeparator(); fileMenu.add(mm.addKey("General.quit")); mb.add(fileMenu); } // edit menu final MenuProxy editMenu = new MenuProxy(Resources.getString("General.edit")); editMenu.setMnemonic(Resources.getString("General.edit.shortcut").charAt(0)); editMenu.add(mm.addKey("Editor.cut")); editMenu.add(mm.addKey("Editor.copy")); editMenu.add(mm.addKey("Editor.paste")); editMenu.add(mm.addKey("Editor.move")); editMenu.addSeparator(); editMenu.add(mm.addKey("Editor.ModuleEditor.properties")); editMenu.add(mm.addKey("Editor.ModuleEditor.translate")); // tools menu final MenuProxy toolsMenu = new MenuProxy(Resources.getString("General.tools")); toolsMenu.setMnemonic(Resources.getString("General.tools.shortcut").charAt(0)); toolsMenu.add(mm.addKey("create_module_updater")); toolsMenu.add(mm.addKey("Editor.ModuleEditor.update_saved")); if (SystemUtils.IS_OS_MAC_OSX) { mm.addToSection("Editor.MenuBar", editMenu); mm.addToSection("Editor.MenuBar", toolsMenu); } else { mb.add(editMenu); mb.add(toolsMenu); } // help menu if (SystemUtils.IS_OS_MAC_OSX) { mm.addToSection("Documentation.VASSAL", mm.addKey("Editor.ModuleEditor.reference_manual")); } else { final MenuProxy helpMenu = new MenuProxy(Resources.getString("General.help")); // FIMXE: setting nmemonic from first letter could cause collisions in // some languages helpMenu.setMnemonic(Resources.getString("General.help.shortcut").charAt(0)); helpMenu.add(mm.addKey("General.help")); helpMenu.add(mm.addKey("Editor.ModuleEditor.reference_manual")); helpMenu.addSeparator(); helpMenu.add(mm.addKey("AboutScreen.about_vassal")); mb.add(helpMenu); } final int mask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); saveAction = new SaveAction() { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent e) { save(); treeStateChanged(false); } }; saveAction.setEnabled(false); saveAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, mask)); mm.addAction("Editor.save", saveAction); toolBar.add(saveAction); saveAsAction = new SaveAsAction() { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent e) { saveAs(); treeStateChanged(false); } }; saveAsAction.setEnabled(false); saveAsAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, mask)); mm.addAction("Editor.save_as", saveAsAction); toolBar.add(saveAsAction); mm.addAction("General.quit", new ShutDownAction()); // FXIME: mnemonics should be language-dependant // mm.getAction("General.quit").setMnemonic('Q'); createUpdater = new AbstractAction("Create " + getEditorType() + " updater") { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent e) { new ModuleUpdaterDialog(EditorWindow.this).setVisible(true); } }; createUpdater.setEnabled(false); mm.addAction("create_module_updater", createUpdater); URL url = null; try { url = new File(Documentation.getDocumentationBaseDir(), "README.html").toURI().toURL(); } catch (MalformedURLException e) { ErrorDialog.bug(e); } mm.addAction("General.help", new ShowHelpAction(url, null)); url = null; try { File dir = VASSAL.build.module.Documentation.getDocumentationBaseDir(); dir = new File(dir, "ReferenceManual/index.htm"); //$NON-NLS-1$ url = URLUtils.toURL(dir); } catch (MalformedURLException e) { ErrorDialog.bug(e); } final Action helpAction = new ShowHelpAction(url, helpWindow.getClass().getResource("/images/Help16.gif")); //$NON-NLS-1$ helpAction.putValue(Action.SHORT_DESCRIPTION, Resources.getString("Editor.ModuleEditor.reference_manual")); //$NON-NLS-1$ mm.addAction("Editor.ModuleEditor.reference_manual", helpAction); toolBar.add(helpAction); mm.addAction("AboutScreen.about_vassal", new AboutVASSALAction(this)); setJMenuBar(mm.getMenuBarFor(this)); // the presence of the panel prevents a NullPointerException on packing final JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(250, 400)); scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); add(scrollPane, BorderLayout.CENTER); pack(); }