/*
 * @(#)Dialog.java
 *
 * This file is part of webCDwriter - Network CD Writing.
 *
 * Copyright (C) 2001 Jörg P. M. Haeger
 *
 * webCDwriter is free software. See CDcreator.java for details.
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

abstract public class Dialog extends JDialog
{
	public Dialog(String title)
	{
		super(CDcreator.mainWin, i18n(title), true);

		addWindowListener(new WindowAdapter() {
			public void windowActivated(WindowEvent e) {
//				if (OKButton != null)
					OKButton.requestFocus();
			}
			public void windowClosing(WindowEvent e) {
				cancelPressed();
			}
		});
	}

	abstract protected boolean apply();

	public void cancelPressed()
	{
		canceled = true;
		this.setVisible(false);
	}

	protected JPanel createControlPanel()
	{
		return createControlPanel("continue");
	}

	protected JPanel createControlPanel(String OK)
	{
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout());

		JButton cancel = new JButton(i18n("cancel"));
		cancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				cancelPressed();
			}
		});
		p.add(cancel);

		OKButton = new JButton(i18n(OK));
		OKButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				OKPressed();
			}
		});
		p.add(OKButton);

		return p;
	}

	public static JPanel createLabelItemBox(
		JComponent label, JComponent item)
	{
		JPanel p = new JPanel();
		p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
		if (tab > 0)
		{
/*			Dimension d = label.getPreferredSize();
			if (tab > d.getWidth())
				d.setSize(tab, d.getHeight());
			label.setPreferredSize(d);
*/			label.setPreferredSize(new Dimension(tab, 20));
		}
		else
			label.setPreferredSize(new Dimension(120, 20));
		p.add(label);
		p.add(Box.createRigidArea(new Dimension(0, 10)));
//		item.setPreferredSize(new Dimension(100, 20));
		p.add(item);
		p.add(Box.createHorizontalGlue());
		p.setAlignmentX(LEFT_ALIGNMENT);
		return p;
	}

	protected static String i18n(String str)
	{
		return CDcreator.i18n(str);
	}

	protected void OKPressed()
	{
		if (apply())
			this.setVisible(false);
	}

	protected boolean wasCanceled()
	{
		return canceled;
	}

	private boolean canceled;
	protected JButton OKButton = null;
	protected static int tab = 0;
}
