X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2Fhumaninput%2FHIDInputTracker.java;h=af0ae3104fa42dfe325ea2e4e0bb5a533ea52cf4;hb=4d8ec2cf940099ca17f075effd1c310a99f3c3a6;hp=dd19b6055f0f72ea2583777107333228a1ff4783;hpb=197ac1b87328bb5b06ba52d3768af04b2007b087;p=sixth-3d.git diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/HIDInputTracker.java b/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/HIDInputTracker.java index dd19b60..af0ae31 100755 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/HIDInputTracker.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/HIDInputTracker.java @@ -1,10 +1,7 @@ /* - * 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 eu.svjatoslav.sixth.e3d.geometry.Point2D; @@ -19,6 +16,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * Human input device input tracker. + *

+ * 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 { @@ -72,7 +75,7 @@ public class HIDInputTracker implements * @return true if view needs to be repainted. */ private boolean handleKeyboardEvents() { - final UserInputHandler currentFocusOwner = viewPanel.getKeyboardFocusStack().getCurrentFocusOwner(); + final KeyboardInputHandler currentFocusOwner = viewPanel.getKeyboardFocusStack().getCurrentFocusOwner(); ArrayList unprocessedKeyboardEvents = getUnprocessedKeyboardEvents(); return currentFocusOwner != null @@ -91,7 +94,7 @@ public class HIDInputTracker implements * @return true if view update is needed. */ private boolean forwardKeyboardEventsToFocusOwner( - UserInputHandler currentFocusOwner, ArrayList keyEvents) { + KeyboardInputHandler currentFocusOwner, ArrayList keyEvents) { boolean viewUpdateNeeded = false; for (KeyEvent keyEvent : keyEvents) @@ -100,7 +103,7 @@ public class HIDInputTracker implements 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); @@ -117,7 +120,7 @@ public class HIDInputTracker implements 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 { @@ -243,7 +246,8 @@ public class HIDInputTracker implements * @return true 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