package eu.dnetlib.dlms.swing.wizard;


import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;

abstract public class MainStepPanel<T extends DialogResult> extends JPanel {

	private static final long serialVersionUID = 5638106348586004389L;
	protected T result;

	public MainStepPanel(T result) {
		super();
		this.result = result;
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		setAlignmentX(LEFT_ALIGNMENT);
		setAlignmentY(TOP_ALIGNMENT);
	}
	
	public void redraw() {
		removeAll();
		add(getComponentTitle());
		add(Box.createVerticalStrut(20));
		add(getForm());
		repaint();
	}

	abstract public String getTitle();
	abstract public JComponent getForm();
	abstract public void executeStep();
	abstract public void abortStep();

	public T getResult() {
		return result;
	}
	
	private JComponent getComponentTitle() {
		JLabel l = new JLabel(getTitle());
		l.setAlignmentX(LEFT_ALIGNMENT);
		return l;
	}
	
	
}
