/* * CelsiusPanel.java */ import java.awt.event.*; import java.util.Observable; /** * Concrete implementation of the View/Controller panel. Implements the * Observer interface (so the View can observe changes to the Model), and * registers 3 controller: 2 buttons that allow the user to increment or * decrement the temp respectively, and the TextField that allows user to * enter an arbitrary temp into the data model. */ public class CelsiusPanel extends TemperaturePanel { /** * Construct a new CelsiusPanel instance. Initializes * display with the current state of data model, and * prepares Controller objects for use. */ public CelsiusPanel(TemperatureModel model) { super("Celsius Temperature",model); setDisplay(""+model.getC()); // initialize the TF w/ the current state of the data model // register listener objects // that will implement // Controller functionality addRaiseListener(new RaiseListener()); addLowerListener(new LowerListener()); addDisplayListener(new DisplayListener()); } /** * Implements the java.util.Observer interface. This method * is invoked by the model whenever its state changes and it * notifies Observers (Views) of the state change. * * Here, the method merely updates the view rendered * in the TextField window displayed to the user. * * @param t model * @param o argument */ public void update(Observable t, Object o) { setDisplay(""+model().getC()); // <-- MVC method } /** * Listener object that is linked to the "Raise" button * during the construction of Panel object. Implements * Controller functionality - allows the user to "raise" * the temperature of the data model by 1 degree. */ class RaiseListener implements ActionListener { public void actionPerformed(ActionEvent e) { model().setC(model().getC()+1.0); // <-- MVC method } } /** * Listener object that is linked to the "Lower" button * during the construction of Panel object. Implements * Controller functionality - allows the user to "lower" * the temperature of the data model by 1 degree. */ class LowerListener implements ActionListener { public void actionPerformed(ActionEvent e) { model().setC(model().getC()-1.0); // <-- MVC method } } /** * Listener object that is linked to the "display" TextField * during the construction of the Panel object. Implements * Controller functionality - allows the user to assign an * arbitrary temperature to the data model. */ class DisplayListener implements ActionListener { public void actionPerformed(ActionEvent e) { double value = getDisplay(); model().setC(value); // <-- MVC method, update the data model } } }
Instant Update
Use MVC to make your data and spreadsheets viewable online. Users can make charts and graphs that will be udpated with any changes you make.Related Reading
More Insights
INFO-LINK
To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy. | |