package org.ovirt.engine.ui.webadmin.widget.dialog.tab;
import org.ovirt.engine.ui.webadmin.idhandler.HasElementId;
import org.ovirt.engine.ui.webadmin.widget.AbstractValidatedWidget;
import org.ovirt.engine.ui.webadmin.widget.HasLabel;
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.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiChild;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
public class DialogTab extends AbstractValidatedWidget implements HasClickHandlers, HasLabel, HasElementId {
interface WidgetUiBinder extends UiBinder<Widget, DialogTab> {
WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
}
interface Style extends CssResource {
String active();
String inactive();
}
private Widget tabContent;
private boolean isActive;
@UiField
SimplePanel tabContainer;
@UiField
InlineLabel tabLabel;
@UiField
Style style;
public DialogTab() {
initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
}
@Override
protected Widget getValidatedWidget() {
return tabContainer;
}
@Override
public void markAsValid() {
tabContainer.getElement().addClassName(isActive ? style.active() : style.inactive());
}
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return tabContainer.addDomHandler(handler, ClickEvent.getType());
}
@Override
public String getLabel() {
return tabLabel.getText();
}
@Override
public void setLabel(String label) {
tabLabel.setText(label);
}
@UiChild(tagname = "content", limit = 1)
public void setContent(Widget widget) {
this.tabContent = widget;
}
public Widget getContent() {
return tabContent;
}
public void activate() {
isActive = true;
tabContainer.getElement().replaceClassName(style.inactive(), style.active());
}
public void deactivate() {
isActive = false;
tabContainer.getElement().replaceClassName(style.active(), style.inactive());
}
public void setTabLabelStyle(String styleName) {
tabLabel.setStyleName(styleName);
}
@Override
public void setElementId(String elementId) {
tabContainer.getElement().setId(elementId);
}
}