You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Fassade.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package eieruhr;
  7. import controller.EieruhrController;
  8. import java.awt.Dimension;
  9. import java.beans.PropertyChangeEvent;
  10. import java.beans.PropertyChangeListener;
  11. import java.lang.System.Logger;
  12. import java.util.Observable;
  13. import java.util.Observer;
  14. import java.util.concurrent.CopyOnWriteArrayList;
  15. import javax.swing.JComponent;
  16. import model.Model;
  17. import view.View;
  18. /**
  19. * Builder Class
  20. * @author Apollo
  21. */
  22. public class Fassade extends JComponent implements PropertyChangeListener, Observer
  23. {
  24. Dimension preferredSize;
  25. Dimension minimumSize;
  26. private static Logger log;
  27. private static Model model;
  28. private static View view;
  29. private static EieruhrController controller;
  30. private CopyOnWriteArrayList<TimerListener> listenerListe;
  31. private static int neu,alt;
  32. public Fassade()
  33. {
  34. minimumSize = new Dimension(100,50);
  35. preferredSize = new Dimension(200,100);
  36. model = new Model();
  37. view = new View();
  38. controller = new EieruhrController(view, model);
  39. controller.registerEvents();
  40. registerEvents();
  41. this.listenerListe = new CopyOnWriteArrayList<TimerListener>();
  42. alt = 0;
  43. }
  44. public void setZahl(int x)
  45. {
  46. model.setStartZahl(x);
  47. }
  48. public int getZahl()
  49. {
  50. return model.getZahl();
  51. }
  52. public Dimension getPreferredSize()
  53. {
  54. return preferredSize;
  55. }
  56. public Dimension getMinimumSize()
  57. {
  58. return minimumSize;
  59. }
  60. public void isWarten(boolean warten)
  61. {
  62. if(warten) {
  63. model.isWarten();
  64. }
  65. }
  66. public void isWeiterlaufen(boolean weiter){
  67. if(weiter) {
  68. model.isWeiterlaufen();
  69. }
  70. }
  71. public void starten()
  72. {
  73. model.start();
  74. }
  75. public void setaktuelleZahl()
  76. {
  77. neu = model.getZahl();
  78. this.firePropertyChange("aktuelle Zahl", alt, neu);
  79. alt = neu;
  80. }
  81. public void propertyChange(PropertyChangeEvent evt)
  82. {
  83. Object obj = evt.getNewValue();
  84. if (obj instanceof Boolean)
  85. {
  86. // Reaktion auf die Nachricht:
  87. this.starten();
  88. }
  89. }
  90. public synchronized void addEigenerListener(TimerListener horcher)
  91. {
  92. listenerListe.add(horcher);
  93. }
  94. public synchronized void removeEignerListener(TimerListener horcher)
  95. {
  96. listenerListe.remove(horcher);
  97. }
  98. public void fireTimerEvent(TimerEvent evt)
  99. {
  100. listenerListe.forEach(listener -> listener.timerabgelaufen(evt));
  101. }
  102. public void registerEvents()
  103. {
  104. model.addObserver(this);
  105. }
  106. @Override
  107. public void update(Observable arg0, Object arg1)
  108. {
  109. if(model.getZahl() == 0)
  110. {
  111. fireTimerEvent(new TimerEvent(this));
  112. }
  113. else
  114. {
  115. setaktuelleZahl();
  116. }
  117. }
  118. }