Update menu option on favorite
Updates the right click menu option of each row when the player favorites a world or removes it from the favorites list.
This commit is contained in:
@@ -228,6 +228,7 @@ public class WorldHopperPlugin extends Plugin
|
|||||||
private void clearFavoriteConfig(int world)
|
private void clearFavoriteConfig(int world)
|
||||||
{
|
{
|
||||||
configManager.unsetConfiguration(WorldHopperConfig.GROUP, "favorite_" + world);
|
configManager.unsetConfiguration(WorldHopperConfig.GROUP, "favorite_" + world);
|
||||||
|
panel.resetAllFavoriteMenus();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isFavorite(World world)
|
boolean isFavorite(World world)
|
||||||
@@ -250,12 +251,14 @@ public class WorldHopperPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
log.debug("Adding world {} to favorites", world.getId());
|
log.debug("Adding world {} to favorites", world.getId());
|
||||||
setFavoriteConfig(world.getId());
|
setFavoriteConfig(world.getId());
|
||||||
|
panel.updateFavoriteMenu(world.getId(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeFromFavorites(World world)
|
void removeFromFavorites(World world)
|
||||||
{
|
{
|
||||||
log.debug("Removing world {} from favorites", world.getId());
|
log.debug("Removing world {} from favorites", world.getId());
|
||||||
clearFavoriteConfig(world.getId());
|
clearFavoriteConfig(world.getId());
|
||||||
|
panel.updateFavoriteMenu(world.getId(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
|||||||
@@ -150,6 +150,26 @@ class WorldSwitcherPanel extends PluginPanel
|
|||||||
listContainer.repaint();
|
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)
|
void populate(List<World> worlds)
|
||||||
{
|
{
|
||||||
rows.clear();
|
rows.clear();
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.worldhopper;
|
|||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
@@ -69,9 +70,12 @@ class WorldTableRow extends JPanel
|
|||||||
FLAG_GER = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_ger.png"));
|
FLAG_GER = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_ger.png"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final JMenuItem favoriteMenuOption = new JMenuItem();
|
||||||
|
|
||||||
private JLabel worldField;
|
private JLabel worldField;
|
||||||
private JLabel playerCountField;
|
private JLabel playerCountField;
|
||||||
private JLabel activityField;
|
private JLabel activityField;
|
||||||
|
private BiConsumer<World, Boolean> onFavorite;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final World world;
|
private final World world;
|
||||||
@@ -86,6 +90,7 @@ class WorldTableRow extends JPanel
|
|||||||
{
|
{
|
||||||
this.current = current;
|
this.current = current;
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
this.onFavorite = onFavorite;
|
||||||
this.updatedPlayerCount = world.getPlayers();
|
this.updatedPlayerCount = world.getPlayers();
|
||||||
|
|
||||||
setLayout(new BorderLayout());
|
setLayout(new BorderLayout());
|
||||||
@@ -137,19 +142,11 @@ class WorldTableRow extends JPanel
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
String favoriteAction = favorite ?
|
setFavoriteMenu(favorite);
|
||||||
"Remove " + world.getId() + " from favorites" :
|
|
||||||
"Add " + world.getId() + " to favorites";
|
|
||||||
|
|
||||||
final JMenuItem fav = new JMenuItem(favoriteAction);
|
|
||||||
fav.addActionListener(e ->
|
|
||||||
{
|
|
||||||
onFavorite.accept(world, !favorite);
|
|
||||||
});
|
|
||||||
|
|
||||||
final JPopupMenu popupMenu = new JPopupMenu();
|
final JPopupMenu popupMenu = new JPopupMenu();
|
||||||
popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5));
|
popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||||
popupMenu.add(fav);
|
popupMenu.add(favoriteMenuOption);
|
||||||
|
|
||||||
setComponentPopupMenu(popupMenu);
|
setComponentPopupMenu(popupMenu);
|
||||||
|
|
||||||
@@ -177,6 +174,25 @@ class WorldTableRow extends JPanel
|
|||||||
add(activityField, BorderLayout.CENTER);
|
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)
|
void updatePlayerCount(int playerCount)
|
||||||
{
|
{
|
||||||
this.updatedPlayerCount = playerCount;
|
this.updatedPlayerCount = playerCount;
|
||||||
|
|||||||
Reference in New Issue
Block a user