/*
- * Sixth 3D engine. Author: Svjatoslav Agejenko.
+ * Sixth 3D engine. Author: Svjatoslav Agejenko.
* This project is released under Creative Commons Zero (CC0) license.
*/
package eu.svjatoslav.sixth.e3d.gui.humaninput;
import java.util.List;
import java.util.Map;
+/**
+ * Human input device input tracker.
+ * <p>
+ * Idea is to capture all keyboard and mouse inputs from underlying operating system in this class
+ * and forward those as needed to subsequent virtual components.
+ */
public class HIDInputTracker implements
MouseMotionListener, KeyListener, MouseListener, MouseWheelListener, ViewRenderListener {
* @return <code>true</code> if view needs to be repainted.
*/
private boolean handleKeyboardEvents() {
- final UserInputHandler currentFocusOwner = viewPanel.getKeyboardFocusStack().getCurrentFocusOwner();
+ final KeyboardInputHandler currentFocusOwner = viewPanel.getKeyboardFocusStack().getCurrentFocusOwner();
ArrayList<KeyEvent> unprocessedKeyboardEvents = getUnprocessedKeyboardEvents();
return currentFocusOwner != null
* @return <code>true</code> if view update is needed.
*/
private boolean forwardKeyboardEventsToFocusOwner(
- UserInputHandler currentFocusOwner, ArrayList<KeyEvent> keyEvents) {
+ KeyboardInputHandler currentFocusOwner, ArrayList<KeyEvent> keyEvents) {
boolean viewUpdateNeeded = false;
for (KeyEvent keyEvent : keyEvents)
return viewUpdateNeeded;
}
- private boolean processKeyEvent(UserInputHandler currentFocusOwner, KeyEvent keyEvent) {
+ private boolean processKeyEvent(KeyboardInputHandler currentFocusOwner, KeyEvent keyEvent) {
switch (keyEvent.getID()) {
case KeyEvent.KEY_PRESSED:
return currentFocusOwner.keyPressed(keyEvent, viewPanel);
private synchronized boolean handleMouseClicksAndHover(final ViewPanel viewPanel) {
boolean rerenderNeeded = false;
MouseEvent event = findClickLocationToTrace();
- if (event != null){
+ if (event != null) {
// process mouse clicks as a first priority
rerenderNeeded = true;
} else {
* @return <code>true</code> if view needs to be repainted.
*/
private boolean handleMouseDragging() {
- // TODO: need to detect whether user moved mouse or touch screen
+ // TODO: It would be nice here to detect somehow whether user moved mouse or touch screen.
+ // in case of touch screen, we would like to reverse movement along X and Y axis.
final Avatar avatar = viewPanel.getAvatar();
// for mouse