Package com.alee.examples.groups.complex

Source Code of com.alee.examples.groups.complex.ComplexExample$ShadeBackgroundPainter

/*
* This file is part of WebLookAndFeel library.
*
* WebLookAndFeel library is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* WebLookAndFeel library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WebLookAndFeel library.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.alee.examples.groups.complex;

import com.alee.examples.WebLookAndFeelDemo;
import com.alee.examples.content.DefaultExample;
import com.alee.extended.layout.ToolbarLayout;
import com.alee.extended.layout.VerticalFlowLayout;
import com.alee.extended.painter.AbstractPainter;
import com.alee.extended.painter.TexturePainter;
import com.alee.extended.window.TestFrame;
import com.alee.laf.WebLookAndFeel;
import com.alee.laf.label.WebLabel;
import com.alee.laf.panel.WebPanel;
import com.alee.managers.hotkey.Hotkey;
import com.alee.managers.hotkey.HotkeyManager;
import com.alee.managers.hotkey.HotkeyRunnable;
import com.alee.utils.DebugUtils;
import com.alee.utils.GraphicsUtils;
import com.alee.utils.ImageUtils;
import com.alee.utils.NinePatchUtils;
import com.alee.utils.ninepatch.NinePatchIcon;

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

/**
* User: mgarin Date: 13.12.12 Time: 20:20
*/

public class ComplexExample extends DefaultExample
{
    @Override
    public String getTitle ()
    {
        return "Custom panel";
    }

    @Override
    public String getDescription ()
    {
        return "Custom-styled panel";
    }

    @Override
    public Component getPreview ( final WebLookAndFeelDemo owner )
    {
        final WebPanel container = new WebPanel ( new TexturePainter ( loadIcon ( "bg1.png" ) ) );

        final WebPanel panel = new WebPanel ( new ToolbarLayout ( 0, 0, ToolbarLayout.VERTICAL ) );
        panel.setPainter ( new ShadeBackgroundPainter ( ImageUtils.getBufferedImage ( loadIcon ( "bg2.png" ) ) ) );
        container.add ( panel );

        final WebLabel titleLabel = new WebLabel ( "Custom-styled label" )
        {
            @Override
            protected void paintComponent ( final Graphics g )
            {
                super.paintComponent ( g );
                DebugUtils.paintBorderDebugInfo ( g, this );
            }
        };
        titleLabel.setBoldFont ();
        titleLabel.setForeground ( Color.WHITE );
        titleLabel.setHorizontalAlignment ( SwingConstants.CENTER );
        panel.add ( titleLabel, ToolbarLayout.START );

        final WebPanel innerPanel = new WebPanel ( new VerticalFlowLayout ( 15, 15 ) )
        {
            @Override
            protected void paintComponent ( final Graphics g )
            {
                super.paintComponent ( g );
                DebugUtils.paintBorderDebugInfo ( g, this );
            }
        };
        innerPanel.setPainter ( new ShadeBackgroundPainter ( null ) );
        panel.add ( innerPanel, ToolbarLayout.END );

        innerPanel.add ( new WebLabel ( "Card", loadIcon ( "type1.png" ) ) );
        innerPanel.add ( new WebLabel ( "Document", loadIcon ( "type2.png" ) ) );
        innerPanel.add ( new WebLabel ( "Folder", loadIcon ( "type3.png" ) ) );

        final WebPanel ppp = new WebPanel ( new ToolbarLayout ( 0, 0, ToolbarLayout.VERTICAL ) );
        ppp.setPainter ( new ShadeBackgroundPainter ( null ) );
        ppp.setShadeWidth ( 20 );
        ppp.add ( new WebLabel ( "123" ) );
        ppp.add ( new WebLabel ( "345" )
        {
            {
                setPainter ( new ShadeBackgroundPainter ( null ) );
            }
        }, ToolbarLayout.END );
        return ppp;
    }

    public static void main ( final String[] args )
    {
        WebLookAndFeel.install ();
        final TestFrame tf = TestFrame.show ( new ComplexExample ().getPreview ( null ), 0 );
        HotkeyManager.registerHotkey ( Hotkey.SPACE, new HotkeyRunnable ()
        {
            @Override
            public void run ( final KeyEvent e )
            {
                tf.pack ();
            }
        } );
    }

    /**
     * Custom shade background painter.
     */
    public class ShadeBackgroundPainter extends AbstractPainter<JComponent>
    {
        /**
         * Background image.
         */
        protected BufferedImage bg;

        /**
         * Constructs new shade background painter.
         *
         * @param bg background image
         */
        public ShadeBackgroundPainter ( final BufferedImage bg )
        {
            super ();
            this.bg = bg;
            setMargin ( 25 );
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public Dimension getPreferredSize ( final JComponent c )
        {
            return getShadeIcon ().getPreferredSize ();
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public void paint ( final Graphics2D g2d, final Rectangle bounds, final JComponent c )
        {
            // Shade
            getShadeIcon ().paintIcon ( g2d, bounds );

            // Background
            final Object aa = GraphicsUtils.setupAntialias ( g2d );
            g2d.setPaint ( bg != null ? new TexturePaint ( bg, new Rectangle ( 0, 0, bg.getWidth (), bg.getHeight () ) ) : Color.WHITE );
            g2d.fillRoundRect ( bounds.x + 20, bounds.y + 20, bounds.width - 40, bounds.height - 40, 20, 20 );
            GraphicsUtils.restoreAntialias ( g2d, aa );
        }

        /**
         * Returns shade icon.
         *
         * @return shade icon
         */
        protected NinePatchIcon getShadeIcon ()
        {
            return NinePatchUtils.getShadeIcon ( 20, 20, 1f );
        }
    }
}
TOP

Related Classes of com.alee.examples.groups.complex.ComplexExample$ShadeBackgroundPainter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.