Package bitchanger.gui.controller
Class ControllerBase<T extends Controllable>
- java.lang.Object
-
- bitchanger.gui.controller.ControllerBase<T>
-
- Type Parameters:
T
- Typ des Controllable (wird benötigt, um auf weitere Methoden zugreifen zu können, die nicht inControllable
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()
undController.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ältprotected T
controllable
gekapseltes Controllable, dem durch diesen Controller eine Funktion gegeben wirdprotected 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 sindprotected Map<String,javafx.scene.control.TextField>
textFieldMap
Map
, die alle Textfelder des gekapselten Controllables enthält-
Fields inherited from interface bitchanger.gui.controller.Controller
REGISTERED_CONTROLLERS
-
-
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 wiesimulateKeyEvents(Button, Node, Scene, String, String, KeyCode, boolean, boolean, boolean, boolean)
, bis auf dass die Parameter shiftDown, controlDown, altDown und metaDown alle den Wertfalse
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 spezifischenkeycode
und feuert nacheinander die KeyEventsKeyEvent.KEY_PRESSED
,KeyEvent.KEY_TYPED
undKeyEvent.KEY_RELEASED
an den gewählten Empfängertarget
.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface bitchanger.gui.controller.Controller
setActions
-
-
-
-
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 spezifischenkeycode
und feuert nacheinander die KeyEventsKeyEvent.KEY_PRESSED
,KeyEvent.KEY_TYPED
undKeyEvent.KEY_RELEASED
an den gewählten Empfängertarget
. Wenntarget
den Wertnull
hat, werden die Events an die übergebene Scenescene
weitergeleitet. Sind sowohltarget
als auchscene
null
, werden die Events an die Scene von controllable weitergeleitet, sofern controllable die SchnittstelleViewable
implementiert.Wenn die Parameter
target
undscene
beide den Wertnull
haben und controllable nicht die SchnittstelleViewable
implementiert, werden keine Events gefeuert und die Methode hat keine weiteren Auswirkungen. Insbesondere wird auch keine Exception geworfen!- Parameters:
source
- Quelle des Events, darfnull
seintarget
- Ziel des Events, darfnull
sein, wenn das Attribut controllable eine Instanz vonViewable
istscene
- Scene, die die KeyEvents konsumiert, wenntarget
den Wertnull
hat. Darfnull
seincharacter
- Zeichen oder Zeichenkette, die mit dem Event verbunden wirdtext
- String, der den KeyCode beschreibtkeycode
- KeyCode, der die Taste repräsentiertshiftDown
- true, wenn"Shift"
gedrückt istcontrolDown
- true, wenn"Strg"
gedrückt istaltDown
- true, wenn"Alt"
gedrückt istmetaDown
- 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)
-
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)
Verhält sich wiesimulateKeyEvents(Button, Node, Scene, String, String, KeyCode, boolean, boolean, boolean, boolean)
, bis auf dass die Parameter shiftDown, controlDown, altDown und metaDown alle den Wertfalse
haben.- Parameters:
source
- Quelle des Events, darfnull
seintarget
- Ziel des Events, darfnull
sein, wenn das Attribut controllable eine Instanz vonViewable
istscene
- Scene, die die KeyEvents konsumiert, wenntarget
den Wertnull
hat. Darfnull
seincharacter
- Zeichen oder Zeichenkette, die mit dem Event verbunden wirdtext
- String, der den KeyCode beschreibtkeycode
- KeyCode, der die Taste repräsentiert- See Also:
simulateKeyEvents(Button, Node, Scene, 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)
-
-