/* * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of Sun Microsystems nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package com.sun.swingset3; import com.sun.swingset3.utilities.RoundedPanel; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Insets; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import org.jdesktop.animation.timing.Animator; import org.jdesktop.animation.timing.interpolation.PropertySetter; /** * * @author Amy Fowler */ public class IntroPanel extends RoundedPanel { private JLabel introImage; private SlidingLabel introText; public IntroPanel() { setLayout(null); setOpaque(false); introImage = new JLabel(new ImageIcon( SwingSet3.class.getResource("resources/images/home_notext.png"))); introImage.setVerticalAlignment(JLabel.TOP); introText = new SlidingLabel(new ImageIcon( SwingSet3.class.getResource("resources/images/home_text.png"))); introText.setVisible(false); introImage.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent event) { slideTextIn(); } }); add(introText); add(introImage); } @Override public void doLayout() { Dimension size = getSize(); Insets insets = getInsets(); int w = size.width - insets.left - insets.right; Dimension prefSize = introImage.getPreferredSize(); introImage.setBounds(0, 0, prefSize.width, prefSize.height); if (introText.isVisible()) { prefSize = introText.getPreferredSize(); introText.setBounds(introText.getX(), introText.getY(), prefSize.width, prefSize.height); } } @Override public void paint(Graphics g) { super.paint(g); if (!introText.isVisible()) { introText.setLocation(1000, 110); introText.setVisible(true); slideTextIn(); } } public void slideTextIn() { Animator animator = new Animator(800, new PropertySetter(introText, "x", getWidth(), 30)); animator.setStartDelay(800); animator.setAcceleration(.2f); animator.setDeceleration(.5f); animator.start(); } public void slideTextOut() { Animator animator = new Animator(600, new PropertySetter(introText, "x", introText.getX(), -introText.getWidth())); animator.setStartDelay(10); animator.setAcceleration(.5f); animator.setDeceleration(.2f); animator.start(); } public class SlidingLabel extends JLabel { public SlidingLabel(Icon icon) { super(icon); } public void setX(int x) { setLocation(x, getY()); revalidate(); } } }