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:
Tomas Slusny
2018-10-13 23:06:40 +02:00
parent f6aad4c4f1
commit a8f42ab007

View File

@@ -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);
}