0N/A/*
2362N/A * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
2362N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
2362N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/Apackage sun.awt.windows;
0N/A
0N/Aimport java.util.*;
0N/Aimport java.awt.*;
0N/Aimport java.awt.peer.*;
0N/A
0N/Aimport sun.awt.*;
0N/Aimport sun.awt.im.*;
0N/A
0N/Aclass WDialogPeer extends WWindowPeer implements DialogPeer {
0N/A // Toolkit & peer internals
0N/A
0N/A // Platform default background for dialogs. Gets set on target if
0N/A // target has none explicitly specified.
0N/A final static Color defaultBackground = SystemColor.control;
0N/A
0N/A // If target doesn't have its background color set, we set its
0N/A // background to platform default.
0N/A boolean needDefaultBackground;
0N/A
0N/A WDialogPeer(Dialog target) {
0N/A super(target);
0N/A
0N/A InputMethodManager imm = InputMethodManager.getInstance();
0N/A String menuString = imm.getTriggerMenuString();
0N/A if (menuString != null)
0N/A {
0N/A pSetIMMOption(menuString);
0N/A }
0N/A }
0N/A
1971N/A native void createAwtDialog(WComponentPeer parent);
1971N/A void create(WComponentPeer parent) {
1971N/A preCreate(parent);
1971N/A createAwtDialog(parent);
1971N/A }
1971N/A
0N/A native void showModal();
0N/A native void endModal();
0N/A
0N/A void initialize() {
0N/A Dialog target = (Dialog)this.target;
0N/A // Need to set target's background to default _before_ a call
0N/A // to super.initialize.
0N/A if (needDefaultBackground) {
0N/A target.setBackground(defaultBackground);
0N/A }
0N/A
0N/A super.initialize();
0N/A
0N/A if (target.getTitle() != null) {
0N/A setTitle(target.getTitle());
0N/A }
0N/A setResizable(target.isResizable());
0N/A }
0N/A
0N/A protected void realShow() {
0N/A Dialog dlg = (Dialog)target;
0N/A if (dlg.getModalityType() != Dialog.ModalityType.MODELESS) {
0N/A showModal();
0N/A } else {
0N/A super.realShow();
0N/A }
0N/A }
0N/A
0N/A public void hide() {
0N/A Dialog dlg = (Dialog)target;
0N/A if (dlg.getModalityType() != Dialog.ModalityType.MODELESS) {
0N/A endModal();
0N/A } else {
0N/A super.hide();
0N/A }
0N/A }
0N/A
0N/A public void blockWindows(java.util.List<Window> toBlock) {
0N/A for (Window w : toBlock) {
1976N/A WWindowPeer wp = (WWindowPeer)AWTAccessor.getComponentAccessor().getPeer(w);
0N/A if (wp != null) {
0N/A wp.setModalBlocked((Dialog)target, true);
0N/A }
0N/A }
0N/A }
0N/A
0N/A public Dimension getMinimumSize() {
0N/A if (((Dialog)target).isUndecorated()) {
0N/A return super.getMinimumSize();
0N/A } else {
0N/A return new Dimension(getSysMinWidth(), getSysMinHeight());
0N/A }
0N/A }
0N/A
106N/A @Override
106N/A boolean isTargetUndecorated() {
106N/A return ((Dialog)target).isUndecorated();
106N/A }
106N/A
0N/A public void reshape(int x, int y, int width, int height) {
0N/A if (((Dialog)target).isUndecorated()) {
1158N/A super.reshape(x, y, width, height);
0N/A } else {
1158N/A reshapeFrame(x, y, width, height);
0N/A }
0N/A }
0N/A
0N/A /* Native create() peeks at target's background and if it's null
0N/A * calls this method to arrage for default background to be set on
0N/A * target. Can't make the check in Java, since getBackground will
0N/A * return owner's background if target has none set.
0N/A */
0N/A private void setDefaultColor() {
0N/A // Can't call target.setBackground directly, since we are
0N/A // called on toolkit thread. Can't schedule a Runnable on the
0N/A // EventHandlerThread because of the race condition. So just
0N/A // set a flag and call target.setBackground in initialize.
0N/A needDefaultBackground = true;
0N/A }
0N/A
0N/A native void pSetIMMOption(String option);
0N/A void notifyIMMOptionChange(){
0N/A InputMethodManager.getInstance().notifyChangeRequest((Component)target);
0N/A }
0N/A}