Class ControllerBase<T extends Controllable>

  • Type Parameters:
    T - Typ des Controllable (wird benötigt, um auf weitere Methoden zugreifen zu können, die nicht in Controllable definiert sind)
    All Implemented Interfaces:
    Controller
    Direct Known Subclasses:
    AlphaNumKeysController, BasicMenuController, CalcPathViewController, CalculationControllerBase, ConverterController, IEEEController

    public abstract class ControllerBase<T extends Controllable>
    extends Object
    implements Controller
    Basis für einen Controller, der einer Instanz von Controllable (z.B. eine View) eine Funktion gibt. Die wichtigsten Attribute, die benötigt werden um Zugriff auf die Bedienelemente des Controllables zu erhalten, werden im Konstruktor initialisiert und sind in allen Subklassen sichtbar.

    Subklassen müssen die Methoden initControls() und Controller.setActions() implementieren, um die Bedienelemente mit einer Funktion zu belegen.

    Jedem Controller kann nur ein einziges Controllable zugewiesen werden. Umgekehrt ist es möglich ein Controllable mit mehreren Controllern für verschiedene Funktionen zu verbinden.

    Since:
    Bitchanger 0.1.0
    Version:
    0.1.7
    Author:
    Tim Mühle
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected Map<String,​javafx.scene.control.Button> buttonMap
      Map, die alle Buttons des gekapselten Controllables enthält
      protected T controllable
      gekapseltes Controllable, dem durch diesen Controller eine Funktion gegeben wird
      protected Map<String,​javafx.scene.Node> nodeMap
      Map, die alle Nodes des gekapselten Controllables enthält, die eine Funktion erhalten und weder eine Instanz von Button noch von Textfeld sind
      protected Map<String,​javafx.scene.control.TextField> textFieldMap
      Map, die alle Textfelder des gekapselten Controllables enthält
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ControllerBase​(T controllable)
      Kapselt das übergebene Controllable und initialisiert die Maps mit den Bedienelementen mit Referenzen auf die zugehörigen Maps des Controllables.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addAccelerator​(javafx.scene.control.Button button, javafx.event.EventType<javafx.scene.input.KeyEvent> trigger, javafx.scene.input.KeyCombination... keyCombinations)  
      protected void addAccelerator​(javafx.scene.control.Button button, javafx.scene.input.KeyCombination... keyCombinations)  
      protected void addAccelerator​(javafx.scene.Scene scene, Runnable runnable, javafx.event.EventType<javafx.scene.input.KeyEvent> trigger, javafx.scene.input.KeyCombination... keyCombinations)  
      protected abstract void initControls()
      Initialisiert alle benötigten Bedienelemente mit Referenzen aus den zur Verfügung stehenden Maps.
      protected void simulateKeyEvents​(javafx.scene.control.Button source, javafx.scene.Node target, javafx.scene.Scene scene, String character, String text, javafx.scene.input.KeyCode keycode)
      Verhält sich wie simulateKeyEvents(Button, Node, Scene, String, String, KeyCode, boolean, boolean, boolean, boolean), bis auf dass die Parameter shiftDown, controlDown, altDown und metaDown alle den Wert false haben.
      protected void simulateKeyEvents​(javafx.scene.control.Button source, javafx.scene.Node target, javafx.scene.Scene scene, String character, String text, javafx.scene.input.KeyCode keycode, boolean shiftDown, boolean controlDown, boolean altDown, boolean metaDown)
      Simuliert den Druck der Taste auf einer Tastatur mit dem spezifischen keycode und feuert nacheinander die KeyEvents KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED und KeyEvent.KEY_RELEASED an den gewählten Empfänger target.
    • Field Detail

      • textFieldMap

        protected Map<String,​javafx.scene.control.TextField> textFieldMap
        Map, die alle Textfelder des gekapselten Controllables enthält
      • buttonMap

        protected Map<String,​javafx.scene.control.Button> buttonMap
        Map, die alle Buttons des gekapselten Controllables enthält
      • nodeMap

        protected Map<String,​javafx.scene.Node> nodeMap
        Map, die alle Nodes des gekapselten Controllables enthält, die eine Funktion erhalten und weder eine Instanz von Button noch von Textfeld sind
      • controllable

        protected final T extends Controllable controllable
        gekapseltes Controllable, dem durch diesen Controller eine Funktion gegeben wird
    • Constructor Detail

      • ControllerBase

        protected ControllerBase​(T controllable)
        Kapselt das übergebene Controllable und initialisiert die Maps mit den Bedienelementen mit Referenzen auf die zugehörigen Maps des Controllables.

        Nach der Initialisierung der allgemeinen Attribute wird die Methode initControls() aufgerufen.

        Parameters:
        controllable - Controllable, das mit diesem Controller eine Funktion erhält
    • Method Detail

      • initControls

        protected abstract void initControls()
        Initialisiert alle benötigten Bedienelemente mit Referenzen aus den zur Verfügung stehenden Maps.
      • simulateKeyEvents

        protected void simulateKeyEvents​(javafx.scene.control.Button source,
                                         javafx.scene.Node target,
                                         javafx.scene.Scene scene,
                                         String character,
                                         String text,
                                         javafx.scene.input.KeyCode keycode,
                                         boolean shiftDown,
                                         boolean controlDown,
                                         boolean altDown,
                                         boolean metaDown)
        Simuliert den Druck der Taste auf einer Tastatur mit dem spezifischen keycode und feuert nacheinander die KeyEvents KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED und KeyEvent.KEY_RELEASED an den gewählten Empfänger target. Wenn target den Wert null hat, werden die Events an die übergebene Scene scene weitergeleitet. Sind sowohl target als auch scene null, werden die Events an die Scene von controllable weitergeleitet, sofern controllable die Schnittstelle Viewable implementiert.

        Wenn die Parameter target und scene beide den Wert null haben und controllable nicht die Schnittstelle Viewable implementiert, werden keine Events gefeuert und die Methode hat keine weiteren Auswirkungen. Insbesondere wird auch keine Exception geworfen!

        Parameters:
        source - Quelle des Events, darf null sein
        target - Ziel des Events, darf null sein, wenn das Attribut controllable eine Instanz von Viewable ist
        scene - Scene, die die KeyEvents konsumiert, wenn target den Wert null hat. Darf null sein
        character - Zeichen oder Zeichenkette, die mit dem Event verbunden wird
        text - String, der den KeyCode beschreibt
        keycode - KeyCode, der die Taste repräsentiert
        shiftDown - true, wenn "Shift" gedrückt ist
        controlDown - true, wenn "Strg" gedrückt ist
        altDown - true, wenn "Alt" gedrückt ist
        metaDown - true, wenn die "Meta-"Taste gedrückt wurde (Command-Taste auf macOS bzw. Windows-Taste auf Windows)
        Since:
        Bitchanger 0.1.4
        See Also:
        KeyEvent(Object, javafx.event.EventTarget, javafx.event.EventType, String, String, KeyCode, boolean, boolean, boolean, boolean)
      • addAccelerator

        protected void addAccelerator​(javafx.scene.Scene scene,
                                      Runnable runnable,
                                      javafx.event.EventType<javafx.scene.input.KeyEvent> trigger,
                                      javafx.scene.input.KeyCombination... keyCombinations)
      • addAccelerator

        protected void addAccelerator​(javafx.scene.control.Button button,
                                      javafx.event.EventType<javafx.scene.input.KeyEvent> trigger,
                                      javafx.scene.input.KeyCombination... keyCombinations)
      • addAccelerator

        protected void addAccelerator​(javafx.scene.control.Button button,
                                      javafx.scene.input.KeyCombination... keyCombinations)