package presentation; import java.awt.*; import java.awt.event.*; import java.beans.*; import javax.swing.*; import reactor.*; public class ReactorPanel extends JPanel implements ActionListener { private Reactor reactor; public ReactorPanel() { // create reactor and a few listeners reactor = new Reactor(); reactor.addVetoableChangeListener(new Thermostat(reactor)); reactor.addPropertyChangeListener(new Alarm(reactor)); // create and listen to controls JButton incTemp = new JButton("INC TEMP"); incTemp.addActionListener(this); JButton decTemp = new JButton("DEC TEMP"); decTemp.addActionListener(this); Thermometer tempDisplay = new Thermometer(reactor); // add controls to the panel (order-dependent!) this.add(incTemp); this.add(tempDisplay); this.add(decTemp); } public void display() { JFrame frame = new JFrame(); Container cp = frame.getContentPane(); cp.add(this); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle("Reactor Control Panel"); frame.setSize(300, 500); frame.pack(); frame.setVisible(true); } public void actionPerformed(ActionEvent ae) { String cmmd = ae.getActionCommand(); if (cmmd == "INC TEMP") { try { reactor.setTemperature(reactor.getTemperature() + Reactor.DELTA); } catch(PropertyVetoException e) { JOptionPane.showMessageDialog(this, "Change vetoed"); } } else if (cmmd == "DEC TEMP") { try { reactor.setTemperature(reactor.getTemperature() - Reactor.DELTA); } catch(PropertyVetoException e) { JOptionPane.showMessageDialog(this, "Change vetoed"); } } } }