public AWTDialog(Frame frame, String title, Image icon, boolean allowCancel) {
		super(frame, title, true);
		setLayout(new BorderLayout());
		Panel topPanel = new Panel();
		Panel buttonPanel = new Panel();
		Panel dataPanel = new Panel();
		topPanel.setLayout(new BorderLayout());
		buttonPanel.setLayout(new FlowLayout());
		dataPanel.setLayout(new BorderLayout());
		messageArea = new AWTMessageCanvas();
		dataPanel.add(messageArea, BorderLayout.CENTER);
		initButtonPanel(buttonPanel, allowCancel);
		initDataPanel(dataPanel);
		topPanel.add(new AWTIconCanvas(icon), BorderLayout.WEST);
		topPanel.add(dataPanel, BorderLayout.CENTER);
		add(topPanel, BorderLayout.CENTER);
		add(buttonPanel, BorderLayout.SOUTH);
		Rectangle bounds = frame.getBounds();
		int cx = bounds.x + bounds.width / 2;
		int cy = bounds.y + bounds.height / 2;
		setBounds(cx - WIDTH / 2, cy - HEIGHT / 2, WIDTH, HEIGHT);
		validate();
	}