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 <slusnucky@gmail.com>
This commit is contained in:
@@ -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<ConfigItemDescriptor> items = Arrays.stream(inter.getMethods())
|
||||
final List<ConfigItemDescriptor> 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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user