Package fr.imag.adele.apam.tutorials.temperature.adeletech.services

Source Code of fr.imag.adele.apam.tutorials.temperature.adeletech.services.AdeleTechHeatingApplication

/**
* Copyright 2011-2013 Universite Joseph Fourier, LIG, ADELE team
*   Licensed under the Apache License, Version 2.0 (the "License");
*   you may not use this file except in compliance with the License.
*   You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software
*   distributed under the License is distributed on an "AS IS" BASIS,
*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*   See the License for the specific language governing permissions and
*   limitations under the License.
*
* AdeleTechHeatingApplication.java - 9 juil. 2013
*/
package fr.imag.adele.apam.tutorials.temperature.adeletech.services;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import fr.imag.adele.apam.tutorials.temperature.devices.Heater;
import fr.imag.adele.apam.tutorials.temperature.devices.TemperatureSensor;

/**
* @author thibaud
*
*/
public class AdeleTechHeatingApplication  implements ChangeListener, ActionListener{
 
  JFrame mainWindow;
  String myName;
  JLabel labelTemperature;
  JLabel labelHeater;
  JSlider userSetting;
  JTextField labelSetting;
 
  TemperatureSensor mySensor;
  Heater myHeater;
 
 
  public void start() {
    System.out.println("GenericHeatingApplication : "
        +myName+".start()");
    mainWindow=new JFrame(myName);
    labelTemperature =new JLabel();
    labelHeater = new JLabel();
    labelSetting=new JTextField();
   
    initComponents();
    mainWindow.pack();
    mainWindow.setVisible(true);
  }
 
  public void stop() {
    System.out.println("GenericHeatingApplication : "
        +myName+".stop()");
    if(mainWindow != null)
        mainWindow.dispose();
    mainWindow = null;
   
  }
 
  void initComponents() {

    mainWindow.setLayout(new BoxLayout(mainWindow.getContentPane(), BoxLayout.Y_AXIS));
   
    JPanel panelSensor = new JPanel();
    panelSensor.setBorder(BorderFactory.createTitledBorder("Temperature Sensor"));
    labelTemperature.setPreferredSize(new Dimension(200,30));
    updateTemperature();
    panelSensor.add(labelTemperature);
   
   
    JPanel panelUserSetting = new JPanel();
    panelUserSetting.setBorder(BorderFactory.createTitledBorder("User Temperature Setting"));
    panelUserSetting.setLayout(new BoxLayout(panelUserSetting, BoxLayout.Y_AXIS));
    userSetting = new JSlider(10,40,21);
    userSetting.addChangeListener(this);
    labelSetting.setEnabled(false);
    labelSetting.setText("21°C");
    labelSetting.setHorizontalAlignment(JTextField.CENTER);
    panelUserSetting.add(labelSetting);
    panelUserSetting.add(userSetting);
 
   
   
    JPanel panelHeater = new JPanel();
    panelHeater.setBorder(BorderFactory.createTitledBorder("Heater Activity"));
    labelHeater.setPreferredSize(new Dimension(200,30));
    updateHeater();
    panelHeater.add(labelHeater);

    JPanel panelTemp = new JPanel();
    JButton refreshStatus = new JButton("Refresh Status");
    refreshStatus.setPreferredSize(new Dimension(200,30));
    refreshStatus.addActionListener(this);
    panelTemp.add(refreshStatus);
   
    mainWindow.add(panelSensor);
    mainWindow.add(panelUserSetting);
    mainWindow.add(panelHeater);
    mainWindow.add(panelTemp);
  }
 
  void updateTemperature() {
    if (mySensor!=null)
      labelTemperature.setText(mySensor.getCurrentTemperature()+"°C");
    else labelTemperature.setText("No Temperature Sensor");
  }
 
  void updateHeater() {
    if(myHeater!= null) {
      if (mySensor!=null) {
        if (mySensor.getCurrentTemperature()>=userSetting.getValue()) {
          System.out.println("Current temperature is too high, turning off the Heater");
          myHeater.turnOff();       
        } else {
          System.out.println("Current temperature is too low, turning on the Heater");
          myHeater.turnOn();       
        }
      }
      if(myHeater.getStatus())
        labelHeater.setText("Heater is on");
      else labelHeater.setText("Heater is off");
    }
    else labelHeater.setText("No Heater");
  }

  /* (non-Javadoc)
   * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
   */
  public void stateChanged(ChangeEvent e) {
    labelSetting.setText(userSetting.getValue()+"°C");
    updateTemperature();
    updateHeater();
  }

  /* (non-Javadoc)
   * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
   */
  public void actionPerformed(ActionEvent e) {
    updateTemperature();
    updateHeater();
   
  }
 

}
TOP

Related Classes of fr.imag.adele.apam.tutorials.temperature.adeletech.services.AdeleTechHeatingApplication

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.