/** * */ package fr.nantes.univ.alma.alarm.ui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.rmi.RemoteException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.WindowConstants; import fr.nantes.univ.alma.alarm.observer.Observer; import fr.nantes.univ.alma.alarm.ui.digitalClock.DigitalClock; import fr.nantes.univ.alma.common.remote.IAlarm; /** * @author bmael * */ public class MainWindow extends JFrame implements Observer { private static final long serialVersionUID = 7283810840315180224L; private IAlarm alarmClock; private DigitalClock digitalClock; private JPanel infoDisplayer; private JLabel alarmLabel; private JLabel ringingLabel; public MainWindow(IAlarm alarm){ this.alarmClock = alarm; this.digitalClock = new DigitalClock(); this.infoDisplayer = new JPanel(); this.infoDisplayer.setLayout(new GridLayout(0,5)); this.alarmLabel = new JLabel(); alarmLabel.setSize(25,25); this.ringingLabel = new JLabel(); ringingLabel.setSize(25,25); try { this.updateWindOn(this.alarmClock.isWindOn()); } catch (RemoteException e) { System.err.println("Unable to know if the alarm is wind on..."); e.printStackTrace(); } try { this.updateRinging(this.alarmClock.isRinging()); } catch (RemoteException e) { System.err.println("Unable to know if the alarm is ringing..."); e.printStackTrace(); } this.infoDisplayer.add(alarmLabel); this.infoDisplayer.add(ringingLabel); this.setLayout(new BorderLayout()); this.add(this.digitalClock, BorderLayout.CENTER); this.add(this.infoDisplayer, BorderLayout.SOUTH); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.setMinimumSize(new Dimension(225, 100)); this.setResizable(false); this.setLocationRelativeTo(null); this.pack(); this.setVisible(true); } @Override public void updateWindOn(boolean isWindOn) { if(isWindOn){ try { BufferedImage imgWindOn = ImageIO.read(new File(System.getProperty("user.dir") + "/bin/UIRessources/alarm-clock.png")); Image dimgWindOn = imgWindOn.getScaledInstance(25, 25, Image.SCALE_SMOOTH); ImageIcon alarmIcon = new ImageIcon(dimgWindOn); this.alarmLabel.setIcon(alarmIcon); this.alarmLabel.setToolTipText("Will ring at: " + this.alarmClock.getRingingDate()); } catch (IOException e) { System.err.println("Couldn't find icons ressources..."); e.printStackTrace(); } } else { this.alarmLabel.setIcon(null); this.alarmLabel.setToolTipText(""); } this.alarmLabel.revalidate(); } @Override public void updateRinging(boolean isRinging) { if(isRinging){ try { BufferedImage imgRinging = ImageIO.read(new File(System.getProperty("user.dir") + "/bin/UIRessources/alarm-ringing.png")); Image dimgRinging = imgRinging.getScaledInstance(25, 25, Image.SCALE_SMOOTH); ImageIcon ringingIcon = new ImageIcon(dimgRinging); this.ringingLabel.setIcon(ringingIcon); } catch (IOException e) { System.err.println("Couldn't find icons ressources..."); e.printStackTrace(); } } else { this.ringingLabel.setIcon(null); } this.ringingLabel.revalidate(); } }