001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package javax.microedition.lcdui;
028:
029: /**
030: * This utility class is used to show & hide native system menus.
031: * Is not needed in Chameleon (needed in platform_widgets).
032: * shall be used only by Display.
033: */
034: class NativeMenu {
035:
036: /**
037: * Set the current set of active Abstract Commands.
038: *
039: * @param itemCommands The list of Item Commands that should be active
040: * @param numItemCommands The number of Item commands in the list
041: * @param commands The list of Commands that should be active
042: * @param numCommands The number of commands in the list
043: */
044: public static native void updateCommands(Command[] itemCommands,
045: int numItemCommands, Command[] commands, int numCommands);
046:
047: /**
048: * Called to show system menu on the screen
049: */
050: public static void show() {
051: showMenu();
052: inMenu = true;
053: }
054:
055: /**
056: * Called to force the display manager to clear whatever system screen
057: * has interrupted the current Displayable and allow the foreground
058: * Display to resume painting.
059: */
060: public static void dismiss() {
061: inMenu = false;
062: dismissMenuAndPopup();
063: }
064:
065: /**
066: * Returns current status of the system menu.
067: * Intended to be used by displayEventConsumer.handlecommandEvent()
068: * (implemented by Display.DisplayAccessor).
069: *
070: * @return true if menu is active, false otherwise.
071: */
072: public static boolean getState() {
073: return inMenu;
074: }
075:
076: /**
077: * Clear state of system menu without physical dismiss.
078: * Intended to be used by displayEventConsumer.handlecommandEvent()
079: * (implemented by Display.DisplayAccessor).
080: */
081: public static void clearState() {
082: inMenu = false;
083: }
084:
085: /**
086: * Native method to show the command menu on the screen
087: */
088: private static native void showMenu();
089:
090: /**
091: * Native method to dismiss the current menu or popup
092: * in the case of setCurrent()
093: * being called while the Display is suspended by a system screen.
094: */
095: private static native void dismissMenuAndPopup();
096:
097: /** True if the foreground display is the menu screen. */
098: private static boolean inMenu = false;
099:
100: }
|