/** * 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. * * SwingBinaryLightImpl.java - 2 juil. 2013 */ package fr.imag.adele.apam.test.lights.binarylight; import java.awt.Color; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import fr.imag.adele.apam.test.lights.devices.BinaryLight; import fr.imag.adele.apam.test.lights.devices.messages.LightStatusChanged; /** * @author thibaud * */ public class SwingBinaryLightImpl extends BinaryLightImpl implements BinaryLight { private static Logger logger = LoggerFactory .getLogger(SwingBinaryLightImpl.class); private javax.swing.JFrame frame; private javax.swing.JLabel light; private String name = "APAM Simple Binary Light"; private String myLocation; private String myName; /** */ public SwingBinaryLightImpl() { super(false); } @Override public LightStatusChanged fireLightStatus() { return new LightStatusChanged(currentStatus); } @Override public String getLocation() { return myLocation; } @Override public String getName() { return myName; } private void initComponents() { frame.setSize(100, 80); light = new javax.swing.JLabel(); light.setOpaque(true); light.setText(myLocation); setLightOff(); frame.setLayout(new java.awt.BorderLayout()); frame.add(light, java.awt.BorderLayout.CENTER); } private void setLightOff() { light.setBackground(Color.GRAY); frame.repaint(); } private void setLightOn() { light.setBackground(Color.YELLOW); frame.repaint(); } /* * (non-Javadoc) * * @see * fr.imag.adele.apam.test.lights.devices.BinaryLight#setLightStatus(boolean * ) */ @Override public void setLightStatus(boolean newStatus) { currentStatus = newStatus; if (currentStatus) { setLightOn(); } else { setLightOff(); } fireLightStatus(); } @Override public void started() { logger.debug("A light named " + myName + " have been started in the " + myLocation); frame = new javax.swing.JFrame(name); initComponents(); frame.setVisible(true); } @Override public void stopped() { logger.debug("The light named " + myName + " have been stopped in the " + myLocation); if (frame != null) { frame.dispose(); frame = null; } } /* * (non-Javadoc) * * @see * fr.imag.adele.apam.test.lights.devices.BinaryLight#switchLightStatus() */ @Override public void switchLightStatus() { if (currentStatus) { currentStatus = false; } else { currentStatus = true; } this.setLightStatus(currentStatus); fireLightStatus(); } }