package com.gwtmobile.ui.client.widgets;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Widget;
import com.gwtmobile.ui.client.CSS.StyleNames.Primary;
import com.gwtmobile.ui.client.CSS.StyleNames.Secondary;
import com.gwtmobile.ui.client.utils.Utils;
public class TabHeaderPanel extends PanelBase {
public TabHeaderPanel(){
setStyleName(Primary.TabHeaderPanel);
}
@Override
public void add(Widget w) {
if (w instanceof TabHeader
|| isDesignTimeEmptyLabel(w)) {
super.add(w);
return;
} else {
assert false : "TabHeaderPanel can only contain TabHeader widgets.";
}
}
public int getClickedTabHeaderIndex(ClickEvent e) {
Element div = Element.as(e.getNativeEvent().getEventTarget());
if (div == this.getElement()) {
Utils.Console("Is click on tab header working? " + e.toString());
return -1;
}
while (div.getParentElement() != this.getElement()) {
div = div.getParentElement();
}
int index = DOM.getChildIndex(
(com.google.gwt.user.client.Element)this.getElement(),
(com.google.gwt.user.client.Element)div);
return index;
}
public void selectHeader(int index) {
if (getWidgetCount() > index) {
TabHeader header = (TabHeader) getWidget(index);
header.addStyleName(Secondary.Selected);
}
}
public void unSelectHeader(int index) {
if (getWidgetCount() > index) {
TabHeader header = (TabHeader) getWidget(index);
header.removeStyleName(Secondary.Selected);
}
}
@Override
protected String getDesignTimeMessage() {
return "Add TabHeader widgets.";
}
}