123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
- package eieruhr;
-
- import controller.EieruhrController;
- import java.awt.Dimension;
- import java.beans.PropertyChangeEvent;
- import java.beans.PropertyChangeListener;
- import java.lang.System.Logger;
- import java.util.Observable;
- import java.util.Observer;
- import java.util.concurrent.CopyOnWriteArrayList;
- import javax.swing.JComponent;
- import model.Model;
- import view.View;
-
- /**
- * Builder Class
- * @author Apollo
- */
- public class Fassade extends JComponent implements PropertyChangeListener, Observer
- {
- Dimension preferredSize;
- Dimension minimumSize;
- private static Logger log;
-
- private static Model model;
- private static View view;
- private static EieruhrController controller;
-
- private CopyOnWriteArrayList<TimerListener> listenerListe;
- private static int neu,alt;
-
- public Fassade()
- {
- minimumSize = new Dimension(100,50);
- preferredSize = new Dimension(200,100);
-
- model = new Model();
- view = new View();
- controller = new EieruhrController(view, model);
- controller.registerEvents();
- registerEvents();
-
- this.listenerListe = new CopyOnWriteArrayList<TimerListener>();
-
- alt = 0;
- }
-
- public void setZahl(int x)
- {
- model.setStartZahl(x);
- }
-
- public int getZahl()
- {
- return model.getZahl();
- }
-
- public Dimension getPreferredSize()
- {
- return preferredSize;
- }
-
- public Dimension getMinimumSize()
- {
- return minimumSize;
- }
-
- public void isWarten(boolean warten)
- {
- if(warten) {
- model.isWarten();
- }
- }
-
- public void isWeiterlaufen(boolean weiter){
- if(weiter) {
- model.isWeiterlaufen();
- }
- }
-
- public void starten()
- {
- model.start();
- }
-
- public void setaktuelleZahl()
- {
- neu = model.getZahl();
- this.firePropertyChange("aktuelle Zahl", alt, neu);
- alt = neu;
- }
-
- public void propertyChange(PropertyChangeEvent evt)
- {
- Object obj = evt.getNewValue();
- if (obj instanceof Boolean)
- {
- // Reaktion auf die Nachricht:
- this.starten();
- }
- }
-
- public synchronized void addEigenerListener(TimerListener horcher)
- {
- listenerListe.add(horcher);
- }
-
- public synchronized void removeEignerListener(TimerListener horcher)
- {
- listenerListe.remove(horcher);
- }
-
- public void fireTimerEvent(TimerEvent evt)
- {
- listenerListe.forEach(listener -> listener.timerabgelaufen(evt));
- }
-
- public void registerEvents()
- {
- model.addObserver(this);
- }
-
- @Override
- public void update(Observable arg0, Object arg1)
- {
- if(model.getZahl() == 0)
- {
- fireTimerEvent(new TimerEvent(this));
- }
- else
- {
- setaktuelleZahl();
- }
- }
- }
|