package org.ovirt.engine.ui.userportal.section.main.view.tab.basic; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; 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.AbstractView; import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip; import org.ovirt.engine.ui.uicommonweb.DynamicMessages; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalBasicListModel; import org.ovirt.engine.ui.userportal.ApplicationConstants; import org.ovirt.engine.ui.userportal.gin.AssetProvider; import org.ovirt.engine.ui.userportal.section.main.presenter.tab.basic.MainTabBasicDetailsPresenterWidget; import org.ovirt.engine.ui.userportal.widget.ToStringEntityModelLabel; import org.ovirt.engine.ui.userportal.widget.basic.DisksImageWidget; import org.ovirt.engine.ui.userportal.widget.basic.IconImage; import org.ovirt.engine.ui.userportal.widget.basic.VmTypeImage; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.resources.client.CssResource; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.text.shared.AbstractRenderer; 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.gwt.user.client.ui.ValueLabel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; public class MainTabBasicDetailsView extends AbstractView implements MainTabBasicDetailsPresenterWidget.ViewDef { interface ViewUiBinder extends UiBinder<Widget, MainTabBasicDetailsView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } interface Driver extends UiCommonEditorDriver<UserPortalBasicListModel, MainTabBasicDetailsView> { } interface ViewIdHandler extends ElementIdHandler<MainTabBasicDetailsView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } public interface Style extends CssResource { String protocolWarning(); String protocol(); String basicInfoDetailsLinkDisabled(); String basicInfoDetailsLink(); } private static final ApplicationConstants constants = AssetProvider.getConstants(); @UiField @Path("selectedItem.smallIconId") IconImage smallIconImage; @UiField @Path("selectedItem") VmTypeImage vmImage; @UiField @Path("selectedItem.name") @WithElementId("name") Label vmName; @UiField @Path("selectedItem.description") @WithElementId("description") Label vmDescription; @UiField(provided = true) @Path("selectedItem.osId") @WithElementId("os") ValueLabel<Integer> operatingSystem; @UiField @Path("selectedItemDefinedMemory.entity") @WithElementId ToStringEntityModelLabel memory; @UiField @Path("selectedItemNumOfCpuCores.entity") @WithElementId ToStringEntityModelLabel numberOfCores; @UiField WidgetTooltip numberOfCoresTooltip; @UiField @Ignore @WithElementId DisksImageWidget disks; @UiField @Ignore @WithElementId("protocol") Label protocolMessage; @UiField @Ignore @WithElementId Anchor consoleConnectAnchor; @UiField @Ignore @WithElementId Anchor editProtocolLink; @UiField(provided = true) @Ignore @WithElementId Anchor consoleClientResourcesUrl; @UiField Style style; private final Driver driver = GWT.create(Driver.class); @Inject public MainTabBasicDetailsView(final DynamicMessages dynamicMessages) { operatingSystem = new ValueLabel<>(new AbstractRenderer<Integer>() { @Override public String render(Integer object) { return AsyncDataProvider.getInstance().getOsName(object); } }); consoleClientResourcesUrl = new Anchor(dynamicMessages.clientResources()); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); driver.initialize(this); ViewIdHandler.idHandler.generateAndSetIds(this); initToolTips(); } private void initToolTips() { numberOfCoresTooltip.setHtml(SafeHtmlUtils.fromString(constants.numOfCpuCoresTooltip())); } @Override public void edit(UserPortalBasicListModel model) { driver.edit(model); } @Override public UserPortalBasicListModel flush() { return driver.flush(); } @Override public void cleanup() { driver.cleanup(); } @Override public void editDistItems(Iterable<DiskImage> diskImages) { disks.setValue(diskImages); } @Override public void setConsoleProtocolMessage(String message) { protocolMessage.setText(message); protocolMessage.setStyleName(style.protocolWarning()); } @Override public void setConsoleConnectLinkEnabled(boolean enabled) { if (enabled) { consoleConnectAnchor.setStyleName(style.basicInfoDetailsLink()); } else { consoleConnectAnchor.setStyleName(style.basicInfoDetailsLinkDisabled()); } } @Override public void setEditConsoleEnabled(boolean enabled) { if (enabled) { editProtocolLink.setStyleName(style.basicInfoDetailsLink()); } else { editProtocolLink.setStyleName(style.basicInfoDetailsLinkDisabled()); } } @Override public void displayVmOsImages(boolean dispaly) { smallIconImage.setVisible(dispaly); vmImage.setVisible(dispaly); } @Override public HasClickHandlers getEditButton() { return editProtocolLink; } @Override public HasClickHandlers getConsoleClientResourcesAnchor() { return consoleClientResourcesUrl; } public HasClickHandlers getConsoleConnectAnchor() { return consoleConnectAnchor; } @Override public void clear() { vmName.setText(null); vmDescription.setText(null); protocolMessage.setText(null); memory.setValue(null); numberOfCores.setValue(null); operatingSystem.getElement().setInnerHTML(""); //$NON-NLS-1$ disks.clear(); displayVmOsImages(false); } }