All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alee.examples.groups.popup.ButtonPopupExample Maven / Gradle / Ivy

/*
 * 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 .
 */

package com.alee.examples.groups.popup;

import com.alee.examples.WebLookAndFeelDemo;
import com.alee.examples.content.DefaultExample;
import com.alee.extended.layout.TableLayout;
import com.alee.extended.panel.GroupPanel;
import com.alee.laf.button.WebButton;
import com.alee.laf.label.WebLabel;
import com.alee.laf.panel.WebPanel;
import com.alee.laf.text.WebTextField;
import com.alee.managers.popup.PopupWay;
import com.alee.managers.popup.WebButtonPopup;

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

/**
 * User: mgarin Date: 20.08.12 Time: 15:07
 */

public class ButtonPopupExample extends DefaultExample
{
    @Override
    public String getTitle ()
    {
        return "Button popup";
    }

    @Override
    public String getDescription ()
    {
        return "Web-styled button popup";
    }

    @Override
    public Component getPreview ( WebLookAndFeelDemo owner )
    {
        // Grid-layouted container
        TableLayout gridLayout = new TableLayout ( new double[][]{ { TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED },
                { TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.PREFERRED } } );
        WebPanel gridPanel = new WebPanel ( gridLayout );

        // Popup buttons
        gridPanel.add ( new GroupPanel ( createPopupButton ( PopupWay.upLeft ), createPopupButton ( PopupWay.upCenter ),
                createPopupButton ( PopupWay.upRight ) ), "1,0" );
        gridPanel.add ( new GroupPanel ( false, createPopupButton ( PopupWay.leftUp ), createPopupButton ( PopupWay.leftCenter ),
                createPopupButton ( PopupWay.leftDown ) ), "0,1" );
        gridPanel.add ( new GroupPanel ( false, createPopupButton ( PopupWay.rightUp ), createPopupButton ( PopupWay.rightCenter ),
                createPopupButton ( PopupWay.rightDown ) ), "2,1" );
        gridPanel.add ( new GroupPanel ( createPopupButton ( PopupWay.downLeft ), createPopupButton ( PopupWay.downCenter ),
                createPopupButton ( PopupWay.downRight ) ), "1,2" );

        return new GroupPanel ( gridPanel );
    }

    private WebButton createPopupButton ( PopupWay way )
    {
        // Button that calls for popup
        WebButton showPopup = new WebButton ( getButtonIcon ( way ) );

        // Popup itself
        WebButtonPopup popup = new WebButtonPopup ( showPopup, way );

        // Sample popup content
        WebLabel label = new WebLabel ( "Sample label", WebLabel.CENTER );
        WebTextField field = new WebTextField ( "Sample field", 10 );
        field.setHorizontalAlignment ( SwingConstants.CENTER );
        GroupPanel content = new GroupPanel ( 5, false, label, field );
        content.setMargin ( 15 );

        // Setup popup content
        popup.setContent ( content );

        // Component focused by default
        popup.setDefaultFocusComponent ( field );

        return showPopup;
    }

    private ImageIcon getButtonIcon ( PopupWay way )
    {
        return loadIcon ( "way/" + way + ".png" );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy