submenucommand.java
来自「This is a resource based on j2me embedde」· Java 代码 · 共 197 行
JAVA
197 行
/* * * * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * 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 version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package com.sun.midp.chameleon;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;/** * The SubMenuCommand is an extension of LCDUI's Command object. * It represents a collection of Commands which should be made * available as a type of "sub menu" under a single Command heading. */public class SubMenuCommand extends Command { /** An array holding the Commands that are part of the "submenu". */ protected Command[] subCommands; /** The CommandListener to notify when a sub command is selected. */ protected CommandListener listener; /** * Creates a new command object with the given short * * <a href="#label">label</a>, * <a href="#type">type</a>, and * <a href="#priority">priority</a>. * * The newly created command has no long label. This constructor is * identical to <code>Command(label, null, commandType, priority)</code>. * * @param label the command's short label * @param commandType the command's type * @param priority the command's priority value * * @throws NullPointerException if label is <code>null</code> * @throws IllegalArgumentException if the <code>commandType</code> * is an invalid type * * @see #Command(String, String, int, int) */ public SubMenuCommand(String label, int commandType, int priority) { super(label, commandType, priority); } /** * Creates a new command object with the given * <a href="#label">labels</a>, * <a href="#type">type</a>, and * <a href="#priority">priority</a>. * * <p>The short label is required and must not be * <code>null</code>. The long label is * optional and may be <code>null</code> if the command is to have * no long label.</p> * * @param shortLabel the command's short label * @param longLabel the command's long label, or <code>null</code> if none * @param commandType the command's type * @param priority the command's priority value * * @throws NullPointerException if <code>shortLabel</code> is * <code>null</code> * @throws IllegalArgumentException if the <code>commandType</code> is an * invalid type */ public SubMenuCommand(String shortLabel, String longLabel, int commandType, int priority) { super(shortLabel, longLabel, commandType, priority); } /** * Removes all commands that are currently in the list of sub commands. */ public synchronized void removeAll() { subCommands = null; } /** * Adds the given Command to the list of sub commands. * * @param cmd The Command to add to the current list of submenu commands * * @throws IllegalArgumentException if the given Command is null */ public synchronized void addSubCommand(Command cmd) { if (cmd == null) { throw new IllegalArgumentException("Added command was null"); } if (subCommands == null) { subCommands = new Command[] { cmd }; } else { Command[] newCommands = new Command[subCommands.length + 1]; System.arraycopy(subCommands, 0, newCommands, 0, subCommands.length); newCommands[subCommands.length] = cmd; subCommands = newCommands; newCommands = null; } } /** * Adds the given set of Commands to the list of sub commands. * * @param cmds An array of Commands to add to the current list of * submenu commands * * @throws IllegalArgumentException if the given array is null */ public synchronized void addSubCommands(Command[] cmds) { if (cmds == null) { throw new IllegalArgumentException("Added command array was null"); } if (subCommands == null) { subCommands = new Command[cmds.length]; System.arraycopy(cmds, 0, subCommands, 0, cmds.length); } else { Command[] newCommands = new Command[subCommands.length + cmds.length]; System.arraycopy(subCommands, 0, newCommands, 0, subCommands.length); System.arraycopy(cmds, 0, newCommands, subCommands.length, cmds.length); subCommands = newCommands; newCommands = null; } } /** * Retrieves the set of subcommands from this SubMenuCommand. * This method will return a copy of the internal array holding * the set of sub menu Commands. * * @return an array holding the set of Commands to be shown * on the "submenu" for this SubMenuCommand. 'null' * means this SubMenuCommand has no sub commands. */ public synchronized Command[] getSubCommands() { if (subCommands == null) { return null; } Command[] cmdCopy = new Command[subCommands.length]; System.arraycopy(subCommands, 0, cmdCopy, 0, subCommands.length); return cmdCopy; } /** * Sets the CommandListener of this SubMenuCommand to notify when one * of the sub commands is selected. * * @param listener the CommandListener to notify when a sub command is * selected */ public void setListener(CommandListener listener) { this.listener = listener; } /** * Called to notify the CommandListener of this SubMenuCommand that * a sub command has been selected. * * @param c the Command that was selected */ public synchronized void notifyListener(Command c) { if (listener != null) { listener.commandAction(c, null); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?