package trident.swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.pushingpixels.trident.Timeline;
/** Created with IntelliJ IDEA. User: seanc Date: 28/11/12 Time: 13:45 */
public class SlidePanelUsingOverlayLayoutTest
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setSize(800, 600);
SlidePanel slidePanel = new SlidePanel(frame.getContentPane());
frame.getContentPane().add(slidePanel, BorderLayout.CENTER);
JButton runButton = new JButton("Run");
final Timeline timeline = new Timeline(slidePanel);
timeline.setDuration(2500);
runButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
if (!timeline.isDone())
timeline.cancel();
timeline.clearPropertyToInterpolate();
timeline.addPropertyToInterpolate("slide", 0, 100);
timeline.play();
}
});
frame.getContentPane().add(runButton, BorderLayout.NORTH);
frame.setVisible(true);
}
public static class SlidePanel extends JPanel
{
public Component parent;
public int slide;
private final JPanel backPanel = new JPanel();
private final JPanel frontPanel = new JPanel();
private SlidePanel(Component parent)
{
this.parent = parent;
setLayout(new OverlayLayout(SlidePanel.this));
backPanel.setBackground(Color.green);
backPanel.setMaximumSize(new Dimension(400, 300));
add(backPanel);
frontPanel.setBackground(Color.blue);
frontPanel.setMaximumSize(new Dimension(300, 400));
add(frontPanel);
}
public void setSlide(int slide)
{
this.slide = slide;
Dimension size = parent.getSize();
backPanel.setMaximumSize(new Dimension(size.width * slide / 100, size.height * slide / 100));
revalidate();
}
public int getSlide()
{
return slide;
}
}
}