package org.ovirt.engine.ui.common.widget.editor;
import java.util.List;
import org.ovirt.engine.ui.common.editor.UiCommonEditor;
import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel;
import org.ovirt.engine.ui.uicommonweb.HasCleanup;
import com.google.gwt.editor.client.LeafValueEditor;
import com.google.gwt.editor.client.adapters.OptionalFieldEditor;
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;
/**
* A {@link UiCommonEditor} adapted to work with {@link AbstractValidatedWidgetWithLabel} widget.
*
* @param <T>
* The type being edited.
* @param <W>
* Type that exposes validated widget functionality.
*
* @see OptionalFieldEditor
*/
public class WidgetWithLabelEditor<T, W extends AbstractValidatedWidgetWithLabel<T, ?>>
extends OptionalFieldEditor<T, LeafValueEditor<T>> implements UiCommonEditor<T>, HasCleanup {
public static <T, W extends AbstractValidatedWidgetWithLabel<T, ?>> WidgetWithLabelEditor<T, W> of(
LeafValueEditor<T> subEditor, W widgetWithLabel) {
return new WidgetWithLabelEditor<>(subEditor, widgetWithLabel);
}
private final LeafValueEditor<T> subEditor;
private final W widgetWithLabel;
protected WidgetWithLabelEditor(LeafValueEditor<T> subEditor, W widgetWithLabel) {
super(subEditor);
this.subEditor = subEditor;
this.widgetWithLabel = widgetWithLabel;
}
public LeafValueEditor<T> getSubEditor() {
return subEditor;
}
@Override
public LeafValueEditor<T> getActualEditor() {
return getSubEditor();
}
@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 boolean isValid() {
return widgetWithLabel.isValid();
}
@Override
public void setEnabled(boolean enabled) {
widgetWithLabel.setEnabled(enabled);
}
@Override
public void disable(String disabilityHint) {
widgetWithLabel.disable(disabilityHint);
}
@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);
}
@Override
public void cleanup() {
widgetWithLabel.cleanup();
}
public String getText() {
return widgetWithLabel.getLabel();
}
}