📄 dialog.java
字号:
/* * Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code 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. Sun designates this * particular file as subject to the "Classpath" exception as provided * by Sun in the LICENSE file that accompanied this code. * * This code 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 in the LICENSE file that * accompanied this code). * * 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 USA or visit www.sun.com if you need additional information or * have any questions. */package com.sun.lwuit;import com.sun.lwuit.animations.Transition;import com.sun.lwuit.geom.Dimension;import com.sun.lwuit.layouts.BorderLayout;import com.sun.lwuit.plaf.LookAndFeel;import com.sun.lwuit.plaf.Style;import com.sun.lwuit.plaf.UIManager;/** * A dialog is a form that occupies a part of the screen and appears as a modal * entity to the developer. Dialogs allow us to prompt users for information and * rely on the information being available on the next line after the show method. * <p>Modality indicates that a dialog will block the calling thread even if the * calling thread is the EDT. Notice that a dialog will not release the block * until dispose is called even if show() from another form is called! * <p>To determin the size of the dialog use the show method that accepts 4 integer * values, notice that these values accept margin from the four sides rather than x, y, width * and height values! * <p>To style the dialog you would usually want to style the content pane rather than * the dialog itself. * * @author Shai Almog */public class Dialog extends Form { /** * Indicates whether the dialog has been disposed */ private boolean disposed; /** * Constant indicating the type of alert to indicate the sound to play or * icon if none are explicitly set */ public static final int TYPE_ALARM = 1; /** * Constant indicating the type of alert to indicate the sound to play or * icon if none are explicitly set */ public static final int TYPE_CONFIRMATION = 2; /** * Constant indicating the type of alert to indicate the sound to play or * icon if none are explicitly set */ public static final int TYPE_ERROR = 3; /** * Constant indicating the type of alert to indicate the sound to play or * icon if none are explicitly set */ public static final int TYPE_INFO = 4; /** * Constant indicating the type of alert to indicate the sound to play or * icon if none are explicitly set */ public static final int TYPE_WARNING = 5; /** * Indicates the time in which the alert should be disposed */ private long time; /** * Indicates the last command selected by the user in this form */ private Command lastCommandPressed; /** * Indicates that this is a menu preventing getCurrent() from ever returning this class */ private boolean menu; private String dialogUIID; private String dialogTitleUIID; private int dialogType; private int top = -1; private int bottom; private int left; private int right; private boolean includeTitle; /** * Determins whether the execution of a command on this dialog implicitly * disposes the dialog. This defaults to true which is a sensible default for * simple dialogs. */ private boolean autoDispose = true; private boolean modal = true; /** * Constructs a Dialog with a title * * @param title the title of the dialog */ public Dialog(String title) { this(); setTitle(title); } /** * Constructs a Dialog with a title * */ public Dialog() { this("Dialog", "DialogTitle"); } Dialog(String dialogUIID, String dialogTitleUIID) { super(); this.dialogUIID = dialogUIID; this.dialogTitleUIID = dialogTitleUIID; setDialogStyle(UIManager.getInstance().getComponentStyle(dialogUIID)); setTitleStyle(UIManager.getInstance().getComponentStyle(dialogTitleUIID)); super.getStyle().setBgTransparency(0); super.getStyle().setBgImage(null); setSmoothScrolling(false); deregisterAnimated(this); } /** * Simple setter to set the Dialog Style * * @param style */ public void setDialogStyle(Style style){ getContentPane().setStyle(style); } /** * Simple getter to get the Dialog Style */ public Style getDialogStyle(){ return getContentPane().getStyle(); } /** * Initialize the default transition for the dialogs overriding the forms * transition * * @param laf the default transition for the dialog */ void initLaf(LookAndFeel laf) { setTransitionOutAnimator(laf.getDefaultDialogTransitionOut()); setTransitionInAnimator(laf.getDefaultDialogTransitionIn()); } /** * This method shows the form as a modal alert allowing us to produce a behavior * of an alert/dialog box. This method will block the calling thread even if the * calling thread is the EDT. Notice that this method will not release the block * until dispose is called even if show() from another form is called! * <p>Modal dialogs Allow the forms "content" to "hang in mid air" this is especially useful for * dialogs where you would want the underlying form to "peek" from behind the * form. * * @param top space in pixels between the top of the screen and the form * @param bottom space in pixels between the bottom of the screen and the form * @param left space in pixels between the left of the screen and the form * @param right space in pixels between the right of the screen and the form * @param includeTitle whether the title should hang in the top of the screen or * be glued onto the content pane * @return the last command pressed by the user if such a command exists */ public Command show(int top, int bottom, int left, int right, boolean includeTitle) { return show(top, bottom, left, right, includeTitle, true); } /** * This method shows the form as a modal alert allowing us to produce a behavior * of an alert/dialog box. This method will block the calling thread even if the * calling thread is the EDT. Notice that this method will not release the block * until dispose is called even if show() from another form is called! * <p>Modal dialogs Allow the forms "content" to "hang in mid air" this is especially useful for * dialogs where you would want the underlying form to "peek" from behind the * form. * * @param top space in pixels between the top of the screen and the form * @param bottom space in pixels between the bottom of the screen and the form * @param left space in pixels between the left of the screen and the form * @param right space in pixels between the right of the screen and the form * @param includeTitle whether the title should hang in the top of the screen or * be glued onto the content pane * @param modal indicates the dialog should be modal set to false for modeless dialog * which is useful for some use cases * @return the last command pressed by the user if such a command exists */ public Command show(int top, int bottom, int left, int right, boolean includeTitle, boolean modal) { this.top = top; this.bottom = bottom; this.left = left; this.right = right; this.includeTitle = includeTitle; setDisposed(false); this.modal = modal; super.showModal(top, bottom, left, right, includeTitle, modal); return lastCommandPressed; } /** * Indicates the time (in milliseconds) afterwhich the dialog will be disposed * implicitly * * @param time a milliseconds time used to dispose the dialog */ public void setTimeout(long time) { this.time = System.currentTimeMillis() + time; super.registerAnimated(this); } /** * Shows a modal prompt dialog with the given title and text. * * @param title The title for the dialog optionally null; * @param text the text displayed in the dialog * @param type the type of the alert one of TYPE_WARNING, TYPE_INFO, * TYPE_ERROR, TYPE_CONFIRMATION or TYPE_ALARM * @param icon the icon for the dialog, can be null * @param okText the text to appear in the command dismissing the dialog * @param cancelText optionally null for a text to appear in the cancel command * for canceling the dialog * @return true if the ok command was pressed or if cancelText is null. False otherwise. */ public static boolean show(String title, String text, int type, Image icon, String okText, String cancelText) { return show(title, text, type, icon, okText, cancelText, 0); } /** * Shows a modal prompt dialog with the given title and text. * * @param title The title for the dialog optionally null; * @param text the text displayed in the dialog * @param type the type of the alert one of TYPE_WARNING, TYPE_INFO, * TYPE_ERROR, TYPE_CONFIRMATION or TYPE_ALARM * @param icon the icon for the dialog, can be null * @param okText the text to appear in the command dismissing the dialog * @param cancelText optionally null for a text to appear in the cancel command * for canceling the dialog * @param timeout a timeout after which null would be returned if timeout is 0 inifinite time is used * @return true if the ok command was pressed or if cancelText is null. False otherwise. */ public static boolean show(String title, String text, int type, Image icon, String okText, String cancelText, long timeout) { Command[] cmds; Command okCommand = new Command(okText); if (cancelText != null) { cmds = new Command[]{new Command(cancelText), okCommand}; } else { cmds = new Command[]{okCommand}; } return show(title, text, okCommand, cmds, type, icon, timeout) == okCommand; } /** * Shows a modal prompt dialog with the given title and text. * * @param title The title for the dialog optionally null; * @param text the text displayed in the dialog * @param cmds commands that are added to the form any click on any command * will dispose the form * @param type the type of the alert one of TYPE_WARNING, TYPE_INFO, * TYPE_ERROR, TYPE_CONFIRMATION or TYPE_ALARM * @param icon the icon for the dialog, can be null * @param timeout a timeout after which null would be returned if timeout is 0 inifinite time is used * @return the command pressed by the user */ public static Command show(String title, String text, Command[] cmds, int type, Image icon, long timeout) { return show(title, text, null, cmds, type, icon, timeout); } /** * Shows a modal prompt dialog with the given title and text. * * @param title The title for the dialog optionally null; * @param text the text displayed in the dialog * @param defaultCommand command to be assigned as the default command or null * @param cmds commands that are added to the form any click on any command * will dispose the form * @param type the type of the alert one of TYPE_WARNING, TYPE_INFO, * TYPE_ERROR, TYPE_CONFIRMATION or TYPE_ALARM * @param icon the icon for the dialog, can be null * @param timeout a timeout after which null would be returned if timeout is 0 inifinite time is used * @return the command pressed by the user */ public static Command show(String title, String text, Command defaultCommand, Command[] cmds, int type, Image icon, long timeout) { return show(title, text, defaultCommand, cmds, type, icon, timeout, null); } /** * Shows a modal prompt dialog with the given title and text. * * @param title The title for the dialog optionally null; * @param text the text displayed in the dialog * @param cmds commands that are added to the form any click on any command * will dispose the form * @param type the type of the alert one of TYPE_WARNING, TYPE_INFO, * TYPE_ERROR, TYPE_CONFIRMATION or TYPE_ALARM * @param icon the icon for the dialog, can be null * @param timeout a timeout after which null would be returned if timeout is 0 inifinite time is used * @param transition the transition installed when the dialog enters/leaves * @return the command pressed by the user */ public static Command show(String title, String text, Command[] cmds, int type, Image icon, long timeout, Transition transition) { return show(title, text, null, cmds, type, icon, timeout, transition); } /** * Shows a modal prompt dialog with the given title and text.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -