package envoy.client.helper; import java.util.logging.Level; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import envoy.client.data.*; import envoy.client.event.*; import envoy.client.ui.SceneContext.SceneInfo; import envoy.util.EnvoyLog; import dev.kske.eventbus.EventBus; /** * Simplifies shutdown actions. * * @author Leon Hofmeister * @since Envoy Client v0.2-beta */ public final class ShutdownHelper { private ShutdownHelper() {} /** * Exits Envoy or minimizes it, depending on the current state of * {@link Settings#isHideOnClose()}. * * @since Envoy Client v0.2-beta */ public static void exit() { if (Settings.getInstance().isHideOnClose()) Context.getInstance().getStage().setIconified(true); else { EventBus.getInstance().dispatch(new EnvoyCloseEvent()); System.exit(0); } } /** * Logs the current user out and reopens * {@link envoy.client.ui.controller.LoginScene}. * * @since Envoy Client v0.2-beta */ public static void logout() { final var alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("Logout?"); alert.setContentText("Are you sure you want to log out?"); AlertHelper.confirmAction(alert, () -> { EnvoyLog.getLogger(ShutdownHelper.class).log(Level.INFO, "A logout was requested"); EventBus.getInstance().dispatch(new EnvoyCloseEvent()); EventBus.getInstance().dispatch(new Logout()); Context.getInstance().getSceneContext().load(SceneInfo.LOGIN_SCENE); }); } }