package lectures.mvc.toolkit;
import util.annotations.WebDocuments;
import java.awt.GridLayout;
import java.beans.PropertyChangeListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JSlider;
import javax.swing.JTextField;
import bus.uigen.ObjectEditor;
import lectures.mvc.properties.ObservableBMISpreadsheet;
@WebDocuments({"Lectures/MvcToolkit.pptx", "Lectures/MvcToolkit.pdf", "Videos/MvcToolkit.avi"})
public class BMIFrameAndMVCComposer {
static JFrame frame = new JFrame("BMI Spreadsheet");
static JTextField heightField = new JTextField();
static JLabel heightLabel = new JLabel("Height:");
static JPanel heightPanel = new JPanel();
static JTextField weightField = new JTextField();
static JLabel weightLabel = new JLabel("Weight:");
static JPanel weightPanel = new JPanel();
static JSlider bmiSlider = new JSlider();
static JProgressBar bmiProgressBar = new JProgressBar();
static JPanel bmiPanel = new JPanel();
public static void main (String args[]) {
composeLabelledField(heightPanel, heightLabel, heightField);
composeLabelledField(weightPanel, weightLabel, weightField);
composeBMI();
composeFrame();
composeMVC();
}
public static void composeLabelledField(JPanel aPanel,
JLabel aLabel, JTextField aField) {
aPanel.setLayout(new GridLayout(1, 2)); aPanel.add(aLabel);
aPanel.add(aField);
}
public static void composeBMI() {
bmiPanel.setLayout(new GridLayout(1, 2));
bmiPanel.add(bmiSlider);
bmiPanel.add(bmiProgressBar);
}
public static void composeFrame() {
frame.setLayout(new GridLayout(3, 1));
frame.add(heightPanel);
frame.add(weightPanel);
frame.add(bmiPanel);
frame.setSize(250, 150);
frame.setVisible(true);
}
public static void composeMVC() {
ObservableBMISpreadsheet aBMISpreadsheet = new AnObservableBMISpreadsheet(1.77, 75);
new ABMISpreadsheetController(aBMISpreadsheet, heightField, weightField);
PropertyChangeListener bmiSpreadsheetView =
new ABMISpreadsheetView(heightField, weightField, bmiSlider, bmiProgressBar);
aBMISpreadsheet.addPropertyChangeListener(bmiSpreadsheetView);
ObjectEditor.edit(aBMISpreadsheet);
}
}