FileDocCategorySizeDatePackage
TransitionTabbedPane.javaAPI DocExample1969Mon Jan 09 11:01:58 GMT 2006None

TransitionTabbedPane.java

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.image.*;

public class TransitionTabbedPane extends JTabbedPane 
    implements ChangeListener, Runnable {
    
    protected int step;
    protected BufferedImage buf = null;
    protected int previous_tab = -1;
    protected int animation_length = 20;

    public TransitionTabbedPane() {
        super();
        this.addChangeListener(this);
    }
    
    public void paintChildren(Graphics g) {
        super.paintChildren(g);
        
        if(step != -1) {
            Rectangle size = this.getComponentAt(0).getBounds();
            Graphics2D g2 = (Graphics2D)g;
            paintTransition(g2, step, size, buf);
        }
    }
    
    public int getAnimationLength() {
        return this.animation_length;
    }
    
    public void setAnimationLength(int length) {
        this.animation_length = length;
    }
    
    public void paintTransition(Graphics2D g2, int step,
            Rectangle size, Image prev) {
    }
    
    
    // threading code
    public void stateChanged(ChangeEvent evt) {
        new Thread(this).start();
    }
    

    public void run() {
        step = 0;
        
        // save the previous tab
        if(previous_tab != -1) {
            Component comp = this.getComponentAt(previous_tab);
            buf = new BufferedImage(comp.getWidth(),
                comp.getHeight(),
                BufferedImage.TYPE_4BYTE_ABGR);
            comp.paint(buf.getGraphics());
        }
        
        for(int i=0; i<animation_length; i++) {
            step = i;
            repaint();
            try {
                Thread.currentThread().sleep(100);
            } catch (Exception ex) {
                p("ex: " + ex);
            }
        }
        
        step = -1;
        previous_tab = this.getSelectedIndex();
        repaint();
    }
    
    
    public static void p(String s) {
        System.out.println(s);
    }
}