package se20.coursework; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JTextArea; /** * Basis for screens used in the TicketMaster application. * * @author Rick Denoff * @version 1.0 (2006-10-29) */ public abstract class Screen extends JPanel { private JButton continueButton; private JButton cancelButton; /** * Creates a Screen. */ public Screen() { createButtons(); arrangeButtons(); } /** * Adds instructions on how to use this Screen. * * @param helpText Instructions to be added */ public void addHelp(String helpText) { JTextArea help = new JTextArea(helpText); help.setOpaque(false); help.setEditable(false); help.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); add(help, BorderLayout.NORTH); } /** * Adds the main component to this Screen (typically a form of some kind). * * @param component Component to be added */ public void addMainComponent(JComponent component) { add(component, BorderLayout.CENTER); } /** * Specifies how clicks on this Screen's Continue button are handled. * * @param listener Object that will handle button clicks */ public void setContinueButtonHandler(ActionListener listener) { continueButton.addActionListener(listener); } /** * Specifies how clicks on this Screen's Cancel button are handled. * * @param listener Object that will handle button clicks */ public void setCancelButtonHandler(ActionListener listener) { cancelButton.addActionListener(listener); } /** * Clears this Screen of data. */ public abstract void clearData(); /** * Creates the buttons displayed at the foot of this Screen. */ private void createButtons() { Font buttonFont = new Font("Sans", Font.BOLD, 16); continueButton = new JButton("Continue"); continueButton.setFont(buttonFont); cancelButton = new JButton("Cancel"); cancelButton.setFont(buttonFont); } /** * Arranges this Screen's buttons. */ private void arrangeButtons() { setLayout(new BorderLayout()); JPanel buttonPanel = new JPanel(); buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); buttonPanel.add(continueButton); buttonPanel.add(cancelButton); add(buttonPanel, BorderLayout.SOUTH); } }