mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Animated "remind" feature in ViewMessage.
This commit is contained in:
@@ -18,16 +18,16 @@
|
|||||||
package forge.view.match;
|
package forge.view.match;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.event.ActionEvent;
|
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
import java.awt.event.ComponentAdapter;
|
import java.awt.event.ComponentAdapter;
|
||||||
import java.awt.event.ComponentEvent;
|
import java.awt.event.ComponentEvent;
|
||||||
|
import java.util.Timer;
|
||||||
|
import java.util.TimerTask;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.Timer;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.border.MatteBorder;
|
import javax.swing.border.MatteBorder;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
@@ -48,6 +48,7 @@ public class ViewMessage extends FPanel {
|
|||||||
private final JLabel lblGames;
|
private final JLabel lblGames;
|
||||||
private Timer timer1 = null;
|
private Timer timer1 = null;
|
||||||
private static int counter = 0;
|
private static int counter = 0;
|
||||||
|
private int[] newA = null, newR = null, newG = null, newB = null;
|
||||||
private boolean remindIsRunning = false;
|
private boolean remindIsRunning = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -135,30 +136,52 @@ public class ViewMessage extends FPanel {
|
|||||||
|
|
||||||
/** Flashes animation on input panel if play is currently waiting on input. */
|
/** Flashes animation on input panel if play is currently waiting on input. */
|
||||||
public void remind() {
|
public void remind() {
|
||||||
|
// To adjust, only touch these two values.
|
||||||
|
final int steps = 5; // Number of delays
|
||||||
|
final int delay = 80; // Milliseconds between steps
|
||||||
|
|
||||||
if (remindIsRunning) { return; }
|
if (remindIsRunning) { return; }
|
||||||
|
|
||||||
remindIsRunning = true;
|
remindIsRunning = true;
|
||||||
final int[] steps = {210, 215, 220, 220, 220, 215, 210};
|
final int oldR = getBackground().getRed();
|
||||||
final Color oldBG = getBackground();
|
final int oldG = getBackground().getGreen();
|
||||||
|
final int oldB = getBackground().getBlue();
|
||||||
|
final int oldA = getBackground().getAlpha();
|
||||||
counter = 0;
|
counter = 0;
|
||||||
|
newR = new int[steps];
|
||||||
|
newG = new int[steps];
|
||||||
|
newB = new int[steps];
|
||||||
|
newA = new int[steps];
|
||||||
|
|
||||||
ActionListener fader = new ActionListener() {
|
for (int i = 0; i < steps; i++) {
|
||||||
|
newR[i] = (int) ((255 - oldR) / steps * i);
|
||||||
|
newG[i] = (int) (oldG / steps * i);
|
||||||
|
newB[i] = (int) (oldB / steps * i);
|
||||||
|
newA[i] = (int) ((255 - oldA) / steps * i);
|
||||||
|
}
|
||||||
|
|
||||||
|
final TimerTask tt = new TimerTask() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(final ActionEvent evt) {
|
public void run() {
|
||||||
counter++;
|
counter++;
|
||||||
if (counter != (steps.length - 1)) {
|
if (counter != (steps - 1)) {
|
||||||
setBackground(new Color(255, 0, 0, steps[counter]));
|
SwingUtilities.invokeLater(new Runnable() { @Override
|
||||||
|
public void run() { setBackground(new Color(newR[counter], oldG, oldB, newA[counter])); } });
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
setBackground(oldBG);
|
SwingUtilities.invokeLater(new Runnable() { @Override
|
||||||
|
public void run() { setBackground(new Color(oldR, oldG, oldB, oldA)); } });
|
||||||
remindIsRunning = false;
|
remindIsRunning = false;
|
||||||
timer1.stop();
|
timer1.cancel();
|
||||||
|
newR = null;
|
||||||
|
newG = null;
|
||||||
|
newB = null;
|
||||||
|
newA = null;
|
||||||
}
|
}
|
||||||
repaint();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
timer1 = new Timer(100, fader);
|
timer1 = new Timer();
|
||||||
timer1.start();
|
timer1.scheduleAtFixedRate(tt, 0, delay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user