94 lines
2 KiB
Java
94 lines
2 KiB
Java
package de.zuim.ledcontrol;
|
|
|
|
import de.zuim.ledcontrol.effects.*;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.MouseEvent;
|
|
import java.awt.event.MouseListener;
|
|
import java.util.TimerTask;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
public class EffectManager {
|
|
|
|
private boolean sweep = false;
|
|
|
|
|
|
private final LEDEffect[] effects = new LEDEffect[]{new ClockEffect(), new AudioVolumeEffect(), new NetworkSpeedEffect(), new SineEffect(), new AudioFFTEffect(), new ColorSweepEffect()};
|
|
private int activeId = 4;
|
|
private final TrayIcon trayIcon;
|
|
|
|
public EffectManager() {
|
|
|
|
final SystemTray tray = SystemTray.getSystemTray();
|
|
trayIcon = new TrayIcon(new ImageIcon(getClass().getResource("/icon.png")).getImage(), "LEDEffects");
|
|
|
|
trayIcon.addMouseListener(new MouseListener() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
switch (e.getButton()) {
|
|
case MouseEvent.BUTTON1:
|
|
loadNext();
|
|
break;
|
|
case MouseEvent.BUTTON2:
|
|
sweep = !sweep;
|
|
loadNext();
|
|
break;
|
|
case MouseEvent.BUTTON3:
|
|
System.exit(0);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void mousePressed(MouseEvent e) {
|
|
}
|
|
|
|
@Override
|
|
public void mouseReleased(MouseEvent e) {
|
|
}
|
|
|
|
@Override
|
|
public void mouseEntered(MouseEvent e) {
|
|
}
|
|
|
|
@Override
|
|
public void mouseExited(MouseEvent e) {
|
|
}
|
|
});
|
|
|
|
try {
|
|
tray.add(trayIcon);
|
|
} catch (AWTException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
new Timer(30 * 1000, e -> {
|
|
if (sweep)
|
|
loadNext();
|
|
}).start();
|
|
|
|
loadNext(true);
|
|
}
|
|
|
|
private void loadNext() {
|
|
loadNext(false);
|
|
}
|
|
|
|
private void loadNext(boolean first) {
|
|
if (!first) {
|
|
getActiveEffect().unload();
|
|
activeId++;
|
|
if (activeId == effects.length)
|
|
activeId = 0;
|
|
}
|
|
getActiveEffect().load();
|
|
trayIcon.setToolTip("LEDEffects - " + getActiveEffect().getDescription() + (sweep ? " (autoswitch)" : ""));
|
|
}
|
|
|
|
public LEDEffect getActiveEffect() {
|
|
return effects[activeId];
|
|
}
|
|
}
|