X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fmenu%2FTMenu.java;h=667673b642c4f340dd91b411fe38e3904d0f5687;hb=b2d49e0f15810a35a206e88c9bad11b053ed65fc;hp=c1509d55bafa220805b74ecc7f3a1045b8d8de84;hpb=329fd62e4acdaa8e9f4cccd518d47c0b07e79f51;p=fanfix.git diff --git a/src/jexer/menu/TMenu.java b/src/jexer/menu/TMenu.java index c1509d5..667673b 100644 --- a/src/jexer/menu/TMenu.java +++ b/src/jexer/menu/TMenu.java @@ -1,35 +1,35 @@ /* * Jexer - Java Text User Interface * - * License: LGPLv3 or later + * The MIT License (MIT) * - * This module is licensed under the GNU Lesser General Public License - * Version 3. Please see the file "COPYING" in this directory for more - * information about the GNU Lesser General Public License Version 3. + * Copyright (C) 2017 Kevin Lamonte * - * Copyright (C) 2015 Kevin Lamonte + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 3 of - * the License, or (at your option) any later version. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, see - * http://www.gnu.org/licenses/, or write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. * * @author Kevin Lamonte [kevin.lamonte@gmail.com] * @version 1 */ package jexer.menu; +import java.util.ResourceBundle; + import jexer.TApplication; import jexer.TKeypress; import jexer.TWidget; @@ -46,11 +46,39 @@ import static jexer.TKeypress.*; */ public final class TMenu extends TWindow { + /** + * Translated strings. + */ + private static final ResourceBundle i18n = ResourceBundle.getBundle(TMenu.class.getName()); + /** * If true, this is a sub-menu. Note package private access. */ boolean isSubMenu = false; + /** + * The X position of the menu's title. + */ + private int titleX; + + /** + * Set the menu title X position. + * + * @param titleX the position + */ + public void setTitleX(final int titleX) { + this.titleX = titleX; + } + + /** + * Get the menu title X position. + * + * @return the position + */ + public int getTitleX() { + return titleX; + } + /** * The shortcut and title. */ @@ -90,6 +118,18 @@ public final class TMenu extends TWindow { public static final int MID_WINDOW_PREVIOUS = 26; public static final int MID_WINDOW_CLOSE = 27; + // Help menu + public static final int MID_HELP_CONTENTS = 40; + public static final int MID_HELP_INDEX = 41; + public static final int MID_HELP_SEARCH = 42; + public static final int MID_HELP_PREVIOUS = 43; + public static final int MID_HELP_HELP = 44; + public static final int MID_HELP_ACTIVE_FILE = 45; + public static final int MID_ABOUT = 46; + + // Other + public static final int MID_REPAINT = 50; + /** * Public constructor. * @@ -106,9 +146,6 @@ public final class TMenu extends TWindow { super(parent, label, x, y, parent.getScreen().getWidth(), parent.getScreen().getHeight()); - // My parent constructor added me as a window, get rid of that - parent.closeWindow(this); - // Setup the menu shortcut mnemonic = new MnemonicString(label); setTitle(mnemonic.getRawLabel()); @@ -335,6 +372,23 @@ public final class TMenu extends TWindow { return addItemInternal(id, label, key); } + /** + * Convenience function to add a custom menu item. + * + * @param id menu item ID. Must be greater than 1024. + * @param label menu item label + * @param key global keyboard accelerator + * @param enabled default state for enabled + * @return the new menu item + */ + public TMenuItem addItem(final int id, final String label, + final TKeypress key, final boolean enabled) { + + TMenuItem item = addItem(id, label, key); + item.setEnabled(enabled); + return item; + } + /** * Convenience function to add a custom menu item. * @@ -381,64 +435,93 @@ public final class TMenu extends TWindow { switch (id) { case MID_EXIT: - label = "E&xit"; + label = i18n.getString("menuExit"); key = kbAltX; break; case MID_SHELL: - label = "O&S Shell"; + label = i18n.getString("menuShell"); break; case MID_OPEN_FILE: - label = "&Open"; - key = kbAltO; + label = i18n.getString("menuOpen"); + key = kbF3; break; case MID_CUT: - label = "Cu&t"; + label = i18n.getString("menuCut"); key = kbCtrlX; break; case MID_COPY: - label = "&Copy"; + label = i18n.getString("menuCopy"); key = kbCtrlC; break; case MID_PASTE: - label = "&Paste"; + label = i18n.getString("menuPaste"); key = kbCtrlV; break; case MID_CLEAR: - label = "C&lear"; + label = i18n.getString("menuClear"); // key = kbDel; break; case MID_TILE: - label = "&Tile"; + label = i18n.getString("menuWindowTile"); break; case MID_CASCADE: - label = "C&ascade"; + label = i18n.getString("menuWindowCascade"); break; case MID_CLOSE_ALL: - label = "Cl&ose All"; + label = i18n.getString("menuWindowCloseAll"); break; case MID_WINDOW_MOVE: - label = "&Size/Move"; + label = i18n.getString("menuWindowMove"); key = kbCtrlF5; break; case MID_WINDOW_ZOOM: - label = "&Zoom"; + label = i18n.getString("menuWindowZoom"); key = kbF5; break; case MID_WINDOW_NEXT: - label = "&Next"; + label = i18n.getString("menuWindowNext"); key = kbF6; break; case MID_WINDOW_PREVIOUS: - label = "&Previous"; + label = i18n.getString("menuWindowPrevious"); key = kbShiftF6; break; case MID_WINDOW_CLOSE: - label = "&Close"; - // key = kbCtrlW; + label = i18n.getString("menuWindowClose"); + key = kbCtrlW; + break; + + case MID_HELP_CONTENTS: + label = i18n.getString("menuHelpContents"); + break; + case MID_HELP_INDEX: + label = i18n.getString("menuHelpIndex"); + key = kbShiftF1; + break; + case MID_HELP_SEARCH: + label = i18n.getString("menuHelpSearch"); + key = kbCtrlF1; + break; + case MID_HELP_PREVIOUS: + label = i18n.getString("menuHelpPrevious"); + key = kbAltF1; + break; + case MID_HELP_HELP: + label = i18n.getString("menuHelpHelp"); + break; + case MID_HELP_ACTIVE_FILE: + label = i18n.getString("menuHelpActive"); + break; + case MID_ABOUT: + label = i18n.getString("menuHelpAbout"); + break; + + case MID_REPAINT: + label = i18n.getString("menuRepaintDesktop"); break; default: