package org.ovirt.engine.ui.webadmin.widget.editor; import java.util.List; import org.ovirt.engine.ui.webadmin.widget.AbstractValidatedWidgetWithLabel; import org.ovirt.engine.ui.webadmin.widget.HasAccess; import org.ovirt.engine.ui.webadmin.widget.HasValidation; import com.google.gwt.editor.client.LeafValueEditor; import com.google.gwt.editor.client.adapters.OptionalFieldEditor; import com.google.gwt.event.dom.client.HasAllKeyHandlers; import com.google.gwt.event.dom.client.KeyDownHandler; import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.event.dom.client.KeyUpHandler; import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.Focusable; import com.google.gwt.user.client.ui.HasEnabled; /** * Composite editor that exposes {@link AbstractValidatedWidgetWithLabel} functionality for the given sub-Editor. * * @param <T> * The type being edited. * @param <E> * Editor type. * @param <W> * Type that exposes validated widget functionality. * * @see OptionalFieldEditor */ public class WidgetWithLabelEditor<T, E extends LeafValueEditor<T>, W extends AbstractValidatedWidgetWithLabel<T, ?>> extends OptionalFieldEditor<T, E> implements HasValidation, HasEnabled, HasAccess, HasAllKeyHandlers, Focusable { public static <T, E extends LeafValueEditor<T>, W extends AbstractValidatedWidgetWithLabel<T, ?>> WidgetWithLabelEditor<T, E, W> of( E subEditor, W widgetWithLabel) { return new WidgetWithLabelEditor<T, E, W>(subEditor, widgetWithLabel); } private final E subEditor; private final W widgetWithLabel; protected WidgetWithLabelEditor(E subEditor, W widgetWithLabel) { super(subEditor); this.subEditor = subEditor; this.widgetWithLabel = widgetWithLabel; } public E getSubEditor() { return subEditor; } @Override public void markAsValid() { widgetWithLabel.markAsValid(); } @Override public void markAsInvalid(List<String> validationHints) { widgetWithLabel.markAsInvalid(validationHints); } @Override public boolean isEnabled() { return widgetWithLabel.isEnabled(); } @Override public void setEnabled(boolean enabled) { widgetWithLabel.setEnabled(enabled); } @Override public boolean isAccessible() { return widgetWithLabel.isAccessible(); } @Override public void setAccessible(boolean accessible) { widgetWithLabel.setAccessible(accessible); } @Override public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) { return widgetWithLabel.addKeyUpHandler(handler); } @Override public void fireEvent(GwtEvent<?> event) { widgetWithLabel.fireEvent(event); } @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return widgetWithLabel.addKeyDownHandler(handler); } @Override public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { return widgetWithLabel.addKeyPressHandler(handler); } @Override public int getTabIndex() { return widgetWithLabel.getTabIndex(); } @Override public void setAccessKey(char key) { widgetWithLabel.setAccessKey(key); } @Override public void setFocus(boolean focused) { widgetWithLabel.setFocus(focused); } @Override public void setTabIndex(int index) { widgetWithLabel.setTabIndex(index); } }