package envoy.client.data.shortcuts; import javafx.scene.input.*; import envoy.client.data.Context; import envoy.client.helper.ShutdownHelper; import envoy.client.ui.SceneContext.SceneInfo; import envoy.client.util.UserUtil; import envoy.data.User.UserStatus; /** * Envoy-specific implementation of the keyboard-shortcut interaction offered by * {@link GlobalKeyShortcuts}. * * @author Leon Hofmeister * @since Envoy Client v0.3-beta */ public class EnvoyShortcutConfig { private EnvoyShortcutConfig() {} /** * Supplies the default shortcuts for {@link GlobalKeyShortcuts}. * * @since Envoy Client v0.3-beta */ public static void initializeEnvoyShortcuts() { final var instance = GlobalKeyShortcuts.getInstance(); // Add the option to exit with "Control" + "Q" or "Alt" + "F4" as offered by // some desktop environments instance.add(new KeyCodeCombination(KeyCode.Q, KeyCombination.CONTROL_DOWN), ShutdownHelper::exit); // Add the option to logout using "Control"+"Shift"+"L" if not in login scene instance.addForNotExcluded(new KeyCodeCombination(KeyCode.L, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN), UserUtil::logout, SceneInfo.LOGIN_SCENE); // Add option to open settings scene with "Control"+"S", if not in login scene instance.addForNotExcluded(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN), () -> Context.getInstance().getSceneContext().load(SceneInfo.SETTINGS_SCENE), SceneInfo.SETTINGS_SCENE, SceneInfo.LOGIN_SCENE); // Add option to change to status away instance.addForNotExcluded(new KeyCodeCombination(KeyCode.A, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN), () -> UserUtil.changeStatus(UserStatus.AWAY), SceneInfo.LOGIN_SCENE); // Add option to change to status busy instance.addForNotExcluded(new KeyCodeCombination(KeyCode.B, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN), () -> UserUtil.changeStatus(UserStatus.BUSY), SceneInfo.LOGIN_SCENE); // Add option to change to status offline instance.addForNotExcluded(new KeyCodeCombination(KeyCode.F, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN), () -> UserUtil.changeStatus(UserStatus.OFFLINE), SceneInfo.LOGIN_SCENE); // Add option to change to status online instance.addForNotExcluded(new KeyCodeCombination(KeyCode.N, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN), () -> UserUtil.changeStatus(UserStatus.ONLINE), SceneInfo.LOGIN_SCENE); } }