This is an automated email from the ASF dual-hosted git repository.

fschumacher pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git

commit 0070acbf1635ca05ef384c8e47ec4863ae7e3bd1
Author: weisj <we...@arcor.de>
AuthorDate: Tue Aug 11 20:58:03 2020 +0200

    Make use of newer Darklaf API to create laf menu items.
---
 .../jmeter/gui/action/LookAndFeelCommand.java      | 71 +++++++---------------
 1 file changed, 23 insertions(+), 48 deletions(-)

diff --git 
a/src/core/src/main/java/org/apache/jmeter/gui/action/LookAndFeelCommand.java 
b/src/core/src/main/java/org/apache/jmeter/gui/action/LookAndFeelCommand.java
index 7b29594..5e549ac 100644
--- 
a/src/core/src/main/java/org/apache/jmeter/gui/action/LookAndFeelCommand.java
+++ 
b/src/core/src/main/java/org/apache/jmeter/gui/action/LookAndFeelCommand.java
@@ -18,7 +18,6 @@
 package org.apache.jmeter.gui.action;
 
 import java.awt.event.ActionEvent;
-import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -41,12 +40,6 @@ import org.slf4j.LoggerFactory;
 
 import com.github.weisj.darklaf.LafManager;
 import com.github.weisj.darklaf.theme.DarculaTheme;
-import com.github.weisj.darklaf.theme.HighContrastDarkTheme;
-import com.github.weisj.darklaf.theme.HighContrastLightTheme;
-import com.github.weisj.darklaf.theme.IntelliJTheme;
-import com.github.weisj.darklaf.theme.OneDarkTheme;
-import com.github.weisj.darklaf.theme.SolarizedDarkTheme;
-import com.github.weisj.darklaf.theme.SolarizedLightTheme;
 import com.github.weisj.darklaf.theme.Theme;
 
 /**
@@ -70,9 +63,9 @@ public class LookAndFeelCommand extends AbstractAction {
         final String title;
         final String command;
         final String lafClassName;
-        final Class<? extends Theme> lafTheme;
+        final Theme lafTheme;
 
-        private MenuItem(String title, String command, String lafClassName, 
Class<? extends Theme> lafTheme) {
+        private MenuItem(String title, String command, String lafClassName, 
Theme lafTheme) {
             this.title = title;
             this.command = command;
             this.lafClassName = lafClassName;
@@ -88,14 +81,14 @@ public class LookAndFeelCommand extends AbstractAction {
         }
 
         private static MenuItem of(String title, String lafClass) {
-            return new MenuItem(title,ActionNames.LAF_PREFIX + lafClass, 
lafClass, null);
+            return new MenuItem(title, ActionNames.LAF_PREFIX + lafClass, 
lafClass, null);
         }
 
-        private static MenuItem ofDarklafTheme(Class<? extends Theme> 
lafTheme) {
-            return new MenuItem("Darklaf - " + 
lafTheme.getSimpleName().replace("Theme", ""),
-                    JMeterMenuBar.DARKLAF_LAF_CLASS + ":" + lafTheme.getName(),
+        private static MenuItem ofDarklafTheme(Theme theme) {
+            return new MenuItem("Darklaf - " + theme.getName(),
+                    JMeterMenuBar.DARKLAF_LAF_CLASS + ":" + 
theme.getThemeClass().getName(),
                     JMeterMenuBar.DARKLAF_LAF_CLASS,
-                    lafTheme);
+                    theme);
         }
     }
 
@@ -106,21 +99,17 @@ public class LookAndFeelCommand extends AbstractAction {
         if (System.getProperty("darklaf.allowNativeCode") == null) {
             System.setProperty("darklaf.allowNativeCode", "false");
         }
-        UIManager.installLookAndFeel(JMeterMenuBar.DARKLAF_LAF, 
JMeterMenuBar.DARKLAF_LAF_CLASS);
+        UIManager.installLookAndFeel(JMeterMenuBar.DARCULA_LAF, 
JMeterMenuBar.DARCULA_LAF_CLASS);
 
         List<MenuItem> items = new ArrayList<>();
         for (UIManager.LookAndFeelInfo laf : JMeterMenuBar.getAllLAFs()) {
-            if (!laf.getClassName().equals(JMeterMenuBar.DARKLAF_LAF_CLASS)) {
+            if (!laf.getClassName().equals(JMeterMenuBar.DARCULA_LAF_CLASS)) {
                 items.add(MenuItem.of(laf.getName(), laf.getClassName()));
-                continue;
+            } else {
+                for (Theme theme : LafManager.getRegisteredThemes()) {
+                    items.add(MenuItem.ofDarklafTheme(theme));
+                }
             }
-            items.add(MenuItem.ofDarklafTheme(DarculaTheme.class));
-            items.add(MenuItem.ofDarklafTheme(IntelliJTheme.class));
-            items.add(MenuItem.ofDarklafTheme(OneDarkTheme.class));
-            items.add(MenuItem.ofDarklafTheme(SolarizedDarkTheme.class));
-            items.add(MenuItem.ofDarklafTheme(SolarizedLightTheme.class));
-            items.add(MenuItem.ofDarklafTheme(HighContrastDarkTheme.class));
-            items.add(MenuItem.ofDarklafTheme(HighContrastLightTheme.class));
         }
         items.sort(Comparator.comparing(MenuItem::getTitle));
         for (MenuItem item : items) {
@@ -184,7 +173,7 @@ public class LookAndFeelCommand extends AbstractAction {
         String jMeterLaf = getJMeterLaf();
         if (jMeterLaf.equals(JMeterMenuBar.DARCULA_LAF_CLASS)) {
             // Convert old Darcula to new Darklaf-Darcula LaF
-            return MenuItem.ofDarklafTheme(DarculaTheme.class).command;
+            return MenuItem.ofDarklafTheme(new DarculaTheme()).command;
         }
 
         return MenuItem.of("default", jMeterLaf).command; // $NON-NLS-1$
@@ -208,12 +197,7 @@ public class LookAndFeelCommand extends AbstractAction {
     public static boolean isDark() {
         String lookAndFeelID = UIManager.getLookAndFeel().getID();
         if (lookAndFeelID.equals("Darklaf")) { // $NON-NLS-1$
-            Theme lafTheme = LafManager.getTheme();
-            if (lafTheme == null) {
-                return false;
-            }
-            String name = lafTheme.getName();
-            return name.equals("darcula") || name.equals("solarized_dark"); // 
$NON-NLS-1$
+            return Theme.isDark(LafManager.getTheme());
         }
         return false;
     }
@@ -221,24 +205,15 @@ public class LookAndFeelCommand extends AbstractAction {
     public static void activateLookAndFeel(String command) {
         MenuItem item = items.get(command);
         String className = item.lafClassName;
-        try {
-            if (item.lafTheme != null) {
-                
LafManager.setTheme(item.lafTheme.getConstructor().newInstance());
-            }
-            GuiPackage instance = GuiPackage.getInstance();
-            if (instance != null) {
-                instance.updateUIForHiddenComponents();
-            }
-            JFactory.refreshUI(className);
-            PREFS.put(USER_PREFS_KEY, item.command);
-        } catch ( InstantiationException
-                | NoSuchMethodException
-                | IllegalAccessException e) {
-            throw new IllegalArgumentException("Look and Feel unavailable:" + 
e.toString(), e);
-        } catch (InvocationTargetException e) {
-            Throwable c = e.getCause();
-            throw new IllegalArgumentException("Look and Feel unavailable:" + 
c.toString(), c);
+        if (item.lafTheme != null) {
+            LafManager.setTheme(item.lafTheme);
+        }
+        GuiPackage instance = GuiPackage.getInstance();
+        if (instance != null) {
+            instance.updateUIForHiddenComponents();
         }
+        JFactory.refreshUI(className);
+        PREFS.put(USER_PREFS_KEY, item.command);
     }
 
     @Override

Reply via email to