package org.ripple.power.ui;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import org.ripple.power.config.LSystem;
import org.ripple.power.helper.Gradation;
import org.ripple.power.sound.MP4Player;
import org.ripple.power.txns.Updateable;
import org.ripple.power.ui.graphics.LColor;
import org.ripple.power.ui.graphics.LGraphics;
import org.ripple.power.ui.graphics.LImage;
import org.ripple.power.wallet.WalletCache;
public class RPCScrollPane extends JScrollPane {
/**
*
*/
private static final long serialVersionUID = 1L;
private Gradation _gradation;
private LColor _colorStart, _colorEnd;
private int _alpha;
private boolean _isRunning;
private int _address_limit = 1;
private LImage _image;
private LGraphics _graphics;
private MP4Player _player;
private boolean _media;
public RPCScrollPane(Component view, LColor start, LColor end, int alpha,
boolean media) {
super(view);
_colorStart = start;
_colorEnd = end;
_alpha = alpha;
_media = media;
_isRunning = WalletCache.get().size() < _address_limit;
setOpaque(false);
setBackground(new LColor(0f, 0F, 0F, 0F));
setBorder(new EmptyBorder(1, 1, 1, 1));
getViewport().setOpaque(false);
}
private Thread _thread;
private void loop() {
_isRunning = true;
final long timer = 120;
Updateable update = new Updateable() {
public void action(Object o) {
for (; _isRunning && WalletCache.get().size() < _address_limit;) {
if (_player != null) {
_player.update(timer);
}
repaint();
try {
Thread.sleep(timer);
} catch (InterruptedException e) {
}
}
repaint();
_image = null;
_isRunning = false;
}
};
if (_thread == null) {
_thread = LSystem.postThread(update);
} else {
try {
_isRunning = false;
_thread.interrupt();
_thread = null;
} catch (Exception ex) {
}
_isRunning = true;
_thread = LSystem.postThread(update);
}
}
protected synchronized void paintComponent(Graphics g) {
super.paintComponent(g);
if (WalletCache.get().size() < _address_limit && _media) {
if (_image == null) {
loop();
_image = new LImage(getWidth(), getHeight());
_graphics = _image.getLGraphics();
_player = new MP4Player(getWidth(), getHeight());
_player.play("ripple");
}
_graphics.drawClear();
_player.drawUI(_graphics, 0, 0, getWidth(), getHeight());
g.drawImage(_image.getBufferedImage(), 0, 0, this);
} else {
if (_gradation == null) {
_gradation = Gradation.getInstance(_colorStart, _colorEnd,
getWidth(), getHeight(), _alpha);
}
_gradation.drawHeight(g, 0, 0);
g.setColor(LColor.white.brighter());
g.drawRoundRect(0, 0, getWidth(), getHeight(), 0, 0);
g.drawRoundRect(0, 0, getWidth() - 2, getHeight() - 2, 0, 0);
}
}
}