package de.swm.mobile.kitchensink.client.showcase.panels;

import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;

import de.swm.commons.mobile.client.widgets.HeaderPanel;
import de.swm.commons.mobile.client.widgets.ListItem;
import de.swm.commons.mobile.client.widgets.ListPanel;
import de.swm.commons.mobile.client.widgets.scroll.ScrollPanel;
import de.swm.commons.mobile.client.widgets.toolbar.ToolbarContent;
import de.swm.commons.mobile.client.widgets.toolbar.ToolbarElement;
import de.swm.commons.mobile.client.widgets.toolbar.ToolbarPanel;
import de.swm.commons.mobile.client.widgets.toolbar.ToolbarPanel.ToolbarSelectionHandler;
import de.swm.mobile.kitchensink.client.Application;
import de.swm.mobile.kitchensink.client.base.ShowcaseDetailPage;

import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseSource;
import static de.swm.mobile.kitchensink.client.ShowcaseAnnotations.ShowcaseUiXML;

@ShowcaseSource
@ShowcaseUiXML({"ToolbarPanelPage.ui.xml"})
public class ToolbarPanelPage extends ShowcaseDetailPage {

	@UiField
	HeaderPanel header;
	@UiField ToolbarPanel toolbar;
	
	private static ToolbarPanelPageUiBinder uiBinder = GWT.create(ToolbarPanelPageUiBinder.class);


    interface ToolbarPanelPageUiBinder extends UiBinder<Widget, ToolbarPanelPage> {}

	public ToolbarPanelPage() {
        super(ToolbarPanelPage.class);
		initWidget(uiBinder.createAndBindUi(this));
		Application.addDefaultBackButtonHanlder(header);
		toolbar.addSelectionHandler(new ToolbarSelectionHandler() {

			@Override
			public void toolSelected(int index, ToolbarElement te) {
				ToolbarContent content = te.getContent();
				if (content != null) {
					ScrollPanel scroll = new ScrollPanel();
					ListPanel list = new ListPanel();
					content.clear();
					content.add(scroll);
					scroll.add(list);
					for (int i = 0; i < 20; i++) {
						ListItem item = new ListItem();
						item.add(new Label("Item " + i));
						list.add(item);
					}
				}
			}
		});

	}

    @Override
    public HeaderPanel getHeaderPanel() {
        return header;
    }

	@Override
	public String getName() {
		return "Toolbar panel";
	}

}