Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Title: Dishwasher Sample
- //Version:
- //Copyright: Copyright (c) 2009
- //Author: Eldad Palachi
- //Company: IBM Rational
- //Description: GUI Components for Dishwasher sample (Observer pattern)
- // IMPORTANT: This was built using Borland JBuilder's
- // XYLayout manager. Therefore, it is required
- // to use jbcl3.0.jar for compilation and
- // execution of this GUI.
- import java.awt.*;
- import javax.swing.*;
- import java.awt.event.*;
- import javax.swing.event.*;
- import com.borland.jbcl.layout.*;
- import com.borland.jbcl.control.*;
- // Rhapsody's oxf framework
- import com.ibm.rational.rhapsody.oxf.*;
- import Default.*;
- public class DishwasherFrame extends JFrame implements Observer {
- // link with events in order to register them in the animation browser
- // This is required for injecting event in animation right from the start
- static {
- // Registering Events
- try {
- Class.forName("Default.evStart");
- Class.forName("Default.evOpen");
- Class.forName("Default.evClose");
- Class.forName("Default.evIntensive");
- Class.forName("Default.evQuick");
- Class.forName("Default.evNormal");
- Class.forName("Default.evService");
- Class.forName("Default.evJetOff");
- Class.forName("Default.evJetPulse");
- Class.forName("Default.evJetSpray");
- Class.forName("Default.evHeaterOn");
- Class.forName("Default.evHeaterOff");
- Class.forName("Default.evTankFill");
- Class.forName("Default.evTankDrain");
- Class.forName("Default.evFull");
- Class.forName("Default.evEmpty");
- }
- catch(Exception e) {
- System.err.println(e.toString());
- e.printStackTrace(System.err);
- }
- }
- XYLayout xYLayout1 = new XYLayout();
- JToggleButton doorBtn = new JToggleButton();
- JButton serviceBtn = new JButton();
- JLabel faulty = new JLabel();
- JLabel jLabel1 = new JLabel();
- JTextField cyclesCounter = new JTextField();
- JPanel modePanel = new JPanel();
- JLabel modeLabel = new JLabel();
- XYLayout xYLayout2 = new XYLayout();
- JRadioButton normalRb = new JRadioButton();
- JRadioButton quickRb = new JRadioButton();
- JRadioButton intenseRb = new JRadioButton();
- XYLayout xYLayout3 = new XYLayout();
- JPanel modePanel1 = new JPanel();
- JLabel statusLabel = new JLabel();
- JProgressBar statusProgress = new JProgressBar();
- JTextField statusField = new JTextField();
- JButton washBtn = new JButton();
- Dishwasher dishW;
- public DishwasherFrame() {
- try {
- jbInit();
- Thread.currentThread().setName("GUI Thread");
- RiJMainThread.OXFInit();
- dishW = new Dishwasher(RiJMainThread.instance());
- dishW.setItsObserver(this);
- dishW.startBehavior();
- RiJMainThread.OXFStart(true);
- update(0, 0);
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- private void jbInit() throws Exception {
- doorBtn.setToolTipText("Press to open/close door");
- doorBtn.setText("Open/Close");
- doorBtn.setHorizontalAlignment(SwingConstants.LEFT);
- doorBtn.setVerticalAlignment(SwingConstants.TOP);
- doorBtn.addItemListener(new ItemListener() {
- public void itemStateChanged(ItemEvent e) {
- doorBtn_itemStateChanged(e);
- }
- });
- this.setResizable(false);
- this.setTitle("IBM Rational Dishwasher");
- xYLayout1.setHeight(496);
- xYLayout1.setWidth(463);
- this.getContentPane().setLayout(xYLayout1);
- serviceBtn.setEnabled(false);
- serviceBtn.setToolTipText("Press to perform service action");
- serviceBtn.setActionCommand("service");
- serviceBtn.setText("SERVICE");
- serviceBtn.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- serviceBtn_actionPerformed(e);
- }
- });
- faulty.setEnabled(false);
- faulty.setForeground(Color.red);
- faulty.setToolTipText("Fault indicator");
- faulty.setText("FAULT");
- jLabel1.setText("cycles");
- cyclesCounter.setBackground(Color.lightGray);
- cyclesCounter.setToolTipText("How many cycles since last service");
- cyclesCounter.setEditable(false);
- cyclesCounter.setText("0");
- modePanel.setBorder(BorderFactory.createLoweredBevelBorder());
- modePanel.setLayout(xYLayout2);
- modeLabel.setFont(new java.awt.Font("Dialog", 2, 12));
- modeLabel.setText("mode");
- normalRb.setToolTipText("normal washing mode");
- normalRb.setText("normal");
- normalRb.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- normalRb_actionPerformed(e);
- }
- });
- intenseRb.setToolTipText("intensive washing mode");
- intenseRb.setText("intensive");
- intenseRb.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- intenseRb_actionPerformed(e);
- }
- });
- quickRb.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- quickRb_actionPerformed(e);
- }
- });
- quickRb.setToolTipText("quick washing mode");
- quickRb.setText("quick");
- // Group radio buttons
- ButtonGroup group = new ButtonGroup();
- statusProgress.setToolTipText("Progress indicator");
- statusField.setToolTipText("Current status");
- washBtn.setToolTipText("Press to start washing dishes");
- group.add(normalRb);
- group.add(quickRb);
- group.add(intenseRb);
- modePanel1.setLayout(xYLayout3);
- modePanel1.setBorder(BorderFactory.createLoweredBevelBorder());
- statusLabel.setFont(new java.awt.Font("Dialog", 2, 12));
- statusLabel.setText("status");
- statusField.setEditable(false);
- statusField.setText("IDLE");
- washBtn.setText("Wash");
- washBtn.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- washBtn_actionPerformed(e);
- }
- });
- this.getContentPane().add(cyclesCounter, new XYConstraints(386, 442, 56, -1));
- this.getContentPane().add(serviceBtn, new XYConstraints(19, 442, 88, 21));
- this.getContentPane().add(faulty, new XYConstraints(114, 442, -1, 21));
- this.getContentPane().add(jLabel1, new XYConstraints(347, 442, -1, 21));
- this.getContentPane().add(doorBtn, new XYConstraints(6, 112, 449, 308));
- this.getContentPane().add(modePanel1, new XYConstraints(108, 5, 166, 95));
- modePanel1.add(statusLabel, new XYConstraints(47, 0, -1, -1));
- modePanel1.add(statusProgress, new XYConstraints(7, 23, 149, -1));
- modePanel1.add(statusField, new XYConstraints(7, 55, 147, 19));
- this.getContentPane().add(modePanel, new XYConstraints(280, 4, 164, 95));
- modePanel.add(modeLabel, new XYConstraints(47, 0, -1, -1));
- modePanel.add(normalRb, new XYConstraints(15, 20, -1, -1));
- modePanel.add(quickRb, new XYConstraints(15, 40, -1, -1));
- modePanel.add(intenseRb, new XYConstraints(15, 60, -1, -1));
- this.getContentPane().add(washBtn, new XYConstraints(20, 9, -1, -1));
- }
- void doorBtn_itemStateChanged(ItemEvent e) {
- if (!dishW.isIn(Dishwasher.doorOpened) &&
- !dishW.isIn(Dishwasher.maintenanceRequired) )
- dishW.gen(new evOpen());
- else
- dishW.gen(new evClose());
- }
- public int getHeight() {
- return xYLayout1.getHeight();
- }
- public int getWidth() {
- return xYLayout1.getWidth();
- }
- void intenseRb_actionPerformed(ActionEvent e) {
- dishW.gen(new evIntensive());
- }
- void normalRb_actionPerformed(ActionEvent e) {
- dishW.gen(new evNormal());
- }
- void quickRb_actionPerformed(ActionEvent e) {
- dishW.gen(new evQuick());
- }
- void washBtn_actionPerformed(ActionEvent e) {
- dishW.gen(new evStart());
- }
- void serviceBtn_actionPerformed(ActionEvent e) {
- dishW.gen(new evService());
- }
- // observer interface implementation
- public void update(int maxEstTime, int elapsedTime) {
- updateModeView();
- updateServiceBtn();
- updateStatus(maxEstTime, elapsedTime);
- updateWashBtn();
- }
- void updateModeView() {
- normalRb.setSelected(dishW.isIn(Dishwasher.normalMode));
- quickRb.setSelected(dishW.isIn(Dishwasher.quickMode));
- intenseRb.setSelected(dishW.isIn(Dishwasher.intensiveMode));
- boolean disable = !(dishW.isIn(Dishwasher.off));
- quickRb.setEnabled(!disable);
- normalRb.setEnabled(!disable);
- intenseRb.setEnabled(!disable);
- }
- void updateServiceBtn() {
- serviceBtn.setEnabled(dishW.isIn(Dishwasher.maintenanceRequired));
- faulty.setEnabled(dishW.isIn(Dishwasher.maintenanceRequired));
- Integer dummy = new Integer(dishW.getCycles());
- cyclesCounter.setText(dummy.toString());
- }
- void updateWashBtn() {
- washBtn.setEnabled(dishW.isIn(Dishwasher.off));
- }
- void updateStatus(int maxEstTime, int elapsedTime) {
- String statusText = "";
- int maxVal = 100, val = 0;
- if (dishW.isIn(Dishwasher.off)) {
- statusText = "IDLE";
- }
- else if (dishW.isIn(Dishwasher.filling)) {
- statusText = "Filling...";
- }
- else if (dishW.isIn(Dishwasher.rinsing)) {
- statusText = "Rinsing...";
- }
- else if (dishW.isIn(Dishwasher.washing)) {
- statusText = "Washing...";
- }
- else if (dishW.isIn(Dishwasher.draining)) {
- statusText = "Draining...";
- }
- else if (dishW.isIn(Dishwasher.drying)) {
- statusText = "Drying...";
- }
- else if (dishW.isIn(Dishwasher.doorOpened)) {
- statusText = "Door Open";
- }
- statusField.setText(statusText);
- statusProgress.setMaximum(maxEstTime);
- statusProgress.setValue(elapsedTime);
- }
- public static void main(String[] args) {
- System.out.println("Initializing GUI...");
- DishwasherFrame dg = new DishwasherFrame();
- dg.setBounds(50, 50, dg.getWidth(), dg.getHeight());
- dg.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- System.exit(1);
- }
- });
- dg.setVisible(true);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement