Package org.eurekastreams.web.client.ui.common.avatar

Source Code of org.eurekastreams.web.client.ui.common.avatar.AvatarWidget

/*
* Copyright (c) 2009-2011 Lockheed Martin Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.web.client.ui.common.avatar;

import org.eurekastreams.server.domain.AvatarEntity;
import org.eurekastreams.server.domain.AvatarUrlGenerator;
import org.eurekastreams.server.domain.EntityType;
import org.eurekastreams.web.client.ui.pages.master.StaticResourceBundle;

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;

/**
* Please use this if you want to represent an avatar on the screen. It has the benefit of looking up the appropriate
* URL for you as well as displaying it according to the current avatar fashion.
*/
public class AvatarWidget extends Composite
{
    /**
     * The size of the avatar.
     */
    public enum Size
    {
        /** 75px. */
        Normal,
        /** 50px. */
        Small,
        /** 25px. */
        VerySmall
    }

    /** The image. */
    private final Image image = new Image();

    /** Avatar size. */
    private Size imageSize;

    /**
     * Constructor: Doesn't specify whose avatar, for setting dynamically later.
     *
     * @param size
     *            the avatar size.
     */
    public AvatarWidget(final Size size)
    {
        setSize(size);
        initWidget(image);
    }

    /**
     * Creates a generic avatar for the given entity type.
     *
     * @param type
     *            the entity type.
     * @param size
     *            the avatar size.
     */
    public AvatarWidget(final EntityType type, final Size size)
    {
        this(size);
        setAvatar(null, type);
    }

    /**
     * Creates an avatar for the given entity.
     *
     * @param entity
     *            the entity that has the avatar.
     * @param type
     *            the entity type.
     * @param size
     *            the avatar size.
     */
    public AvatarWidget(final AvatarEntity entity, final EntityType type, final Size size)
    {
        this(entity.getAvatarId(), type, size);
    }

    /**
     * Creates an avatar for the given entity.
     * @param avatarId
     *            the ID of the avatar.
     * @param type
     *            the entity type.
     * @param size
     *            the avatar size.
     */
    public AvatarWidget(final String avatarId, final EntityType type, final Size size)
    {
        this(size);
        setAvatar(avatarId, type);
    }

    /**
     * Creates an avatar for the given entity.
     * @param avatarId
     *            the ID of the avatar.
     * @param type
     *            the entity type.
     * @param size
     *            the avatar size.
     * @param title
     *            the title.
     */
    public AvatarWidget(final String avatarId, final EntityType type, final Size size, final String title)
    {
        this(size);
        setAvatar(avatarId, type, title);
    }

    /**
     * Creates an avatar for the given entity.
     *
     * @param entity
     *            the entity that has the avatar.
     * @param type
     *            the entity type.
     * @param size
     *            the avatar size.
     * @param title
     *            the title.
     */
    public AvatarWidget(final AvatarEntity entity, final EntityType type, final Size size, final String title)
    {
        this(entity.getAvatarId(), type, size, title);
    }

    /**
     * Set the size of the avatar.
     *
     * @param size
     *            the size;
     */
    public void setSize(final Size size)
    {
        imageSize = size;
        image.addStyleName(StaticResourceBundle.INSTANCE.coreCss().avatarImage());

        if (size.toString().toLowerCase().equals("small"))
        {
            image.addStyleName(StaticResourceBundle.INSTANCE.coreCss().avatarImageSmall());
        }
        if (size.toString().toLowerCase().equals("verysmall"))
        {
            image.addStyleName(StaticResourceBundle.INSTANCE.coreCss().avatarImageVerySmall());
        }
        if (size.toString().toLowerCase().equals("normal"))
        {
            image.addStyleName(StaticResourceBundle.INSTANCE.coreCss().avatarImageNormal());
        }
    }

    /**
     * Sets the avatar to be for the given entity (for dynamically changing it).
     *
     * @param avatarId
     *            the ID of the avatar.
     * @param type
     *            the entity type.
     */
    public void setAvatar(final String avatarId, final EntityType type)
    {
        setAvatar(avatarId, type, "");
    }

    /**
     * Sets the avatar to be for the given entity (for dynamically changing it).
     * @param avatarId
     *            the ID of the avatar.
     * @param type
     *            the entity type.
     * @param title
     *            the title.
     */
    public void setAvatar(final String avatarId, final EntityType type, final String title)
    {
        AvatarUrlGenerator urlGen = new AvatarUrlGenerator(type);
        String imageUrl = imageSize.equals(Size.Normal) ? urlGen.getNormalAvatarUrl(avatarId) : urlGen
                .getSmallAvatarUrl(avatarId);
        image.setUrl(imageUrl);
        if (title.length() > 0)
        {
            image.setTitle(title);
        }
    }
}
TOP

Related Classes of org.eurekastreams.web.client.ui.common.avatar.AvatarWidget

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.