package org.ovirt.engine.ui.webadmin.widget.dialog.tab;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiChild;
import com.google.gwt.uibinder.client.UiConstructor;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class DialogTabPanel extends Composite {
interface WidgetUiBinder extends UiBinder<Widget, DialogTabPanel> {
WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
}
@UiField
FlowPanel tabContainer;
@UiField
SimplePanel tabContentContainer;
private DialogTab activeTab;
@UiConstructor
public DialogTabPanel(String height) {
initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
getWidget().setHeight(height);
}
@UiChild(tagname = "tab")
public void addTab(final DialogTab tab) {
tabContainer.add(tab);
tab.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
switchTab(tab);
}
});
// Switch to first tab automatically
if (tabContainer.getWidgetCount() == 1) {
switchTab(tab);
}
}
public void switchTab(DialogTab tab) {
setActiveTab(tab);
setTabContent(tab.getContent());
}
void setActiveTab(DialogTab tab) {
if (activeTab != null)
activeTab.deactivate();
if (tab != null)
tab.activate();
activeTab = tab;
}
void setTabContent(Widget content) {
tabContentContainer.setWidget(content);
}
public void addBarStyle(String styleName) {
tabContainer.addStyleName(styleName);
}
}