From b57d126c4afcf7c67afc4fa772dffab265740bd7 Mon Sep 17 00:00:00 2001 From: KatatsumuriPan Date: Mon, 19 Feb 2024 22:19:43 +0900 Subject: [PATCH 1/5] Fix package --- .../betterquesting/client/gui2/editors/TextEditorFrame.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java index d5b85e91e..6110af71d 100644 --- a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java +++ b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java @@ -1,4 +1,4 @@ -package betterquesting; +package betterquesting.client.gui2.editors; import betterquesting.api.properties.NativeProps; import betterquesting.api.questing.IQuest; From 48203755d9a2b1e582b6bcc461ccc7566c97cfae Mon Sep 17 00:00:00 2001 From: KatatsumuriPan Date: Mon, 19 Feb 2024 22:45:48 +0900 Subject: [PATCH 2/5] One more... --- .../java/betterquesting/client/gui2/editors/GuiQuestEditor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/betterquesting/client/gui2/editors/GuiQuestEditor.java b/src/main/java/betterquesting/client/gui2/editors/GuiQuestEditor.java index 4d4447370..6995ea885 100644 --- a/src/main/java/betterquesting/client/gui2/editors/GuiQuestEditor.java +++ b/src/main/java/betterquesting/client/gui2/editors/GuiQuestEditor.java @@ -1,6 +1,5 @@ package betterquesting.client.gui2.editors; -import betterquesting.TextEditorFrame; import betterquesting.api.client.gui.misc.INeedsRefresh; import betterquesting.api.client.gui.misc.IVolatileScreen; import betterquesting.api.enums.EnumLogic; From f963503d732a4bbd07ccab2ff5c948ff422cc441 Mon Sep 17 00:00:00 2001 From: KatatsumuriPan Date: Mon, 19 Feb 2024 23:26:14 +0900 Subject: [PATCH 3/5] Fix duplicating editor windows --- .../client/gui2/editors/TextEditorFrame.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java index 6110af71d..8bf46f5a9 100644 --- a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java +++ b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java @@ -11,6 +11,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; +import org.jetbrains.annotations.Nullable; import javax.imageio.ImageIO; import javax.swing.*; @@ -23,6 +24,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.InputStream; @@ -30,11 +32,20 @@ public class TextEditorFrame extends JFrame { private static final int initialRowCount = 30; private static final int defaultColumns = 60; + private static BufferedImage logoCache = null; + private static @Nullable TextEditorFrame opened = null; + public static void openTextEditor(int questID, IQuest quest) { - new TextEditorFrame(questID, quest).requestFocus(); - } + if (opened == null) { + opened = new TextEditorFrame(questID, quest); + opened.requestFocus(); + } else { + Toolkit.getDefaultToolkit().beep(); + opened.toFront(); + opened.requestFocus(); + } + } - private static BufferedImage logoCache = null; private final int questID; public final IQuest quest; @@ -89,6 +100,13 @@ private TextEditorFrame(int questID, IQuest q) { description.setLineWrap(true); UndoHelper.addUndoHelper(description); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosed(WindowEvent e) { + opened = null; + } + }); + JPanel footerPanel = add(wholePanel, new JPanel()); footerPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 10)); JButton cancel = add(footerPanel, new JButton(I18n.format("gui.cancel"))); From 6d0e1fb8d413920a5551e3a60010e1048c7c1ac2 Mon Sep 17 00:00:00 2001 From: KatatsumuriPan Date: Mon, 19 Feb 2024 23:28:14 +0900 Subject: [PATCH 4/5] refactoring --- .../client/gui2/editors/TextEditorFrame.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java index 8bf46f5a9..c123e3650 100644 --- a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java +++ b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java @@ -24,6 +24,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.InputEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; @@ -193,10 +194,10 @@ private UndoHelper(JTextComponent textComponent) { class UndoAction extends AbstractAction { UndoAction() { super("Undo(U)"); - putValue(MNEMONIC_KEY, new Integer('U')); + putValue(MNEMONIC_KEY, (int)'U'); putValue(SHORT_DESCRIPTION, "Undo"); putValue(LONG_DESCRIPTION, "Undo"); - putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('Z', Event.CTRL_MASK)); + putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('Z', InputEvent.CTRL_DOWN_MASK)); } public void actionPerformed(ActionEvent e) { if (undoManager.canUndo()) { @@ -208,10 +209,10 @@ public void actionPerformed(ActionEvent e) { class RedoAction extends AbstractAction { RedoAction() { super("Redo(R)"); - putValue(MNEMONIC_KEY, new Integer('R')); + putValue(MNEMONIC_KEY, (int) 'R'); putValue(SHORT_DESCRIPTION, "Redo"); putValue(LONG_DESCRIPTION, "Redo"); - putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('Y', Event.CTRL_MASK)); + putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('Y', InputEvent.CTRL_DOWN_MASK)); } public void actionPerformed(ActionEvent e) { if (undoManager.canRedo()) { From 65b0a6cd2bce70638057f4217c06cf645058f9a4 Mon Sep 17 00:00:00 2001 From: KatatsumuriPan Date: Mon, 19 Feb 2024 23:48:23 +0900 Subject: [PATCH 5/5] Allow opening other editors for other quests --- .../client/gui2/editors/TextEditorFrame.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java index c123e3650..aad634aba 100644 --- a/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java +++ b/src/main/java/betterquesting/client/gui2/editors/TextEditorFrame.java @@ -5,13 +5,17 @@ import betterquesting.core.BetterQuesting; import betterquesting.core.ModReference; import betterquesting.network.handlers.NetQuestEdit; +import io.netty.util.collection.IntObjectHashMap; +import io.netty.util.collection.IntObjectMap; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.IntHashMap; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; import org.jetbrains.annotations.Nullable; +import scala.collection.immutable.IntMap; import javax.imageio.ImageIO; import javax.swing.*; @@ -33,18 +37,20 @@ public class TextEditorFrame extends JFrame { private static final int initialRowCount = 30; private static final int defaultColumns = 60; + private static final IntObjectMap opened = new IntObjectHashMap<>();// questId -> TextEditorFrame private static BufferedImage logoCache = null; - private static @Nullable TextEditorFrame opened = null; public static void openTextEditor(int questID, IQuest quest) { - if (opened == null) { - opened = new TextEditorFrame(questID, quest); - opened.requestFocus(); - } else { - Toolkit.getDefaultToolkit().beep(); - opened.toFront(); - opened.requestFocus(); - } + if (opened.containsKey(questID)){ + TextEditorFrame frame = opened.get(questID); + frame.toFront(); + frame.requestFocus(); + Toolkit.getDefaultToolkit().beep(); + }else { + TextEditorFrame frame = new TextEditorFrame(questID, quest); + opened.put(questID, frame); + frame.requestFocus(); + } } @@ -104,7 +110,7 @@ private TextEditorFrame(int questID, IQuest q) { addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { - opened = null; + opened.remove(questID); } });