package sun.awt.windows;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.SystemColor;
import java.awt.Window;
import java.awt.peer.DialogPeer;
import sun.awt.AWTAccessor;
import sun.awt.im.InputMethodManager;
final class WDialogPeer extends WWindowPeer implements DialogPeer {
static final Color defaultBackground = SystemColor.control;
WDialogPeer(Dialog target) {
super(target);
InputMethodManager imm = InputMethodManager.getInstance();
String menuString = imm.getTriggerMenuString();
if (menuString != null)
{
pSetIMMOption(menuString);
}
}
native void createAwtDialog(WComponentPeer parent);
@Override
void create(WComponentPeer parent) {
preCreate(parent);
createAwtDialog(parent);
}
native void showModal();
native void endModal();
@Override
void initialize() {
Dialog target = (Dialog)this.target;
if (!target.isBackgroundSet()) {
target.setBackground(defaultBackground);
}
super.initialize();
if (target.getTitle() != null) {
setTitle(target.getTitle());
}
setResizable(target.isResizable());
}
@Override
protected void realShow() {
Dialog dlg = (Dialog)target;
if (dlg.getModalityType() != Dialog.ModalityType.MODELESS) {
showModal();
} else {
super.realShow();
}
}
@Override
@SuppressWarnings("deprecation")
void hide() {
Dialog dlg = (Dialog)target;
if (dlg.getModalityType() != Dialog.ModalityType.MODELESS) {
endModal();
} else {
super.hide();
}
}
@Override
public void blockWindows(java.util.List<Window> toBlock) {
for (Window w : toBlock) {
WWindowPeer wp = AWTAccessor.getComponentAccessor().getPeer(w);
if (wp != null) {
wp.setModalBlocked((Dialog)target, true);
}
}
}
@Override
public Dimension getMinimumSize() {
if (((Dialog)target).isUndecorated()) {
return super.getMinimumSize();
}
return new Dimension(scaleDownX(getSysMinWidth()),
scaleDownY(getSysMinHeight()));
}
@Override
boolean isTargetUndecorated() {
return ((Dialog)target).isUndecorated();
}
@Override
public void reshape(int x, int y, int width, int height) {
if (((Dialog)target).isUndecorated()) {
super.reshape(x, y, width, height);
} else {
reshapeFrame(x, y, width, height);
}
}
native void pSetIMMOption(String option);
void notifyIMMOptionChange(){
InputMethodManager.getInstance().notifyChangeRequest((Component)target);
}
}