From a8f42ab007c0f2890d0b71ca0289bcf6ba2d123a Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sat, 13 Oct 2018 23:06:40 +0200 Subject: [PATCH] Sort config panel options by name as well In addition to sorting config panel options by position, sort them also by name to remove need of setting positions everywhere for consistent order. Signed-off-by: Tomas Slusny --- .../java/net/runelite/client/config/ConfigManager.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index 400083b815..d85139cfdb 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -25,6 +25,7 @@ package net.runelite.client.config; import com.google.common.base.Strings; +import com.google.common.collect.ComparisonChain; import com.google.common.collect.ImmutableMap; import com.google.common.eventbus.EventBus; import java.awt.Color; @@ -45,7 +46,6 @@ import java.nio.channels.FileLock; import java.nio.charset.Charset; import java.time.Instant; import java.util.Arrays; -import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -375,14 +375,18 @@ public class ConfigManager throw new IllegalArgumentException("Not a config group"); } - List items = Arrays.stream(inter.getMethods()) + final List items = Arrays.stream(inter.getMethods()) .filter(m -> m.getParameterCount() == 0) - .sorted(Comparator.comparingInt(m -> m.getDeclaredAnnotation(ConfigItem.class).position())) .map(m -> new ConfigItemDescriptor( m.getDeclaredAnnotation(ConfigItem.class), m.getReturnType() )) + .sorted((a, b) -> ComparisonChain.start() + .compare(a.getItem().position(), b.getItem().position()) + .compare(a.getItem().name(), b.getItem().name()) + .result()) .collect(Collectors.toList()); + return new ConfigDescriptor(group, items); }