Merge pull request #4924 from psikoi/world-hopper-lotto-fix
More World hopper bug fixes
This commit is contained in:
@@ -44,6 +44,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.inject.Inject;
|
||||
import javax.swing.SwingUtilities;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.ChatPlayer;
|
||||
@@ -124,6 +125,7 @@ public class WorldHopperPlugin extends Plugin
|
||||
private NavigationButton navButton;
|
||||
private WorldSwitcherPanel panel;
|
||||
|
||||
@Getter
|
||||
private int lastWorld;
|
||||
|
||||
private int favoriteWorld1, favoriteWorld2;
|
||||
@@ -228,6 +230,7 @@ public class WorldHopperPlugin extends Plugin
|
||||
private void clearFavoriteConfig(int world)
|
||||
{
|
||||
configManager.unsetConfiguration(WorldHopperConfig.GROUP, "favorite_" + world);
|
||||
panel.resetAllFavoriteMenus();
|
||||
}
|
||||
|
||||
boolean isFavorite(World world)
|
||||
@@ -250,12 +253,14 @@ public class WorldHopperPlugin extends Plugin
|
||||
{
|
||||
log.debug("Adding world {} to favorites", world.getId());
|
||||
setFavoriteConfig(world.getId());
|
||||
panel.updateFavoriteMenu(world.getId(), true);
|
||||
}
|
||||
|
||||
void removeFromFavorites(World world)
|
||||
{
|
||||
log.debug("Removing world {} from favorites", world.getId());
|
||||
clearFavoriteConfig(world.getId());
|
||||
panel.updateFavoriteMenu(world.getId(), false);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
||||
@@ -150,6 +150,26 @@ class WorldSwitcherPanel extends PluginPanel
|
||||
listContainer.repaint();
|
||||
}
|
||||
|
||||
void updateFavoriteMenu(int world, boolean favorite)
|
||||
{
|
||||
for (WorldTableRow row : rows)
|
||||
{
|
||||
if (row.getWorld().getId() == world)
|
||||
{
|
||||
row.setFavoriteMenu(favorite);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void resetAllFavoriteMenus()
|
||||
{
|
||||
for (WorldTableRow row : rows)
|
||||
{
|
||||
row.setFavoriteMenu(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void populate(List<World> worlds)
|
||||
{
|
||||
rows.clear();
|
||||
@@ -157,7 +177,7 @@ class WorldSwitcherPanel extends PluginPanel
|
||||
for (int i = 0; i < worlds.size(); i++)
|
||||
{
|
||||
World world = worlds.get(i);
|
||||
rows.add(buildRow(world, i % 2 == 0, world.getId() == plugin.getCurrentWorld(), plugin.isFavorite(world)));
|
||||
rows.add(buildRow(world, i % 2 == 0, world.getId() == plugin.getCurrentWorld() && plugin.getLastWorld() != 0, plugin.isFavorite(world)));
|
||||
}
|
||||
|
||||
updateList();
|
||||
|
||||
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.worldhopper;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.function.BiConsumer;
|
||||
@@ -69,9 +70,12 @@ class WorldTableRow extends JPanel
|
||||
FLAG_GER = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_ger.png"));
|
||||
}
|
||||
|
||||
private final JMenuItem favoriteMenuOption = new JMenuItem();
|
||||
|
||||
private JLabel worldField;
|
||||
private JLabel playerCountField;
|
||||
private JLabel activityField;
|
||||
private BiConsumer<World, Boolean> onFavorite;
|
||||
|
||||
@Getter
|
||||
private final World world;
|
||||
@@ -86,6 +90,7 @@ class WorldTableRow extends JPanel
|
||||
{
|
||||
this.current = current;
|
||||
this.world = world;
|
||||
this.onFavorite = onFavorite;
|
||||
this.updatedPlayerCount = world.getPlayers();
|
||||
|
||||
setLayout(new BorderLayout());
|
||||
@@ -137,19 +142,11 @@ class WorldTableRow extends JPanel
|
||||
}
|
||||
});
|
||||
|
||||
String favoriteAction = favorite ?
|
||||
"Remove " + world.getId() + " from favorites" :
|
||||
"Add " + world.getId() + " to favorites";
|
||||
|
||||
final JMenuItem fav = new JMenuItem(favoriteAction);
|
||||
fav.addActionListener(e ->
|
||||
{
|
||||
onFavorite.accept(world, !favorite);
|
||||
});
|
||||
setFavoriteMenu(favorite);
|
||||
|
||||
final JPopupMenu popupMenu = new JPopupMenu();
|
||||
popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
popupMenu.add(fav);
|
||||
popupMenu.add(favoriteMenuOption);
|
||||
|
||||
setComponentPopupMenu(popupMenu);
|
||||
|
||||
@@ -177,6 +174,25 @@ class WorldTableRow extends JPanel
|
||||
add(activityField, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
void setFavoriteMenu(boolean favorite)
|
||||
{
|
||||
String favoriteAction = favorite ?
|
||||
"Remove " + world.getId() + " from favorites" :
|
||||
"Add " + world.getId() + " to favorites";
|
||||
|
||||
favoriteMenuOption.setText(favoriteAction);
|
||||
|
||||
for (ActionListener listener : favoriteMenuOption.getActionListeners())
|
||||
{
|
||||
favoriteMenuOption.removeActionListener(listener);
|
||||
}
|
||||
|
||||
favoriteMenuOption.addActionListener(e ->
|
||||
{
|
||||
onFavorite.accept(world, !favorite);
|
||||
});
|
||||
}
|
||||
|
||||
void updatePlayerCount(int playerCount)
|
||||
{
|
||||
this.updatedPlayerCount = playerCount;
|
||||
@@ -204,6 +220,10 @@ class WorldTableRow extends JPanel
|
||||
{
|
||||
activityField.setForeground(TOURNAMENT_WORLD);
|
||||
}
|
||||
else
|
||||
{
|
||||
activityField.setForeground(Color.WHITE);
|
||||
}
|
||||
|
||||
worldField.setForeground(world.getTypes().contains(WorldType.MEMBERS) ? MEMBERS_WORLD : FREE_WORLD);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user