package org.ovirt.engine.ui.common.widget.uicommon.popup;
import org.ovirt.engine.ui.common.view.popup.FocusableComponentsContainer;
import org.ovirt.engine.ui.common.widget.HasEditorDriver;
import org.ovirt.engine.ui.uicommonweb.models.Model;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasEnabled;
import com.google.gwt.user.client.ui.IndexedPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* Base class for widgets that represent the content of popup views bound to a UiCommon Window model.
*
* @param <T>
* Window model type.
*/
public abstract class AbstractModelBoundPopupWidget<T extends Model> extends Composite implements HasEditorDriver<T>, FocusableComponentsContainer {
public void focusInput() {
// No-op, override as necessary
}
public int setTabIndexes(int nextTabIndex) {
// No-op, override as necessary
return nextTabIndex;
}
private void setEnabled(Widget widget, boolean enable) {
if (widget instanceof IndexedPanel) {
for (int i = 0; i < ((IndexedPanel) widget).getWidgetCount(); i++) {
setEnabled(((IndexedPanel) widget).getWidget(i), enable);
}
} else if (widget instanceof HasEnabled) {
((HasEnabled) widget).setEnabled(enable);
}
}
public void enableWidget(Widget widget) {
setEnabled(widget, true);
}
public void disableWidget(Widget widget) {
setEnabled(widget, false);
}
}