/* * MainWindow.java * * Created on September 1, 2005, 2:48 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package baby.view; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.UIManager; import org.jdesktop.swingx.JXImagePanel; import org.jdesktop.swingx.JXPanel; /** * * @author rbair */ public class MainWindow extends JFrame { private JButton submitButton; private BannerPanel bannerPanel; private JXPanel contentPanel; private CardLayout cards; private MainWindowPM pm; /** Creates a new instance of MainWindow */ public MainWindow(MainWindowPM pm) { super("Every Baby Needs a Name"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { //do nothing } this.pm = pm; createComponents(); addListeners(); } private void createComponents() { setLayout(new BorderLayout()); bannerPanel = new BannerPanel(); bannerPanel.setTitle("Give the baby a name!"); bannerPanel.setSubtitle("And while you're at it, give it a gender and birthdate too!"); bannerPanel.setBorder(BorderFactory.createEmptyBorder(12, 12, 11, 11)); add(bannerPanel, BorderLayout.NORTH); contentPanel = new JXImagePanel(); cards = new CardLayout(); contentPanel.setLayout(cards); SurveyPanel surveyPanel = new SurveyPanel(pm.getSurveyPresentationModel()); contentPanel.add(surveyPanel, "SURVEY_PANEL"); JXPanel submittingPanel = new JXPanel(); contentPanel.add(submittingPanel, "SUBMITTING_PANEL"); ResultsPanel resultsPanel = new ResultsPanel(pm.getResultsPresentationModel()); contentPanel.add(resultsPanel, "RESULTS_PANEL"); add(contentPanel, BorderLayout.CENTER); submitButton = new JButton(pm.getSubmitAction()); JXPanel buttonPanel = new JXPanel(); buttonPanel.setLayout(new GridBagLayout()); buttonPanel.add(submitButton, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(17, 12, 11, 11), 0, 0)); add(buttonPanel, BorderLayout.SOUTH); setSize(new Dimension(600, 330)); } private void addListeners() { //add a listener to pay attention to survey state changes pm.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { switch (pm.getSubmitionState()) { case FILLING_DATA: cards.show(contentPanel, "SURVEY_PANEL"); break; case SUBMITTING: cards.show(contentPanel, "SUBMITTING_PANEL"); break; case FINISHED: cards.show(contentPanel, "RESULTS_PANEL"); break; default: System.err.println("Illegal state received: " + pm.getSubmitionState()); } } }); } }