+++ /dev/null
-/*
- * Sixth 3D engine. Copyright ©2012-2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 3 of the GNU Lesser General Public License
- * or later as published by the Free Software Foundation.
- *
- */
-
-package eu.svjatoslav.sixth.e3d.gui.humaninput;
-
-import eu.svjatoslav.sixth.e3d.gui.ViewPanel;
-
-import java.util.Stack;
-
-public class KeyboardFocusTracker {
-
- private final ViewPanel viewPanel;
- WorldNavigationTracker defaultInputHandler = new WorldNavigationTracker();
- Stack<UserInputHandler> inputHandlers = new Stack<>();
- private UserInputHandler currentUserInputHandler;
-
- public KeyboardFocusTracker(final ViewPanel viewPanel) {
- this.viewPanel = viewPanel;
- setFocusOwner(defaultInputHandler);
- }
-
- public UserInputHandler getCurrentFocusOwner() {
- return currentUserInputHandler;
- }
-
- public void popFocusOwner() {
- if (currentUserInputHandler == null)
- return;
-
- if (inputHandlers.isEmpty())
- return;
-
- currentUserInputHandler.focusLost(viewPanel);
-
- currentUserInputHandler = inputHandlers.pop();
-
- currentUserInputHandler.focusReceived(viewPanel);
- }
-
- public void setFocusOwner(final UserInputHandler inputHandler) {
- if (currentUserInputHandler == inputHandler)
- return;
-
- if (currentUserInputHandler != null) {
- currentUserInputHandler.focusLost(viewPanel);
- inputHandlers.push(currentUserInputHandler);
- }
-
- currentUserInputHandler = inputHandler;
-
- currentUserInputHandler.focusReceived(viewPanel);
- }
-}