import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Formatter;

import javax.swing.JEditorPane;
import javax.swing.SwingUtilities;

import org.jdesktop.animation.timing.Animator;
import org.jdesktop.animation.timing.TimingTarget;
import org.jdesktop.animation.timing.TimingTargetAdapter;

public class TimingSample1 extends BasicSample {
    private String baseText = "<html><head><style type=\"text/css\">h1 {font-family: sans-serif; font-size: 24px;} p {font-family: sans-serif; font-size: 32px; color: #%1$02x%1$02x%1$02x;}</style></head><body><h1>No. 1 消える文字</h1><p>消えます、消えます</p></body>";

    private JEditorPane pane;

    public TimingSample1() {
        super();

        String text = new Formatter().format(baseText, 0).toString();
        pane = new JEditorPane("text/html", text);
        pane.setEditable(false);

        frame.add(pane, BorderLayout.CENTER);
        frame.setSize(new Dimension(400, 200));
        frame.setVisible(true);
    }

    @Override
    protected void start() {
        TimingTarget target = new TimingTargetAdapter() {
                public void end() {
                    clear();
                }

                public void timingEvent(float fraction) {
                    int color = (int)(fraction * 0xff);
                    String text = new Formatter().format(baseText, color).toString();
                    pane.setText(text);

                    System.out.println("Fraction: " + fraction);
                }
            };

        Animator animator = new Animator(1000, target);
        animator.start();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new TimingSample1();
                }
            });
    }
}
