package com.smartgwt.sample.showcase.client.basics.components;

import com.google.gwt.user.client.Random;
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.VLayout;
import com.smartgwt.sample.showcase.client.PanelFactory;
import com.smartgwt.sample.showcase.client.ShowcasePanel;

public class CreateSample extends ShowcasePanel {
    private static final String DESCRIPTION = "Click the button to create new cube objects.";

    public static class Factory implements PanelFactory {

        private String id;

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

        public String getID() {
            return id;
        }

        public String getDescription() {
            return DESCRIPTION;
        }
    }

    public Canvas getViewPanel() {

        VLayout layout = new VLayout();
        layout.setMembersMargin(10);

        final Canvas cubeBin = new Canvas("cubeBin");
        cubeBin.setTop(40);
        cubeBin.setWidth(400);
        cubeBin.setHeight(300);
        cubeBin.setShowEdges(true);

        IButton button = new IButton();
        button.setTitle("Create");
        button.setIcon("pieces/16/cube_blue.png");
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                final Img img = new Img();
                img.setLeft(Random.nextInt(340));
                img.setTop(Random.nextInt(240));
                img.setWidth(48);
                img.setHeight(48);
                img.setParentElement(cubeBin);
                img.setSrc("pieces/48/cube_blue.png");
                img.addClickHandler(new ClickHandler() {
                    public void onClick(ClickEvent event) {
                        img.destroy();
                    }
                });
                img.draw();
            }
        });
        layout.addMember(button);
        layout.addMember(cubeBin);

        return layout;
    }

    public String getIntro() {
        return DESCRIPTION;
    }
}
