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

com.alee.managers.style.data.ComponentStyle 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.managers.style.data;

import com.alee.managers.style.SupportedComponent;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * Component style information class.
 *
 * @author Mikle Garin
 * @see How to use StyleManager
 * @see com.alee.managers.style.StyleManager
 */

@XStreamAlias ( "style" )
@XStreamConverter ( ComponentStyleConverter.class )
public final class ComponentStyle implements Serializable
{
    /**
     * Style component type.
     * Refers to component type this style belongs to.
     */
    private SupportedComponent type;

    /**
     * Unique component style ID.
     * Default component style always has "default" ID.
     */
    private String id;

    /**
     * Another component style ID which is extended by this style.
     * You can specify any existing style ID here to extend it.
     */
    private String extendsId;

    /**
     * Component settings.
     * Contains field-value pairs which will be applied to component fields.
     */
    private Map componentProperties;

    /**
     * Component UI settings.
     * Contains field-value pairs which will be applied to component UI fields.
     */
    private Map uiProperties;

    /**
     * Component painters settings.
     * Contains list of painter style infromation objects.
     */
    private List painters;

    /**
     * Constructs new component style information.
     */
    public ComponentStyle ()
    {
        super ();
    }

    /**
     * Returns supported component type.
     *
     * @return supported component type
     */
    public SupportedComponent getType ()
    {
        return type;
    }

    /**
     * Sets supported component type.
     *
     * @param type new supported component type
     */
    public void setType ( final SupportedComponent type )
    {
        this.type = type;
    }

    /**
     * Returns component style ID.
     *
     * @return component style ID
     */
    public String getId ()
    {
        return id;
    }

    /**
     * Sets component style ID.
     *
     * @param id new component style ID
     */
    public void setId ( final String id )
    {
        this.id = id;
    }

    /**
     * Returns extended component style ID or null if none extended.
     *
     * @return extended component style ID or null if none extended
     */
    public String getExtendsId ()
    {
        return extendsId;
    }

    /**
     * Sets extended component style ID.
     * Set this to null in case you don't want to extend any style.
     *
     * @param id new extended component style ID
     */
    public void setExtendsId ( final String id )
    {
        this.extendsId = id;
    }

    /**
     * Returns component properties.
     *
     * @return component properties
     */
    public Map getComponentProperties ()
    {
        return componentProperties;
    }

    /**
     * Sets component properties.
     *
     * @param componentProperties new component properties
     */
    public void setComponentProperties ( final Map componentProperties )
    {
        this.componentProperties = componentProperties;
    }

    /**
     * Returns component UI properties.
     *
     * @return component UI properties
     */
    public Map getUIProperties ()
    {
        return uiProperties;
    }

    /**
     * Sets component UI properties
     *
     * @param uiProperties new component UI properties
     */
    public void setUIProperties ( final Map uiProperties )
    {
        this.uiProperties = uiProperties;
    }

    /**
     * Returns component painters.
     *
     * @return component painters
     */
    public List getPainters ()
    {
        return painters;
    }

    /**
     * Sets component painters.
     *
     * @param painters new component painters
     */
    public void setPainters ( final List painters )
    {
        this.painters = painters;
    }

    /**
     * Returns component base painter.
     *
     * @return component base painter
     */
    public PainterStyle getBasePainter ()
    {
        if ( painters.size () == 1 )
        {
            return painters.get ( 0 );
        }
        else
        {
            for ( final PainterStyle painter : painters )
            {
                if ( painter.isBase () )
                {
                    return painter;
                }
            }
            return null;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy