Merge pull request #3043 from RubenG123/ui-tweaks
UI element mouse hover improvements
This commit is contained in:
@@ -37,6 +37,7 @@ import java.awt.event.MouseAdapter;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.WindowAdapter;
|
import java.awt.event.WindowAdapter;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -80,6 +81,7 @@ import net.runelite.client.ui.DynamicGridLayout;
|
|||||||
import net.runelite.client.ui.PluginPanel;
|
import net.runelite.client.ui.PluginPanel;
|
||||||
import net.runelite.client.ui.components.ComboBoxListRenderer;
|
import net.runelite.client.ui.components.ComboBoxListRenderer;
|
||||||
import net.runelite.client.ui.components.IconTextField;
|
import net.runelite.client.ui.components.IconTextField;
|
||||||
|
import net.runelite.client.util.SwingUtil;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class ConfigPanel extends PluginPanel
|
public class ConfigPanel extends PluginPanel
|
||||||
@@ -88,6 +90,7 @@ public class ConfigPanel extends PluginPanel
|
|||||||
private static final int SPINNER_FIELD_WIDTH = 6;
|
private static final int SPINNER_FIELD_WIDTH = 6;
|
||||||
|
|
||||||
private static final ImageIcon CONFIG_ICON;
|
private static final ImageIcon CONFIG_ICON;
|
||||||
|
private static final ImageIcon CONFIG_ICON_HOVER;
|
||||||
private static final ImageIcon ON_SWITCHER;
|
private static final ImageIcon ON_SWITCHER;
|
||||||
private static final ImageIcon OFF_SWITCHER;
|
private static final ImageIcon OFF_SWITCHER;
|
||||||
private static final ImageIcon SEARCH;
|
private static final ImageIcon SEARCH;
|
||||||
@@ -98,7 +101,9 @@ public class ConfigPanel extends PluginPanel
|
|||||||
{
|
{
|
||||||
synchronized (ImageIO.class)
|
synchronized (ImageIO.class)
|
||||||
{
|
{
|
||||||
CONFIG_ICON = new ImageIcon(ImageIO.read(ConfigPanel.class.getResourceAsStream("config_edit_icon.png")));
|
BufferedImage configIcon = ImageIO.read(ConfigPanel.class.getResourceAsStream("config_edit_icon.png"));
|
||||||
|
CONFIG_ICON = new ImageIcon(configIcon);
|
||||||
|
CONFIG_ICON_HOVER = new ImageIcon(SwingUtil.grayscaleOffset(configIcon, -100));
|
||||||
ON_SWITCHER = new ImageIcon(ImageIO.read(ConfigPanel.class.getResourceAsStream("switchers/on.png")));
|
ON_SWITCHER = new ImageIcon(ImageIO.read(ConfigPanel.class.getResourceAsStream("switchers/on.png")));
|
||||||
OFF_SWITCHER = new ImageIcon(ImageIO.read(ConfigPanel.class.getResourceAsStream("switchers/off.png")));
|
OFF_SWITCHER = new ImageIcon(ImageIO.read(ConfigPanel.class.getResourceAsStream("switchers/off.png")));
|
||||||
SEARCH = new ImageIcon(ImageIO.read(IconTextField.class.getResourceAsStream("search.png")));
|
SEARCH = new ImageIcon(ImageIO.read(IconTextField.class.getResourceAsStream("search.png")));
|
||||||
@@ -246,8 +251,21 @@ public class ConfigPanel extends PluginPanel
|
|||||||
@Override
|
@Override
|
||||||
public void mousePressed(MouseEvent mouseEvent)
|
public void mousePressed(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
|
editConfigButton.setIcon(CONFIG_ICON);
|
||||||
openGroupConfigPanel(config, configDescriptor, configManager);
|
openGroupConfigPanel(config, configDescriptor, configManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e)
|
||||||
|
{
|
||||||
|
editConfigButton.setIcon(CONFIG_ICON_HOVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e)
|
||||||
|
{
|
||||||
|
editConfigButton.setIcon(CONFIG_ICON);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
editConfigButton.setVisible(true);
|
editConfigButton.setVisible(true);
|
||||||
editConfigButton.setToolTipText("Edit plugin configuration");
|
editConfigButton.setToolTipText("Edit plugin configuration");
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ import java.awt.Dimension;
|
|||||||
import java.awt.GridBagConstraints;
|
import java.awt.GridBagConstraints;
|
||||||
import java.awt.GridBagLayout;
|
import java.awt.GridBagLayout;
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
|
import java.awt.event.MouseAdapter;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -185,6 +187,20 @@ class FarmingTrackerPanel extends PluginPanel
|
|||||||
resize.run();
|
resize.run();
|
||||||
|
|
||||||
materialTab.setOnSelectEvent(() -> config.setPatch(tab));
|
materialTab.setOnSelectEvent(() -> config.setPatch(tab));
|
||||||
|
materialTab.addMouseListener(new MouseAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e)
|
||||||
|
{
|
||||||
|
materialTab.setBackground(ColorScheme.DARKER_GRAY_HOVER_COLOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e)
|
||||||
|
{
|
||||||
|
materialTab.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
tabGroup.addTab(materialTab);
|
tabGroup.addTab(materialTab);
|
||||||
if (config.patch() == tab)
|
if (config.patch() == tab)
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.feed;
|
|||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
@@ -328,12 +329,14 @@ class FeedPanel extends PluginPanel
|
|||||||
public void mouseEntered(MouseEvent e)
|
public void mouseEntered(MouseEvent e)
|
||||||
{
|
{
|
||||||
avatarAndRight.setBackground(hoverColor);
|
avatarAndRight.setBackground(hoverColor);
|
||||||
|
avatarAndRight.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(MouseEvent e)
|
public void mouseExited(MouseEvent e)
|
||||||
{
|
{
|
||||||
avatarAndRight.setBackground(backgroundColor);
|
avatarAndRight.setBackground(backgroundColor);
|
||||||
|
avatarAndRight.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ package net.runelite.client.plugins.grandexchange;
|
|||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
@@ -65,13 +67,23 @@ class GrandExchangeItemPanel extends JPanel
|
|||||||
@Override
|
@Override
|
||||||
public void mouseEntered(MouseEvent e)
|
public void mouseEntered(MouseEvent e)
|
||||||
{
|
{
|
||||||
setBackground(getBackground().brighter());
|
setBackground(background.brighter());
|
||||||
|
for (Component component : getComponents())
|
||||||
|
{
|
||||||
|
component.setBackground(component.getBackground().brighter());
|
||||||
|
}
|
||||||
|
setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseExited(MouseEvent e)
|
public void mouseExited(MouseEvent e)
|
||||||
{
|
{
|
||||||
setBackground(background);
|
setBackground(background);
|
||||||
|
for (Component component : getComponents())
|
||||||
|
{
|
||||||
|
component.setBackground(background);
|
||||||
|
}
|
||||||
|
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -27,6 +27,9 @@
|
|||||||
package net.runelite.client.plugins.grandexchange;
|
package net.runelite.client.plugins.grandexchange;
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.event.MouseAdapter;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
@@ -72,6 +75,29 @@ class GrandExchangePanel extends PluginPanel
|
|||||||
MaterialTab offersTab = new MaterialTab("Offers", tabGroup, offersPanel);
|
MaterialTab offersTab = new MaterialTab("Offers", tabGroup, offersPanel);
|
||||||
searchTab = new MaterialTab("Search", tabGroup, searchPanel);
|
searchTab = new MaterialTab("Search", tabGroup, searchPanel);
|
||||||
|
|
||||||
|
MouseAdapter materialTabMouseAdapter = new MouseAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e)
|
||||||
|
{
|
||||||
|
MaterialTab tab = (MaterialTab)e.getSource();
|
||||||
|
tab.setForeground(Color.WHITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e)
|
||||||
|
{
|
||||||
|
MaterialTab tab = (MaterialTab)e.getSource();
|
||||||
|
if (!tab.isSelected())
|
||||||
|
{
|
||||||
|
tab.setForeground(Color.GRAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
searchTab.addMouseListener(materialTabMouseAdapter);
|
||||||
|
offersTab.addMouseListener(materialTabMouseAdapter);
|
||||||
|
|
||||||
tabGroup.setBorder(new EmptyBorder(5, 0, 0, 0));
|
tabGroup.setBorder(new EmptyBorder(5, 0, 0, 0));
|
||||||
tabGroup.addTab(offersTab);
|
tabGroup.addTab(offersTab);
|
||||||
tabGroup.addTab(searchTab);
|
tabGroup.addTab(searchTab);
|
||||||
|
|||||||
@@ -251,6 +251,18 @@ public class HiscorePanel extends PluginPanel
|
|||||||
selectedEndPoint = endpoint;
|
selectedEndPoint = endpoint;
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e)
|
||||||
|
{
|
||||||
|
panel.setBackground(ColorScheme.DARKER_GRAY_HOVER_COLOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e)
|
||||||
|
{
|
||||||
|
panel.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
endPoints.add(panel);
|
endPoints.add(panel);
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import com.google.common.eventbus.Subscribe;
|
|||||||
import com.google.inject.Inject;
|
import com.google.inject.Inject;
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
@@ -180,14 +181,9 @@ public class InfoPanel extends PluginPanel
|
|||||||
container.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
container.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||||
container.setLayout(new BorderLayout());
|
container.setLayout(new BorderLayout());
|
||||||
container.setBorder(new EmptyBorder(10, 10, 10, 10));
|
container.setBorder(new EmptyBorder(10, 10, 10, 10));
|
||||||
container.addMouseListener(new MouseAdapter()
|
|
||||||
{
|
final Color hoverColor = ColorScheme.DARKER_GRAY_HOVER_COLOR;
|
||||||
@Override
|
final Color pressedColor = ColorScheme.DARKER_GRAY_COLOR.brighter();
|
||||||
public void mousePressed(MouseEvent mouseEvent)
|
|
||||||
{
|
|
||||||
LinkBrowser.browse(url);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
JLabel iconLabel = new JLabel(icon);
|
JLabel iconLabel = new JLabel(icon);
|
||||||
container.add(iconLabel, BorderLayout.WEST);
|
container.add(iconLabel, BorderLayout.WEST);
|
||||||
@@ -197,6 +193,40 @@ public class InfoPanel extends PluginPanel
|
|||||||
textContainer.setLayout(new GridLayout(2, 1));
|
textContainer.setLayout(new GridLayout(2, 1));
|
||||||
textContainer.setBorder(new EmptyBorder(5, 10, 5, 10));
|
textContainer.setBorder(new EmptyBorder(5, 10, 5, 10));
|
||||||
|
|
||||||
|
container.addMouseListener(new MouseAdapter()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent mouseEvent)
|
||||||
|
{
|
||||||
|
LinkBrowser.browse(url);
|
||||||
|
container.setBackground(pressedColor);
|
||||||
|
textContainer.setBackground(pressedColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseReleased(MouseEvent e)
|
||||||
|
{
|
||||||
|
container.setBackground(hoverColor);
|
||||||
|
textContainer.setBackground(hoverColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseEntered(MouseEvent e)
|
||||||
|
{
|
||||||
|
container.setBackground(hoverColor);
|
||||||
|
textContainer.setBackground(hoverColor);
|
||||||
|
container.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void mouseExited(MouseEvent e)
|
||||||
|
{
|
||||||
|
container.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||||
|
textContainer.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||||
|
container.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
JLabel topLine = new JLabel(topText);
|
JLabel topLine = new JLabel(topText);
|
||||||
topLine.setForeground(Color.WHITE);
|
topLine.setForeground(Color.WHITE);
|
||||||
topLine.setFont(FontManager.getRunescapeSmallFont());
|
topLine.setFont(FontManager.getRunescapeSmallFont());
|
||||||
|
|||||||
@@ -288,6 +288,14 @@ public class SwingUtil
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-size a BufferedImage to the given dimensions.
|
||||||
|
*
|
||||||
|
* @param image the BufferedImage.
|
||||||
|
* @param newWidth The width to set the BufferedImage to.
|
||||||
|
* @param newHeight The height to set the BufferedImage to.
|
||||||
|
* @return The BufferedImage with the specified dimensions
|
||||||
|
*/
|
||||||
private static BufferedImage resizeImage(BufferedImage image, int newWidth, int newHeight)
|
private static BufferedImage resizeImage(BufferedImage image, int newWidth, int newHeight)
|
||||||
{
|
{
|
||||||
final Image tmp = image.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
|
final Image tmp = image.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
|
||||||
|
|||||||
Reference in New Issue
Block a user