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

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.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Widget;
import de.swm.commons.mobile.client.event.SelectionChangedEvent;
import de.swm.commons.mobile.client.utils.Utils;
import de.swm.commons.mobile.client.widgets.CheckBox;
import de.swm.commons.mobile.client.widgets.CheckBoxGroup;
import de.swm.commons.mobile.client.widgets.HeaderPanel;
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({"CheckBoxPage.ui.xml"})
public class CheckBoxPage extends ShowcaseDetailPage {

	@UiField
	CheckBoxGroup group1;
	@UiField
	CheckBoxGroup group2;
	@UiField
	HeaderPanel header;

	private static CheckBoxPageUiBinder uiBinder = GWT
			.create(CheckBoxPageUiBinder.class);

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

	interface CheckBoxPageUiBinder extends UiBinder<Widget, CheckBoxPage> {
	}

	public CheckBoxPage() {
		super(CheckBoxPage.class);
		initWidget(uiBinder.createAndBindUi(this));
		Application.addDefaultBackButtonHanlder(header);
	}

	@UiHandler("group1")
	void onGroup1SelectionChanged(SelectionChangedEvent e) {
		CheckBox radio = (CheckBox) group1.getWidget(e.getSelection());
		Utils.console("group1 " + e.getSelection() + " " + radio.getText());
	}

	@UiHandler("group2")
	void onGroup2SelectionChanged(SelectionChangedEvent e) {
		CheckBox radio = (CheckBox) group2.getWidget(e.getSelection());
		Utils.console("group2 " + e.getSelection() + " " + radio.getText());
	}

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