timers plugin: add option to loop timers

This commit is contained in:
Mitchell Kovacs
2020-04-22 17:48:39 -04:00
committed by GitHub
parent 188a9414ff
commit 15b3d39446
6 changed files with 30 additions and 0 deletions

View File

@@ -122,6 +122,11 @@ public class ClockManager
{
notifier.notify("[" + timer.getName() + "] has finished counting down.");
}
if (timer.isLoop())
{
timer.start();
}
}
}

View File

@@ -57,6 +57,10 @@ public class ClockTabPanel extends TabContentPanel
static final ImageIcon RESET_ICON_HOVER;
static final ImageIcon START_ICON;
static final ImageIcon START_ICON_HOVER;
static final ImageIcon LOOP_ICON;
static final ImageIcon LOOP_ICON_HOVER;
static final ImageIcon LOOP_SELECTED_ICON;
static final ImageIcon LOOP_SELECTED_ICON_HOVER;
private static final ImageIcon ADD_ICON;
private static final ImageIcon ADD_ICON_HOVER;
@@ -73,6 +77,8 @@ public class ClockTabPanel extends TabContentPanel
BufferedImage resetIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "reset_icon.png");
BufferedImage startIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "start_icon.png");
BufferedImage addIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "add_icon.png");
BufferedImage loopIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "loop_icon.png");
BufferedImage loopSelectedIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "loop_selected_icon.png");
DELETE_ICON = new ImageIcon(deleteIcon);
DELETE_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(deleteIcon, -80));
@@ -86,6 +92,10 @@ public class ClockTabPanel extends TabContentPanel
START_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(startIcon, -80));
ADD_ICON = new ImageIcon(addIcon);
ADD_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(addIcon, 0.53f));
LOOP_ICON = new ImageIcon(loopIcon);
LOOP_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(loopIcon, -80));
LOOP_SELECTED_ICON = new ImageIcon(loopSelectedIcon);
LOOP_SELECTED_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(loopSelectedIcon, -80));
}
ClockTabPanel(ClockManager clockManager)

View File

@@ -45,6 +45,9 @@ class Timer extends Clock
@Getter(AccessLevel.NONE)
private transient boolean warning;
// whether this timer should loop or not
private boolean loop;
Timer(String name, long duration)
{
super(name);

View File

@@ -27,6 +27,7 @@ package net.runelite.client.plugins.timetracking.clocks;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JToggleButton;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.util.SwingUtil;
@@ -38,6 +39,17 @@ class TimerPanel extends ClockPanel
{
super(clockManager, timer, "timer", true);
JToggleButton loopButton = new JToggleButton(ClockTabPanel.LOOP_ICON);
loopButton.setRolloverIcon(ClockTabPanel.LOOP_ICON_HOVER);
loopButton.setSelectedIcon(ClockTabPanel.LOOP_SELECTED_ICON);
loopButton.setRolloverSelectedIcon(ClockTabPanel.LOOP_SELECTED_ICON_HOVER);
SwingUtil.removeButtonDecorations(loopButton);
loopButton.setPreferredSize(new Dimension(16, 14));
loopButton.setToolTipText("Loop timer");
loopButton.addActionListener(e -> timer.setLoop(!timer.isLoop()));
loopButton.setSelected(timer.isLoop());
leftActions.add(loopButton);
JButton deleteButton = new JButton(ClockTabPanel.DELETE_ICON);
SwingUtil.removeButtonDecorations(deleteButton);
deleteButton.setRolloverIcon(ClockTabPanel.DELETE_ICON_HOVER);