X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fmenu%2FTMenu.java;h=b9641e1eab4a31fd0179ffed4cb53e4e040d66e8;hb=159f076db8ec60010cdf87b1164a875d51875dd4;hp=b0f99ae257e2de7a5890db1eb5dc71593413b5c5;hpb=5dfd1c11947e9cb32fcac4772f1b16879d9ffe67;p=nikiroo-utils.git diff --git a/src/jexer/menu/TMenu.java b/src/jexer/menu/TMenu.java index b0f99ae..b9641e1 100644 --- a/src/jexer/menu/TMenu.java +++ b/src/jexer/menu/TMenu.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2016 Kevin Lamonte + * Copyright (C) 2017 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -28,6 +28,8 @@ */ package jexer.menu; +import java.util.ResourceBundle; + import jexer.TApplication; import jexer.TKeypress; import jexer.TWidget; @@ -44,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. */ @@ -88,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. * @@ -104,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()); @@ -333,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. * @@ -379,66 +435,95 @@ 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"; + label = i18n.getString("menuOpen"); key = kbAltO; 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"; + 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: throw new IllegalArgumentException("Invalid menu ID: " + id); }