package org.ovirt.engine.ui.common.widget.tab;
import org.ovirt.engine.ui.common.uicommon.model.ModelProvider;
import org.ovirt.engine.ui.uicommonweb.models.HasEntity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HasHandlers;
public class ModelBoundTab extends SimpleTab implements HasHandlers {
private final EventBus eventBus;
public ModelBoundTab(final ModelBoundTabData tabData, AbstractTabPanel tabPanel, EventBus eventBus) {
super(tabData, tabPanel);
setAlign(tabData.getAlign());
this.eventBus = eventBus;
// Update tab accessibility
setAccessible(tabData.getModelProvider().getModel().getIsAvailable());
registerModelEventListeners(tabData.getModelProvider());
}
void registerModelEventListeners(final ModelProvider<? extends HasEntity> modelProvider) {
modelProvider.getModel().getPropertyChangedEvent().addListener((ev, sender, args) -> {
// Update tab accessibility when 'IsAvailable' property changes
if ("IsAvailable".equals(args.propertyName)) { //$NON-NLS-1$
boolean isAvailable = modelProvider.getModel().getIsAvailable();
setAccessible(isAvailable);
}
});
}
@Override
public void setAccessible(boolean accessible) {
boolean wasAccessible = isAccessible();
super.setAccessible(accessible);
if (accessible != wasAccessible) {
TabAccessibleChangeEvent.fire(this, this);
}
}
@Override
public void fireEvent(GwtEvent<?> event) {
eventBus.fireEvent(event);
}
}