From 0a86f61e8586abae3abae1fd7b196c2e76ec0c2e Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 17 Feb 2022 12:53:41 +0100 Subject: [PATCH] chat click events: config option to toggle confirmations --- .../config/profile/profiles/gui/GUIProfile.kt | 2 + .../gui/confirmation/ConfirmationC.kt | 23 +++++++++++ .../events/click/CopyToClipboardClickEvent.kt | 4 ++ .../text/events/click/OpenFileClickEvent.kt | 5 +++ .../text/events/click/OpenURLClickEvent.kt | 5 +++ .../events/click/SendMessageClickEvent.kt | 4 ++ .../OpenFileConfirmationDialog.kt | 3 +- .../confirmation/URLConfirmationDialog.kt | 15 +------ .../de/bixilon/minosoft/util/DesktopUtil.kt | 40 +++++++++++++++++++ 9 files changed, 87 insertions(+), 14 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/confirmation/ConfirmationC.kt create mode 100644 src/main/java/de/bixilon/minosoft/util/DesktopUtil.kt diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfile.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfile.kt index 2ed2f5d4d..26288f305 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfile.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfile.kt @@ -19,6 +19,7 @@ import de.bixilon.minosoft.config.profile.profiles.Profile import de.bixilon.minosoft.config.profile.profiles.gui.GUIProfileManager.delegate import de.bixilon.minosoft.config.profile.profiles.gui.GUIProfileManager.latestVersion import de.bixilon.minosoft.config.profile.profiles.gui.chat.ChatC +import de.bixilon.minosoft.config.profile.profiles.gui.confirmation.ConfirmationC import de.bixilon.minosoft.config.profile.profiles.gui.hud.HudC /** @@ -44,6 +45,7 @@ class GUIProfile( val chat = ChatC() val hud = HudC() + val confirmation = ConfirmationC() override fun toString(): String { return GUIProfileManager.getName(this) diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/confirmation/ConfirmationC.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/confirmation/ConfirmationC.kt new file mode 100644 index 000000000..b4be3cbfe --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/confirmation/ConfirmationC.kt @@ -0,0 +1,23 @@ +/* + * Minosoft + * Copyright (C) 2022 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.config.profile.profiles.gui.confirmation + +import de.bixilon.minosoft.config.profile.profiles.gui.GUIProfileManager.delegate + +class ConfirmationC { + val copyToClipboard by delegate(true) + val openFile by delegate(true) + val openURL by delegate(true) + val sendMessage by delegate(true) +} diff --git a/src/main/java/de/bixilon/minosoft/data/text/events/click/CopyToClipboardClickEvent.kt b/src/main/java/de/bixilon/minosoft/data/text/events/click/CopyToClipboardClickEvent.kt index 49622541b..a4374d413 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/events/click/CopyToClipboardClickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/events/click/CopyToClipboardClickEvent.kt @@ -28,6 +28,10 @@ class CopyToClipboardClickEvent( if (button != MouseButtons.LEFT || action != MouseActions.PRESS) { return } + if (guiRenderer.connection.profiles.gui.confirmation.copyToClipboard) { + guiRenderer.renderWindow.window.clipboardText = text + return + } val dialog = CopyToClipboardDialog(guiRenderer, text) dialog.open() } diff --git a/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenFileClickEvent.kt b/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenFileClickEvent.kt index 5f6854de6..2bfbc860a 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenFileClickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenFileClickEvent.kt @@ -19,6 +19,7 @@ import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.confirmation.OpenFileConfirmationDialog import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseButtons +import de.bixilon.minosoft.util.DesktopUtil import glm_.vec2.Vec2i import javafx.scene.text.Text @@ -34,6 +35,10 @@ class OpenFileClickEvent( if (button != MouseButtons.LEFT || action != MouseActions.PRESS) { return } + if (guiRenderer.connection.profiles.gui.confirmation.openFile) { + DesktopUtil.openFile(path) + return + } val dialog = OpenFileConfirmationDialog(guiRenderer, path) dialog.open() } diff --git a/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenURLClickEvent.kt b/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenURLClickEvent.kt index 75a4655ee..25ecbe0ef 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenURLClickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/events/click/OpenURLClickEvent.kt @@ -21,6 +21,7 @@ import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.confirmation.URLConfirmationDialog import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseActions import de.bixilon.minosoft.gui.rendering.gui.input.mouse.MouseButtons +import de.bixilon.minosoft.util.DesktopUtil import glm_.vec2.Vec2i import javafx.scene.text.Text import java.net.URL @@ -37,6 +38,10 @@ class OpenURLClickEvent( if (button != MouseButtons.LEFT || action != MouseActions.PRESS) { return } + if (guiRenderer.connection.profiles.gui.confirmation.openURL) { + DesktopUtil.openURL(url) + return + } val dialog = URLConfirmationDialog(guiRenderer, url) dialog.open() } diff --git a/src/main/java/de/bixilon/minosoft/data/text/events/click/SendMessageClickEvent.kt b/src/main/java/de/bixilon/minosoft/data/text/events/click/SendMessageClickEvent.kt index 3581fc1b6..5a0b541ae 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/events/click/SendMessageClickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/events/click/SendMessageClickEvent.kt @@ -29,6 +29,10 @@ class SendMessageClickEvent( if (button != MouseButtons.LEFT || action != MouseActions.PRESS) { return } + if (guiRenderer.connection.profiles.gui.confirmation.sendMessage) { + guiRenderer.connection.util.sendChatMessage(message) + return + } val dialog = SendMessageDialog(guiRenderer, message) dialog.open() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/OpenFileConfirmationDialog.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/OpenFileConfirmationDialog.kt index 28ef58933..bae192511 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/OpenFileConfirmationDialog.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/OpenFileConfirmationDialog.kt @@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.confirmation import de.bixilon.minosoft.data.text.TextComponent import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.ButtonElement +import de.bixilon.minosoft.util.DesktopUtil class OpenFileConfirmationDialog( guiRenderer: GUIRenderer, @@ -28,7 +29,7 @@ class OpenFileConfirmationDialog( override fun createButtons(): Array { return arrayOf( ButtonElement(guiRenderer, "Yes, open it!") { - println("ToDo: Can not open file: $path") + DesktopUtil.openFile(path) close() }, createCopyToClipboardButton(path) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/URLConfirmationDialog.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/URLConfirmationDialog.kt index 8740ffc1e..272d05ddc 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/URLConfirmationDialog.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/confirmation/URLConfirmationDialog.kt @@ -14,13 +14,9 @@ package de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.confirmation import de.bixilon.minosoft.data.text.TextComponent -import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.ButtonElement -import de.bixilon.minosoft.terminal.RunConfiguration -import de.bixilon.minosoft.util.logging.Log -import de.bixilon.minosoft.util.logging.LogLevels -import de.bixilon.minosoft.util.logging.LogMessageType +import de.bixilon.minosoft.util.DesktopUtil import java.net.URL class URLConfirmationDialog( @@ -34,14 +30,7 @@ class URLConfirmationDialog( override fun createButtons(): Array { return arrayOf( ButtonElement(guiRenderer, "Yes, open it!") { - if (RunConfiguration.DISABLE_EROS) { - return@ButtonElement Log.log(LogMessageType.GENERAL, LogLevels.INFO) { "Can not open url: $url" } - } - try { - JavaFXUtil.HOST_SERVICES.showDocument(url.toString()) - } catch (exception: Throwable) { - exception.printStackTrace() - } + DesktopUtil.openURL(url) close() }, createCopyToClipboardButton(url.toString()) diff --git a/src/main/java/de/bixilon/minosoft/util/DesktopUtil.kt b/src/main/java/de/bixilon/minosoft/util/DesktopUtil.kt new file mode 100644 index 000000000..3a0f629b5 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/util/DesktopUtil.kt @@ -0,0 +1,40 @@ +/* + * Minosoft + * Copyright (C) 2022 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.util + +import de.bixilon.minosoft.gui.eros.util.JavaFXUtil +import de.bixilon.minosoft.terminal.RunConfiguration +import de.bixilon.minosoft.util.logging.Log +import de.bixilon.minosoft.util.logging.LogLevels +import de.bixilon.minosoft.util.logging.LogMessageType +import java.net.URL + +object DesktopUtil { + + fun openURL(url: URL) { + if (RunConfiguration.DISABLE_EROS) { + Log.log(LogMessageType.GENERAL, LogLevels.INFO) { "Can not open url: $url" } + return + } + try { + JavaFXUtil.HOST_SERVICES.showDocument(url.toString()) + } catch (exception: Throwable) { + exception.printStackTrace() + } + } + + fun openFile(path: String) { + println("ToDo: Can not open file: $path") + } +}