package org.ovirt.engine.ui.webadmin.section.main.view.popup.host;
import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver;
import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
import org.ovirt.engine.ui.common.idhandler.WithElementId;
import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView;
import org.ovirt.engine.ui.common.widget.Align;
import org.ovirt.engine.ui.common.widget.HasUiCommandClickHandlers;
import org.ovirt.engine.ui.common.widget.UiCommandButton;
import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel;
import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelPasswordBoxEditor;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
import org.ovirt.engine.ui.common.widget.renderer.StringRenderer;
import org.ovirt.engine.ui.uicommonweb.DynamicMessages;
import org.ovirt.engine.ui.uicommonweb.models.hosts.FenceAgentModel;
import org.ovirt.engine.ui.webadmin.ApplicationConstants;
import org.ovirt.engine.ui.webadmin.gin.AssetProvider;
import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.HostFenceAgentPopupPresenterWidget;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.EventBus;
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.Anchor;
import com.google.gwt.user.client.ui.Label;
import com.google.inject.Inject;
public class HostFenceAgentPopupView extends AbstractModelBoundPopupView<FenceAgentModel> implements HostFenceAgentPopupPresenterWidget.ViewDef {
interface Driver extends UiCommonEditorDriver<FenceAgentModel, HostFenceAgentPopupView> {
}
interface ViewUiBinder extends UiBinder<SimpleDialogPanel, HostFenceAgentPopupView> {
ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class);
}
interface ViewIdHandler extends ElementIdHandler<HostFenceAgentPopupView> {
ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
}
private static final ApplicationConstants constants = AssetProvider.getConstants();
private final Driver driver = GWT.create(Driver.class);
interface Style extends CssResource {
String fencingOptionsLink();
}
@UiField
Style style;
@UiField
@Path(value = "managementIp.entity")
@WithElementId("managementIp")
StringEntityModelTextBoxEditor pmAddressEditor;
@UiField
@Path(value = "pmUserName.entity")
@WithElementId("pmUserName")
StringEntityModelTextBoxEditor pmUserNameEditor;
@UiField
@Path(value = "pmPassword.entity")
@WithElementId("pmPassword")
StringEntityModelPasswordBoxEditor pmPasswordEditor;
@UiField(provided = true)
@Path(value = "pmType.selectedItem")
@WithElementId("pmType")
ListModelListBoxEditor<String> pmTypeEditor;
@UiField
@Path(value = "pmPort.entity")
@WithElementId("pmPort")
IntegerEntityModelTextBoxEditor pmPortEditor;
@UiField
@Path(value = "pmSlot.entity")
@WithElementId("pmSlot")
StringEntityModelTextBoxEditor pmSlotEditor;
@UiField
@Path(value = "pmOptions.entity")
@WithElementId("pmOptions")
StringEntityModelTextBoxEditor pmOptionsEditor;
@UiField(provided=true)
@Path(value = "pmEncryptOptions.entity")
@WithElementId("pmEncryptOptions")
EntityModelCheckBoxEditor pmEncryptOptionsEditor;
@UiField
@Ignore
Label pmOptionsExplanationLabel;
@UiField
@Ignore
Label testMessage;
@UiField(provided=true)
@Path(value = "pmSecure.entity")
@WithElementId("pmSecure")
EntityModelCheckBoxEditor pmSecureEditor;
@UiField
UiCommandButton testButton;
@Ignore
Anchor fencingOptionsUrl;
private final DynamicMessages dynamicMessages;
@Inject
public HostFenceAgentPopupView(EventBus eventBus, DynamicMessages dynamicMessages) {
super(eventBus);
this.dynamicMessages = dynamicMessages;
initEditors();
initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
fencingOptionsUrl.asWidget().addStyleName(style.fencingOptionsLink());
// set visibility of helper URL for agent parameter to false since the URL is deprecated
// TODO : when we will have a valid UR :
// 1. remove the call to set visibility to false
// 2. update packaging/branding/ovirt.brand/external_resources.properties:obrand.common.fencing_options_url
// to point to the right address
fencingOptionsUrl.setVisible(false);
asWidget().addStatusWidget(fencingOptionsUrl);
localize();
driver.initialize(this);
}
private void initEditors() {
pmTypeEditor = new ListModelListBoxEditor<>(new StringRenderer<String>());
pmEncryptOptionsEditor= new EntityModelCheckBoxEditor(Align.RIGHT);
pmEncryptOptionsEditor.setUsePatternFly(true);
pmSecureEditor= new EntityModelCheckBoxEditor(Align.RIGHT);
pmSecureEditor.setUsePatternFly(true);
fencingOptionsUrl = new Anchor(dynamicMessages.fencingOptions());
}
private void localize() {
testButton.setLabel(constants.hostPopupTestButtonLabel());
pmAddressEditor.setLabel(constants.hostPopupPmAddressLabel());
pmUserNameEditor.setLabel(constants.hostPopupPmUserNameLabel());
pmPasswordEditor.setLabel(constants.hostPopupPmPasswordLabel());
pmTypeEditor.setLabel(constants.hostPopupPmTypeLabel());
pmPortEditor.setLabel(constants.hostPopupPmPortLabel());
pmSlotEditor.setLabel(constants.hostPopupPmSlotLabel());
pmOptionsEditor.setLabel(constants.hostPopupPmOptionsLabel());
pmOptionsExplanationLabel.setText(constants.hostPopupPmOptionsExplanationLabel());
pmSecureEditor.setLabel(constants.hostPopupPmSecureLabel());
pmEncryptOptionsEditor.setLabel(constants.hostPopupPmEncryptOptionsLabel());
}
@Override
public void updatePmSlotLabelText(boolean ciscoUcsSelected) {
pmSlotEditor.setLabel(ciscoUcsSelected ? constants.hostPopupPmCiscoUcsSlotLabel() : constants.hostPopupPmSlotLabel());
}
@Override
public void edit(final FenceAgentModel object) {
driver.edit(object);
testButton.setCommand(object.getTestCommand());
}
@Override
public void setMessage(String message) {
testMessage.setText(message);
}
@Override
public FenceAgentModel flush() {
return driver.flush();
}
@Override
public void cleanup() {
driver.cleanup();
}
@Override
public void focusInput() {
pmAddressEditor.setFocus(true);
}
@Override
public int setTabIndexes(int nextTabIndex) {
pmAddressEditor.setTabIndex(++nextTabIndex);
pmUserNameEditor.setTabIndex(++nextTabIndex);
pmPasswordEditor.setTabIndex(++nextTabIndex);
pmTypeEditor.setTabIndex(++nextTabIndex);
pmPortEditor.setTabIndex(++nextTabIndex);
pmSlotEditor.setTabIndex(++nextTabIndex);
pmOptionsEditor.setTabIndex(++nextTabIndex);
pmSecureEditor.setTabIndex(++nextTabIndex);
pmEncryptOptionsEditor.setTabIndex(++nextTabIndex);
testButton.setTabIndex(++nextTabIndex);
return nextTabIndex;
}
@Override
public HasUiCommandClickHandlers getTestButton() {
return testButton;
}
@Override
public HasClickHandlers getFencingOptionsAnchor() {
return fencingOptionsUrl;
}
}