package org.ovirt.engine.ui.common.widget.uicommon.popup.quota;
import org.ovirt.engine.core.common.businessentities.Quota;
import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver;
import org.ovirt.engine.ui.common.idhandler.HasElementId;
import org.ovirt.engine.ui.common.widget.AbstractValidatedWidgetWithLabel;
import org.ovirt.engine.ui.common.widget.HasEditorDriver;
import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelLabelEditor;
import org.ovirt.engine.ui.common.widget.renderer.NameRenderer;
import org.ovirt.engine.ui.uicommonweb.models.quota.ChangeQuotaItemModel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class ChangeQuotaItemView extends Composite implements HasEditorDriver<ChangeQuotaItemModel>, HasElementId {
interface Driver extends UiCommonEditorDriver<ChangeQuotaItemModel, ChangeQuotaItemView> {
}
interface ViewUiBinder extends UiBinder<Widget, ChangeQuotaItemView> {
ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
}
interface WidgetStyle extends CssResource {
String editorContent();
String editorWrapper();
String editorLabel();
}
@UiField
WidgetStyle style;
@UiField
@Ignore
StringEntityModelLabelEditor objectNameLabel;
@UiField
@Ignore
StringEntityModelLabelEditor storageDomainNameLabel;
@UiField
@Ignore
StringEntityModelLabelEditor currentQuotaLabel;
@UiField(provided = true)
@Path(value = "quota.selectedItem")
ListModelListBoxEditor<Quota> quotaListEditor;
private final Driver driver = GWT.create(Driver.class);
public ChangeQuotaItemView() {
initEditors();
initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
driver.initialize(this);
updateStyles();
}
void initEditors() {
quotaListEditor = new ListModelListBoxEditor<>(new NameRenderer<Quota>());
}
void updateStyles() {
String editorStyle = style.editorContent();
updateEditorStyle(objectNameLabel, editorStyle);
updateEditorStyle(storageDomainNameLabel, editorStyle);
updateEditorStyle(currentQuotaLabel, editorStyle);
updateEditorStyle(quotaListEditor, editorStyle);
}
private void updateEditorStyle(AbstractValidatedWidgetWithLabel<?, ?> editor, String contentStyle) {
editor.setContentWidgetContainerStyleName(contentStyle);
editor.addWrapperStyleName(style.editorWrapper());
}
@Override
public void edit(final ChangeQuotaItemModel object) {
driver.edit(object);
objectNameLabel.asValueBox().setValue(object.getObject().getEntity());
storageDomainNameLabel.asValueBox().setValue(object.getStorageDomainName());
currentQuotaLabel.asValueBox().setValue(object.getCurrentQuota().getEntity());
}
@Override
public ChangeQuotaItemModel flush() {
return driver.flush();
}
@Override
public void setElementId(String elementId) {
}
@Override
public void cleanup() {
driver.cleanup();
}
}