package com.smartgwt.sample.showcase.client.effects.animation;

import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.sample.showcase.client.PanelFactory;
import com.smartgwt.sample.showcase.client.ShowcasePanel;

public class AnimateLayoutSample extends ShowcasePanel {

    private static final String DESCRIPTION = "Click on the buttons to hide and show the green star.";

    public static class Factory implements PanelFactory {
        private String id;

        public ShowcasePanel create() {
            AnimateLayoutSample panel = new AnimateLayoutSample();
            id = panel.getID();
            return panel;
        }

        public String getID() {
            return id;
        }

        public String getDescription() {
            return DESCRIPTION;
        }
    }

    public Canvas getViewPanel() {

        Canvas canvas = new Canvas();

        final HStack starsLayout = new HStack();
        starsLayout.setTop(50);
        starsLayout.setMembersMargin(10);
        starsLayout.setLayoutMargin(10);
        starsLayout.setShowEdges(true);
        starsLayout.setAnimateMembers(true);

        final Img blueImg = createImage("star_blue.png");
        final Img greenImg = createImage("star_green.png");
        final Img yellowImg = createImage("star_yellow.png");

        starsLayout.addMember(blueImg);
        starsLayout.addMember(greenImg);
        starsLayout.addMember(yellowImg);

        IButton showButton = new IButton();
        showButton.setTitle("Show");
        showButton.setIconOrientation("right");
        showButton.setIcon("pieces/16/star_green.png");

        IButton hideButton = new IButton();
        hideButton.setTitle("Hide");
        hideButton.setIcon("pieces/16/star_green.png");
        hideButton.setIconOrientation("right");
        hideButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                starsLayout.hideMember(greenImg);
            }
        });

        showButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                starsLayout.showMember(greenImg);
            }
        });

        HLayout hLayout = new HLayout();
        hLayout.setMembersMargin(10);
        hLayout.addMember(hideButton);
        hLayout.addMember(showButton);
        hLayout.setHeight(1);

        canvas.addChild(hLayout);
        canvas.addChild(starsLayout);
        return canvas;
    }

    public String getIntro() {
        return DESCRIPTION;
    }

    private Img createImage(String src) {
        Img img = new Img(src);
        img.setAppImgDir("pieces/48/");
        img.setWidth(48);
        img.setHeight(48);
        img.setLayoutAlign(Alignment.CENTER);
        return img;
    }
}