pluginsorter: Make plugin sorting configurable (#1766)
This commit is contained in:
@@ -8,5 +8,6 @@ public enum PluginType
|
|||||||
UTILITY,
|
UTILITY,
|
||||||
GENERAL_USE,
|
GENERAL_USE,
|
||||||
EXTERNAL,
|
EXTERNAL,
|
||||||
PLUGIN_ORGANIZER
|
PLUGIN_ORGANIZER,
|
||||||
|
IMPORTANT
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ package net.runelite.client.plugins.config;
|
|||||||
|
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
@@ -46,7 +45,6 @@ import java.lang.reflect.InvocationTargetException;
|
|||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -107,7 +105,6 @@ import net.runelite.client.plugins.Plugin;
|
|||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
import net.runelite.client.plugins.PluginInstantiationException;
|
import net.runelite.client.plugins.PluginInstantiationException;
|
||||||
import net.runelite.client.plugins.PluginManager;
|
import net.runelite.client.plugins.PluginManager;
|
||||||
import net.runelite.client.plugins.PluginType;
|
|
||||||
import net.runelite.client.ui.ColorScheme;
|
import net.runelite.client.ui.ColorScheme;
|
||||||
import net.runelite.client.ui.DynamicGridLayout;
|
import net.runelite.client.ui.DynamicGridLayout;
|
||||||
import net.runelite.client.ui.FontManager;
|
import net.runelite.client.ui.FontManager;
|
||||||
@@ -320,20 +317,6 @@ public class ConfigPanel extends PluginPanel
|
|||||||
chatColor.nameLabel.setForeground(Color.WHITE);
|
chatColor.nameLabel.setForeground(Color.WHITE);
|
||||||
plugins.add(chatColor);
|
plugins.add(chatColor);
|
||||||
|
|
||||||
ImmutableList<PluginType> definedOrder = ImmutableList.of(PluginType.EXTERNAL, PluginType.PVM, PluginType.SKILLING, PluginType.PVP, PluginType.UTILITY, PluginType.GENERAL_USE, PluginType.PLUGIN_ORGANIZER);
|
|
||||||
Comparator<PluginListItem> pluginTypeComparator = Comparator.comparing(plugin ->
|
|
||||||
{
|
|
||||||
PluginType type = PluginType.GENERAL_USE;
|
|
||||||
Plugin sortPlugin = plugin.getPlugin();
|
|
||||||
if (sortPlugin != null)
|
|
||||||
{
|
|
||||||
type = sortPlugin.getClass().getAnnotation(PluginDescriptor.class).type();
|
|
||||||
}
|
|
||||||
|
|
||||||
return definedOrder.indexOf(type);
|
|
||||||
});
|
|
||||||
|
|
||||||
plugins.sort(pluginTypeComparator.thenComparing(PluginListItem::getName));
|
|
||||||
pluginList.addAll(plugins);
|
pluginList.addAll(plugins);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,9 @@
|
|||||||
package net.runelite.client.plugins.pluginsorter;
|
package net.runelite.client.plugins.pluginsorter;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
import net.runelite.client.config.Alpha;
|
import net.runelite.client.config.Alpha;
|
||||||
import net.runelite.client.config.Config;
|
import net.runelite.client.config.Config;
|
||||||
import net.runelite.client.config.ConfigGroup;
|
import net.runelite.client.config.ConfigGroup;
|
||||||
@@ -35,11 +38,50 @@ import net.runelite.client.config.Title;
|
|||||||
@ConfigGroup("pluginsorter")
|
@ConfigGroup("pluginsorter")
|
||||||
public interface PluginSorterConfig extends Config
|
public interface PluginSorterConfig extends Config
|
||||||
{
|
{
|
||||||
|
@Getter(AccessLevel.PACKAGE)
|
||||||
|
@AllArgsConstructor
|
||||||
|
enum SortStyle
|
||||||
|
{
|
||||||
|
CATEGORY("Category"),
|
||||||
|
ALPHABETICALLY("Alphabetically");
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigTitleSection(
|
||||||
|
keyName = "pluginSortingTitle",
|
||||||
|
name = "Sorting",
|
||||||
|
description = "",
|
||||||
|
position = 0
|
||||||
|
)
|
||||||
|
default Title pluginSortingTitle()
|
||||||
|
{
|
||||||
|
return new Title();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
position = 1,
|
||||||
|
keyName = "pluginSortMode",
|
||||||
|
name = "Sorting mode",
|
||||||
|
description = "Sorts plugins ",
|
||||||
|
titleSection = "pluginSortingTitle"
|
||||||
|
)
|
||||||
|
default SortStyle pluginSortMode()
|
||||||
|
{
|
||||||
|
return SortStyle.CATEGORY;
|
||||||
|
}
|
||||||
|
|
||||||
@ConfigTitleSection(
|
@ConfigTitleSection(
|
||||||
keyName = "hidePluginsTitle",
|
keyName = "hidePluginsTitle",
|
||||||
name = "Hiding",
|
name = "Hiding",
|
||||||
description = "",
|
description = "",
|
||||||
position = 0
|
position = 2
|
||||||
)
|
)
|
||||||
default Title hidePluginsTitle()
|
default Title hidePluginsTitle()
|
||||||
{
|
{
|
||||||
@@ -47,7 +89,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 1,
|
position = 3,
|
||||||
keyName = "hidePlugins",
|
keyName = "hidePlugins",
|
||||||
name = "Hide Plugins",
|
name = "Hide Plugins",
|
||||||
description = "Hides all OpenOSRS plugins if checked",
|
description = "Hides all OpenOSRS plugins if checked",
|
||||||
@@ -60,7 +102,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 6,
|
position = 4,
|
||||||
keyName = "hideExternalPlugins",
|
keyName = "hideExternalPlugins",
|
||||||
name = "Hide External Plugins",
|
name = "Hide External Plugins",
|
||||||
description = "Hides all OpenOSRS external plugins if checked",
|
description = "Hides all OpenOSRS external plugins if checked",
|
||||||
@@ -73,7 +115,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 2,
|
position = 5,
|
||||||
keyName = "hidePvmPlugins",
|
keyName = "hidePvmPlugins",
|
||||||
name = "Hide PvM Plugins",
|
name = "Hide PvM Plugins",
|
||||||
description = "Hides all OpenOSRS PvM plugins if checked",
|
description = "Hides all OpenOSRS PvM plugins if checked",
|
||||||
@@ -86,7 +128,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 4,
|
position = 6,
|
||||||
keyName = "hideSkillingPlugins",
|
keyName = "hideSkillingPlugins",
|
||||||
name = "Hide Skillinh Plugins",
|
name = "Hide Skillinh Plugins",
|
||||||
description = "Hides all OpenOSRS skilling plugins if checked",
|
description = "Hides all OpenOSRS skilling plugins if checked",
|
||||||
@@ -99,7 +141,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 3,
|
position = 7,
|
||||||
keyName = "hidePvpPlugins",
|
keyName = "hidePvpPlugins",
|
||||||
name = "Hide PvP Plugins",
|
name = "Hide PvP Plugins",
|
||||||
description = "Hides all OpenOSRS Pvp plugins if checked",
|
description = "Hides all OpenOSRS Pvp plugins if checked",
|
||||||
@@ -112,7 +154,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 5,
|
position = 8,
|
||||||
keyName = "hideUtilityPlugins",
|
keyName = "hideUtilityPlugins",
|
||||||
name = "Hide Utility Plugins",
|
name = "Hide Utility Plugins",
|
||||||
description = "Hides all OpenOSRS utility plugins if checked",
|
description = "Hides all OpenOSRS utility plugins if checked",
|
||||||
@@ -128,7 +170,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
keyName = "pluginsColorTitle",
|
keyName = "pluginsColorTitle",
|
||||||
name = "Colors",
|
name = "Colors",
|
||||||
description = "",
|
description = "",
|
||||||
position = 7
|
position = 9
|
||||||
)
|
)
|
||||||
default Title pluginsColorTitle()
|
default Title pluginsColorTitle()
|
||||||
{
|
{
|
||||||
@@ -137,7 +179,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
|
|
||||||
@Alpha
|
@Alpha
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 8,
|
position = 10,
|
||||||
keyName = "externalColor",
|
keyName = "externalColor",
|
||||||
name = "External color",
|
name = "External color",
|
||||||
description = "Configure the color of external plugins",
|
description = "Configure the color of external plugins",
|
||||||
@@ -150,7 +192,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
|
|
||||||
@Alpha
|
@Alpha
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 9,
|
position = 11,
|
||||||
keyName = "pvmColor",
|
keyName = "pvmColor",
|
||||||
name = "PVM color",
|
name = "PVM color",
|
||||||
description = "Configure the color of PVM related plugins",
|
description = "Configure the color of PVM related plugins",
|
||||||
@@ -163,7 +205,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
|
|
||||||
@Alpha
|
@Alpha
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 10,
|
position = 12,
|
||||||
keyName = "pvpColor",
|
keyName = "pvpColor",
|
||||||
name = "PVP color",
|
name = "PVP color",
|
||||||
description = "Configure the color of PVP related plugins",
|
description = "Configure the color of PVP related plugins",
|
||||||
@@ -176,7 +218,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
|
|
||||||
@Alpha
|
@Alpha
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 11,
|
position = 13,
|
||||||
keyName = "skillingColor",
|
keyName = "skillingColor",
|
||||||
name = "Skilling color",
|
name = "Skilling color",
|
||||||
description = "Configure the color of Skilling related plugins",
|
description = "Configure the color of Skilling related plugins",
|
||||||
@@ -189,7 +231,7 @@ public interface PluginSorterConfig extends Config
|
|||||||
|
|
||||||
@Alpha
|
@Alpha
|
||||||
@ConfigItem(
|
@ConfigItem(
|
||||||
position = 12,
|
position = 14,
|
||||||
keyName = "utilityColor",
|
keyName = "utilityColor",
|
||||||
name = "Utility color",
|
name = "Utility color",
|
||||||
description = "Configure the color of Utility related plugins",
|
description = "Configure the color of Utility related plugins",
|
||||||
|
|||||||
@@ -24,8 +24,10 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.pluginsorter;
|
package net.runelite.client.plugins.pluginsorter;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.util.Comparator;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
import net.runelite.api.events.ConfigChanged;
|
||||||
@@ -53,12 +55,30 @@ public class PluginSorterPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private EventBus eventBus;
|
private EventBus eventBus;
|
||||||
|
|
||||||
|
private PluginSorterConfig.SortStyle pluginSortMode;
|
||||||
private Color externalColor;
|
private Color externalColor;
|
||||||
private Color pvmColor;
|
private Color pvmColor;
|
||||||
private Color pvpColor;
|
private Color pvpColor;
|
||||||
private Color skillingColor;
|
private Color skillingColor;
|
||||||
private Color utilityColor;
|
private Color utilityColor;
|
||||||
|
|
||||||
|
private final ImmutableList<PluginType> definedOrder = ImmutableList.of(PluginType.IMPORTANT, PluginType.EXTERNAL, PluginType.PVM, PluginType.SKILLING, PluginType.PVP, PluginType.UTILITY, PluginType.GENERAL_USE, PluginType.PLUGIN_ORGANIZER);
|
||||||
|
private final Comparator<PluginListItem> pluginTypeComparator = Comparator.comparing(plugin ->
|
||||||
|
{
|
||||||
|
PluginType type = PluginType.GENERAL_USE;
|
||||||
|
Plugin sortPlugin = plugin.getPlugin();
|
||||||
|
if (sortPlugin != null)
|
||||||
|
{
|
||||||
|
type = sortPlugin.getClass().getAnnotation(PluginDescriptor.class).type();
|
||||||
|
}
|
||||||
|
else if (plugin.configDescriptor.getGroup().value().equals("openosrs") || plugin.configDescriptor.getGroup().value().equals("runelite"))
|
||||||
|
{
|
||||||
|
type = PluginType.IMPORTANT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return definedOrder.indexOf(type);
|
||||||
|
});
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
PluginSorterConfig provideConfig(ConfigManager configManager)
|
PluginSorterConfig provideConfig(ConfigManager configManager)
|
||||||
{
|
{
|
||||||
@@ -148,10 +168,20 @@ public class PluginSorterPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.pluginSortMode == PluginSorterConfig.SortStyle.CATEGORY)
|
||||||
|
{
|
||||||
|
ConfigPanel.pluginList.sort(pluginTypeComparator.thenComparing(PluginListItem::getName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConfigPanel.pluginList.sort(Comparator.comparing(PluginListItem::getName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateConfig()
|
private void updateConfig()
|
||||||
{
|
{
|
||||||
|
this.pluginSortMode = config.pluginSortMode();
|
||||||
this.externalColor = config.externalColor();
|
this.externalColor = config.externalColor();
|
||||||
this.pvmColor = config.pvmColor();
|
this.pvmColor = config.pvmColor();
|
||||||
this.pvpColor = config.pvpColor();
|
this.pvpColor = config.pvpColor();
|
||||||
|
|||||||
Reference in New Issue
Block a user