diff --git a/src/main/java/net/pistonmaster/serverwrecker/gui/GUIFrame.java b/src/main/java/net/pistonmaster/serverwrecker/gui/GUIFrame.java index e4d2d132a..0d6e5cc0d 100644 --- a/src/main/java/net/pistonmaster/serverwrecker/gui/GUIFrame.java +++ b/src/main/java/net/pistonmaster/serverwrecker/gui/GUIFrame.java @@ -24,11 +24,9 @@ import net.pistonmaster.serverwrecker.gui.libs.HintManager; import net.pistonmaster.serverwrecker.gui.navigation.CardsContainer; import net.pistonmaster.serverwrecker.gui.navigation.ControlPanel; -import net.pistonmaster.serverwrecker.util.TimeUtil; import javax.swing.*; import java.awt.*; -import java.util.concurrent.TimeUnit; public class GUIFrame extends JFrame { public static final String MAIN_MENU = "MainMenu"; @@ -65,11 +63,13 @@ public void initComponents(Injector injector) { public void open(Injector injector) { setVisible(true); + // User says they are a first time user that wants hints if (GUIClientProps.getBoolean("firstTimeUser", false)) { SwingUtilities.invokeLater(() -> showHints(injector)); return; } + // Ask whether the user wants hints if (GUIClientProps.getBoolean("firstRun", true)) { var result = JOptionPane.showConfirmDialog( this, @@ -78,15 +78,17 @@ public void open(Injector injector) { JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE ); + if (result == JOptionPane.YES_OPTION) { GUIClientProps.setBoolean("firstTimeUser", true); + GUIClientProps.setBoolean("firstRun", false); - // Give the window a bit of time to close - TimeUtil.waitTime(50, TimeUnit.MILLISECONDS); + requestFocusInWindow(); SwingUtilities.invokeLater(() -> showHints(injector)); + } else if (result == JOptionPane.NO_OPTION || result == JOptionPane.CLOSED_OPTION) { + GUIClientProps.setBoolean("firstTimeUser", false); + GUIClientProps.setBoolean("firstRun", false); } - - GUIClientProps.setBoolean("firstRun", false); } } diff --git a/src/main/java/net/pistonmaster/serverwrecker/gui/SWMenuBar.java b/src/main/java/net/pistonmaster/serverwrecker/gui/SWMenuBar.java index a4ba98f26..a1eee60f2 100644 --- a/src/main/java/net/pistonmaster/serverwrecker/gui/SWMenuBar.java +++ b/src/main/java/net/pistonmaster/serverwrecker/gui/SWMenuBar.java @@ -20,8 +20,12 @@ package net.pistonmaster.serverwrecker.gui; import com.formdev.flatlaf.FlatDarculaLaf; +import com.formdev.flatlaf.FlatDarkLaf; import com.formdev.flatlaf.FlatIntelliJLaf; -import com.formdev.flatlaf.intellijthemes.FlatOneDarkIJTheme; +import com.formdev.flatlaf.FlatLightLaf; +import com.formdev.flatlaf.intellijthemes.*; +import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialDarkerIJTheme; +import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme; import com.formdev.flatlaf.themes.FlatMacDarkLaf; import com.formdev.flatlaf.themes.FlatMacLightLaf; import javafx.stage.FileChooser; @@ -47,9 +51,18 @@ public class SWMenuBar extends JMenuBar { var tempThemes = new ArrayList<>(List.of( FlatDarculaLaf.class, FlatIntelliJLaf.class, + FlatDarkLaf.class, + FlatLightLaf.class, FlatMacDarkLaf.class, FlatMacLightLaf.class, - FlatOneDarkIJTheme.class + FlatOneDarkIJTheme.class, + FlatArcOrangeIJTheme.class, + FlatArcDarkOrangeIJTheme.class, + FlatCyanLightIJTheme.class, + FlatDarkPurpleIJTheme.class, + FlatMaterialDarkerIJTheme.class, + FlatMaterialOceanicIJTheme.class, + FlatCarbonIJTheme.class )); THEMES = List.copyOf(tempThemes); } diff --git a/src/main/java/net/pistonmaster/serverwrecker/gui/libs/HintManager.java b/src/main/java/net/pistonmaster/serverwrecker/gui/libs/HintManager.java index dac4ee521..cbbb7b22b 100644 --- a/src/main/java/net/pistonmaster/serverwrecker/gui/libs/HintManager.java +++ b/src/main/java/net/pistonmaster/serverwrecker/gui/libs/HintManager.java @@ -136,8 +136,9 @@ private void updateBalloonBorder() { void showHint() { var rootPane = SwingUtilities.getRootPane(hint.owner); - if (rootPane == null) + if (rootPane == null) { return; + } var layeredPane = rootPane.getLayeredPane();