Tomas Jelinek has uploaded a new change for review. Change subject: userportal,webadmin: Persist the changes from console popup ......................................................................
userportal,webadmin: Persist the changes from console popup Make the changes made in console popup (both WA and UP) persistent per browser. The core of the implementation is the ConsoleOptionsFrontendPersisterImpl which is a gin managed class containing two methods: - storeToLocalStorage - loadFromLocalStorage This methods needs the model to/from to copy the data to/from local storage and the context, which can be webadmin, userportal's basic view or userportal's extended view (because the values are configured separatly for this three places). The load method copies the selected data from local storage only if they are still possible in the specific context (for example when the user selected some spice options, this has been stored to local storage and than he changed the default console to VNC, the spice options are not going to be copied). When using, you need to make sure that you load the stored data from the local storage before opening the edit console and before connecting to the console, and also that you store all the data to local storage after the user changes them in the edit console. Change-Id: I847e17c6e28db7921f0bc162f0ff70399e671a03 Signed-off-by: Tomas Jelinek <tjeli...@redhat.com> --- A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUtilsModule.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleManager.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtils.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleOptionsFrontendPersister.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/ConsolePopupModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/UtilsModule.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicListItemPresenterWidget.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UtilsModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabVirtualMachinePresenter.java 17 files changed, 287 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/13274/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUtilsModule.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUtilsModule.java new file mode 100644 index 0000000..2e6861b --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUtilsModule.java @@ -0,0 +1,16 @@ +package org.ovirt.engine.ui.common.gin; + +import org.ovirt.engine.ui.common.utils.ConsoleOptionsFrontendPersisterImpl; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; + +import com.google.gwt.inject.client.AbstractGinModule; +import com.google.inject.Singleton; + +public class BaseUtilsModule extends AbstractGinModule { + + @Override + protected void configure() { + bind(ConsoleOptionsFrontendPersister.class).to(ConsoleOptionsFrontendPersisterImpl.class).in(Singleton.class); + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java index 22d177c..ef71ebd 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/popup/ConsolePopupPresenterWidget.java @@ -3,6 +3,7 @@ import org.ovirt.engine.ui.common.CommonApplicationConstants; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; import org.ovirt.engine.ui.common.utils.ConsoleUtils; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.ConsolePopupModel; import org.ovirt.engine.ui.uicommonweb.models.ConsoleProtocol; @@ -76,14 +77,17 @@ private boolean wanOptionsAvailable = false; private ConsolePopupModel model; private final CommonApplicationConstants constants; + private final ConsoleOptionsFrontendPersister consoleOptionsPersister; @Inject public ConsolePopupPresenterWidget(EventBus eventBus, ViewDef view, ConsoleUtils consoleUtils, - CommonApplicationConstants constants) { + CommonApplicationConstants constants, + ConsoleOptionsFrontendPersister consoleOptionsPersister) { super(eventBus, view); this.consoleUtils = consoleUtils; this.constants = constants; + this.consoleOptionsPersister = consoleOptionsPersister; } @Override @@ -93,6 +97,7 @@ } this.model = model; + initModel(model); initView(model); initListeners(model); @@ -100,6 +105,10 @@ getView().setVmName(vmName); super.init(model); + } + + private void initModel(ConsolePopupModel model) { + consoleOptionsPersister.loadFromLocalStorage(model.getModel(), model.getConsoleContext()); } private void initListeners(final ConsolePopupModel model) { @@ -175,10 +184,7 @@ } } - boolean isWindowsVm = model.getModel().getVM().getOs().isWindows(); - boolean spiceGuestAgentInstalled = model.getModel().getVM().getSpiceDriverVersion() != null; - - wanOptionsAvailable = isWindowsVm && spiceAvailable && spiceGuestAgentInstalled; + wanOptionsAvailable = consoleUtils.isWanOptionsAvailable(model.getModel()); if (wanOptionsAvailable) { getView().setWanOptionsVisible(true); } else { @@ -204,6 +210,9 @@ // now flush the model getView().flushToPrivateModel(); + // store to local storage + consoleOptionsPersister.storeToLocalStorage(model.getModel(), model.getConsoleContext()); + ConsoleModelChangedEvent.fire(getEventBus(), model.getModel()); } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java index b75db52..e57c3c3 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/UiCommonDefaultTypeResolver.java @@ -1,6 +1,7 @@ package org.ovirt.engine.ui.common.uicommon; import org.ovirt.engine.ui.uicommonweb.Configurator; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; import org.ovirt.engine.ui.uicommonweb.ILogger; import org.ovirt.engine.ui.uicommonweb.ITimer; import org.ovirt.engine.ui.uicommonweb.ITypeResolver; @@ -14,11 +15,13 @@ private final Configurator configurator; private final ILogger logger; + private final ConsoleOptionsFrontendPersister consoleOptionsFrontendPersister; @Inject - public UiCommonDefaultTypeResolver(Configurator configurator, ILogger logger) { + public UiCommonDefaultTypeResolver(Configurator configurator, ILogger logger, ConsoleOptionsFrontendPersister consoleOptionsFrontendPersister) { this.configurator = configurator; this.logger = logger; + this.consoleOptionsFrontendPersister = consoleOptionsFrontendPersister; } @SuppressWarnings("rawtypes") @@ -36,6 +39,8 @@ return new SpiceNativeImpl(); } else if (type == IRdp.class) { return new IRdpImpl(); + } else if (type == ConsoleOptionsFrontendPersister.class) { + return consoleOptionsFrontendPersister; } throw new RuntimeException("UiCommon Resolver cannot resolve type: " + type); //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleManager.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleManager.java index 8ee3609..df3cd28 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleManager.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleManager.java @@ -25,6 +25,7 @@ * message describing the problem. */ public String connectToConsole(HasConsoleModel model) { + ConsoleProtocol selectedProtocol = consoleUtils.determineConnectionProtocol(model); if (!consoleUtils.canShowConsole(selectedProtocol, model)) { diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java new file mode 100644 index 0000000..7886ed8 --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleOptionsFrontendPersisterImpl.java @@ -0,0 +1,162 @@ +package org.ovirt.engine.ui.common.utils; + +import org.ovirt.engine.ui.common.system.ClientStorage; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; +import org.ovirt.engine.ui.uicommonweb.models.ConsoleProtocol; +import org.ovirt.engine.ui.uicommonweb.models.HasConsoleModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.IRdp; +import org.ovirt.engine.ui.uicommonweb.models.vms.ISpice; +import org.ovirt.engine.ui.uicommonweb.models.vms.RdpConsoleModel; +import org.ovirt.engine.ui.uicommonweb.models.vms.SpiceConsoleModel; + +import com.google.inject.Inject; + +public class ConsoleOptionsFrontendPersisterImpl implements ConsoleOptionsFrontendPersister { + + private ClientStorage clientStorage; + + private final ConsoleUtils consoleUtils; + + // spice options + private static final String CTRL_ALT_DEL = "_ctrlAltDel"; //$NON-NLS-1$ + private static final String OPEN_IN_FULL_SCREEN = "_openInFullScreen"; //$NON-NLS-1$ + private static final String SMARTCARD_ENABLED_OVERRIDDEN = "_smartcardEnabledOverridden"; //$NON-NLS-1$ + private static final String WAN_OPTIONS = "_wanOptions"; //$NON-NLS-1$ + private static final String USB_AUTOSHARE = "_usbAutoshare"; //$NON-NLS-1$ + + // rdp options + private static final String USE_LOCAL_DRIVES = "_useLocalDrives"; //$NON-NLS-1$ + + // common options + private static final String SELECTED_PROTOCOL = "_selectedProtocol"; //$NON-NLS-1$ + + @Inject + public ConsoleOptionsFrontendPersisterImpl(ClientStorage clientStorage, ConsoleUtils consoleUtils) { + this.clientStorage = clientStorage; + this.consoleUtils = consoleUtils; + } + + public void storeToLocalStorage(HasConsoleModel model, ConsoleContext context) { + if (model.isPool()) { + // this class works only for VMs, not for pools + return; + } + + ConsoleProtocol selectedProtocol = model.getSelectedProtocol(); + String id = model.getVM().getId().toString(); + KeyMaker keyMaker = new KeyMaker(id, context); + + clientStorage.setLocalItem(keyMaker.make(SELECTED_PROTOCOL), selectedProtocol.toString()); + + if (selectedProtocol == ConsoleProtocol.SPICE) { + storeSpiceData(asSpice(model), keyMaker); + } else if (selectedProtocol == ConsoleProtocol.RDP) { + storeRdpData(asRdp(model), keyMaker); + } + } + + public void loadFromLocalStorage(HasConsoleModel model, ConsoleContext context) { + + String vmId = model.getVM().getId().toString(); + + KeyMaker keyMaker = new KeyMaker(vmId, context); + + String selectedProtocolString = clientStorage.getLocalItem(keyMaker.make(SELECTED_PROTOCOL)); + if (selectedProtocolString == null || "".equals(selectedProtocolString)) { + // if the protocol is not set, nothing is set - ignore + return; + } + + ConsoleProtocol selectedProtocol = ConsoleProtocol.valueOf(selectedProtocolString); + + if (selectedProtocol == ConsoleProtocol.SPICE) { + loadSpiceData(model, keyMaker); + } else if (selectedProtocol == ConsoleProtocol.RDP) { + loadRdpData(model, keyMaker); + } else { + // VNC is available all the time + model.setSelectedProtocol(selectedProtocol); + } + } + + protected IRdp asRdp(HasConsoleModel model) { + return ((RdpConsoleModel) model.getAdditionalConsoleModel()).getrdp(); + } + + protected void storeSpiceData(ISpice spice, KeyMaker keyMaker) { + storeBool(keyMaker.make(CTRL_ALT_DEL), spice.getSendCtrlAltDelete()); + storeBool(keyMaker.make(OPEN_IN_FULL_SCREEN), spice.isFullScreen()); + storeBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN), spice.isSmartcardEnabledOverridden()); + storeBool(keyMaker.make(WAN_OPTIONS), spice.isWanOptionsEnabled()); + storeBool(keyMaker.make(USB_AUTOSHARE), spice.getUsbAutoShare()); + } + + protected void loadRdpData(HasConsoleModel model, KeyMaker keyMaker) { + if (!consoleUtils.isRDPAvailable() || model.getAdditionalConsoleModel() == null) { + // don't read rdp options if the rdp console is not available anymore + return; + } + + model.setSelectedProtocol(ConsoleProtocol.RDP); + + IRdp rdp = asRdp(model); + + rdp.setUseLocalDrives(readBool(keyMaker.make(USE_LOCAL_DRIVES))); + } + + protected void loadSpiceData(HasConsoleModel model, KeyMaker keyMaker) { + if (!consoleUtils.isSpiceAvailable() || !(model.getDefaultConsoleModel() instanceof SpiceConsoleModel)) { + // don't read spice options if the spice console is not available anymore + return; + } + + model.setSelectedProtocol(ConsoleProtocol.SPICE); + + ISpice spice = asSpice(model); + + if (consoleUtils.isCtrlAltDelEnabled()) { + spice.setSendCtrlAltDelete(readBool(keyMaker.make(CTRL_ALT_DEL))); + } + + if (consoleUtils.isWanOptionsAvailable(model)) { + spice.setWanOptionsEnabled(readBool(keyMaker.make(WAN_OPTIONS))); + } + + spice.setFullScreen(readBool(keyMaker.make(OPEN_IN_FULL_SCREEN))); + spice.setOverrideEnabledSmartcard(readBool(keyMaker.make(SMARTCARD_ENABLED_OVERRIDDEN))); + spice.setUsbAutoShare(readBool(keyMaker.make(USB_AUTOSHARE))); + } + + protected ISpice asSpice(HasConsoleModel model) { + return ((SpiceConsoleModel) model.getDefaultConsoleModel()).getspice(); + } + + protected void storeRdpData(IRdp rdp, KeyMaker keyMaker) { + storeBool(keyMaker.make(USE_LOCAL_DRIVES), rdp.getUseLocalDrives()); + } + + private boolean readBool(String key) { + return Boolean.parseBoolean(clientStorage.getLocalItem(key)); + } + + private void storeBool(String key, boolean value) { + clientStorage.setLocalItem(key, Boolean.toString(value)); + } + + class KeyMaker { + + private String vmId; + + private ConsoleContext context; + + public KeyMaker(String vmId, ConsoleContext context) { + super(); + this.vmId = vmId; + this.context = context; + } + + public String make(String key) { + return vmId + context + key; + } + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtils.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtils.java index fb6f302..4c053fa 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtils.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/utils/ConsoleUtils.java @@ -200,6 +200,15 @@ return false; } + public boolean isWanOptionsAvailable(HasConsoleModel model) { + boolean spiceAvailable = + model.getDefaultConsoleModel() instanceof SpiceConsoleModel && isSpiceAvailable(); + boolean isWindowsVm = model.getVM().getOs().isWindows(); + boolean spiceGuestAgentInstalled = model.getVM().getSpiceDriverVersion() != null; + + return spiceAvailable && isWindowsVm && spiceGuestAgentInstalled; + } + public native String getUserAgentString() /*-{ var userAgent = navigator.userAgent; return userAgent; diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleOptionsFrontendPersister.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleOptionsFrontendPersister.java new file mode 100644 index 0000000..34edc29 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConsoleOptionsFrontendPersister.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.ui.uicommonweb; + +import org.ovirt.engine.ui.uicommonweb.models.HasConsoleModel; + +public interface ConsoleOptionsFrontendPersister { + + void storeToLocalStorage(HasConsoleModel model, ConsoleContext context); + + void loadFromLocalStorage(HasConsoleModel model, ConsoleContext context); + + /** + * The stored/loaded entities can not interfere from one app/view to other even it is all in one browser. + */ + public static enum ConsoleContext { + UP_BASIC, + UP_EXTENDED, + WA; + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/ConsolePopupModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/ConsolePopupModel.java index 1f0e9d8..dd8ee8a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/ConsolePopupModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/ConsolePopupModel.java @@ -1,10 +1,13 @@ package org.ovirt.engine.ui.uicommonweb.models; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicompat.ConstantsManager; public class ConsolePopupModel extends Model { private HasConsoleModel consoleModel; + + private ConsoleContext consoleContext; public ConsolePopupModel() { setTitle(ConstantsManager.getInstance().getConstants().consoleOptions()); @@ -18,4 +21,11 @@ this.consoleModel = model; } + public ConsoleContext getConsoleContext() { + return consoleContext; + } + + public void setConsoleContext(ConsoleContext consoleContext) { + this.consoleContext = consoleContext; + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java index 3122d2d..a7c7ac2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java @@ -9,6 +9,7 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.HasConsoleModel; import org.ovirt.engine.ui.uicommonweb.models.ConsoleModelsCache; @@ -121,6 +122,7 @@ } ConsolePopupModel model = new ConsolePopupModel(); + model.setConsoleContext(getConsoleContext()); model.setModel((UserPortalItemModel) this.getSelectedItem()); model.setHashName("editConsole"); //$NON-NLS-1$ setWindow(model); @@ -135,6 +137,8 @@ model.getCommands().add(cancelCommand); } + protected abstract ConsoleContext getConsoleContext(); + protected void cancel() { Frontend.Unsubscribe(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java index afcb43b..af07617 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java @@ -14,6 +14,7 @@ import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; @@ -366,4 +367,9 @@ } } + @Override + protected ConsoleContext getConsoleContext() { + return ConsoleContext.UP_BASIC; + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index 67f6dba..5771a36 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -48,6 +48,7 @@ import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Cloner; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; @@ -1815,4 +1816,9 @@ protected String getListName() { return "UserPortalListModel"; //$NON-NLS-1$ } + + @Override + protected ConsoleContext getConsoleContext() { + return ConsoleContext.UP_EXTENDED; + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index eec3413..5f3bf09 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -65,9 +65,12 @@ import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.Cloner; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.TagsEqualityComparer; +import org.ovirt.engine.ui.uicommonweb.TypeResolver; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.ConsoleModelsCache; @@ -99,6 +102,9 @@ public class VmListModel extends VmBaseListModel<VM> implements ISupportSystemTreeContext, HasConsoleModel, UserSelectedDisplayProtocolManager { + + private final ConsoleOptionsFrontendPersister consoleOptionsPersister = (ConsoleOptionsFrontendPersister) TypeResolver.getInstance().Resolve(ConsoleOptionsFrontendPersister.class); + private UICommand privateNewServerCommand; public UICommand getNewServerCommand() @@ -805,7 +811,9 @@ } ConsolePopupModel model = new ConsolePopupModel(); + model.setConsoleContext(ConsoleContext.WA); model.setModel(this); + model.setHashName("editConsole"); //$NON-NLS-1$ setWindow(model); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/UtilsModule.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/UtilsModule.java index 6960e49..b61b13a 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/UtilsModule.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/gin/UtilsModule.java @@ -1,18 +1,19 @@ package org.ovirt.engine.ui.userportal.gin; +import org.ovirt.engine.ui.common.gin.BaseUtilsModule; import org.ovirt.engine.ui.common.utils.ConsoleManager; import org.ovirt.engine.ui.common.utils.ConsoleUtils; import org.ovirt.engine.ui.userportal.section.login.presenter.ConnectAutomaticallyProvider; import org.ovirt.engine.ui.userportal.utils.ConnectAutomaticallyManager; import org.ovirt.engine.ui.userportal.widget.basic.MainTabBasicListItemMessagesTranslator; -import com.google.gwt.inject.client.AbstractGinModule; import com.google.inject.Singleton; -public class UtilsModule extends AbstractGinModule { +public class UtilsModule extends BaseUtilsModule { @Override protected void configure() { + super.configure(); bind(ConsoleUtils.class).in(Singleton.class); bind(MainTabBasicListItemMessagesTranslator.class).in(Singleton.class); bind(ConnectAutomaticallyProvider.class).in(Singleton.class); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicListItemPresenterWidget.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicListItemPresenterWidget.java index 2790e0b..f2905bb 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicListItemPresenterWidget.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicListItemPresenterWidget.java @@ -6,7 +6,9 @@ import org.ovirt.engine.ui.common.utils.ConsoleManager; import org.ovirt.engine.ui.common.utils.ConsoleUtils; import org.ovirt.engine.ui.common.widget.HasEditorDriver; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalBasicListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel; import org.ovirt.engine.ui.uicompat.Event; @@ -76,15 +78,17 @@ private UserPortalBasicListModel listModel; private IEventListener selectedItemChangeListener; + private final ConsoleOptionsFrontendPersister consoleOptionsPersister; @Inject public MainTabBasicListItemPresenterWidget(EventBus eventBus, ViewDef view, ConsoleUtils consoleUtils, ConsoleManager consoleManager, - final UserPortalBasicListProvider listModelProvider) { + final UserPortalBasicListProvider listModelProvider, ConsoleOptionsFrontendPersister consoleOptionsPersister) { super(eventBus, view); this.consoleUtils = consoleUtils; this.consoleManager = consoleManager; this.listModelProvider = listModelProvider; + this.consoleOptionsPersister = consoleOptionsPersister; registerHandler(getEventBus().addHandler(UserPortalModelInitEvent.getType(), new UserPortalModelInitHandler() { @Override @@ -236,6 +240,7 @@ @Override public void onDoubleClick(DoubleClickEvent event) { + consoleOptionsPersister.loadFromLocalStorage(model, ConsoleContext.UP_BASIC); String res = consoleManager.connectToConsole(model); if (res != null) { getView().showErrorDialog(res); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java index b49d52a..384930d 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/extended/SideTabExtendedVirtualMachineView.java @@ -12,7 +12,9 @@ import org.ovirt.engine.ui.common.utils.ConsoleUtils; import org.ovirt.engine.ui.common.utils.ElementIdUtils; import org.ovirt.engine.ui.common.widget.table.SimpleActionTable; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalItemModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.UserPortalListModel; import org.ovirt.engine.ui.uicompat.EnumTranslator; @@ -68,6 +70,7 @@ private static final VmTableResources vmTableResources = GWT.create(VmTableResources.class); private final MainTabBasicListItemMessagesTranslator statusTranslator; private final ApplicationConstants constants; + private final ConsoleOptionsFrontendPersister consoleOptionsPersister; @Inject public SideTabExtendedVirtualMachineView(UserPortalListProvider modelProvider, @@ -78,13 +81,15 @@ ErrorPopupManager errorPopupManager, Provider<ConsolePopupPresenterWidget> consolePopup, MainTabBasicListItemMessagesTranslator translator, - ApplicationConstants constants) { + ApplicationConstants constants, + ConsoleOptionsFrontendPersister consoleOptionsPersister) { super(modelProvider, applicationResources); this.applicationResources = applicationResources; this.consoleManager = consoleManager; this.errorPopupManager = errorPopupManager; this.statusTranslator = translator; this.constants = constants; + this.consoleOptionsPersister = consoleOptionsPersister; applicationResources.sideTabExtendedVmStyle().ensureInjected(); ViewIdHandler.idHandler.generateAndSetIds(this); initTable(templates, consoleUtils); @@ -192,6 +197,7 @@ new ConsoleButtonCommand() { @Override public void execute(UserPortalItemModel model) { + consoleOptionsPersister.loadFromLocalStorage(model, ConsoleContext.UP_EXTENDED); String message = consoleManager.connectToConsole(model); if (message != null) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UtilsModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UtilsModule.java index f5842a9..ef40b9b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UtilsModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UtilsModule.java @@ -1,16 +1,17 @@ package org.ovirt.engine.ui.webadmin.gin; +import org.ovirt.engine.ui.common.gin.BaseUtilsModule; import org.ovirt.engine.ui.common.utils.ConsoleManager; import org.ovirt.engine.ui.common.utils.ConsoleUtils; -import com.google.gwt.inject.client.AbstractGinModule; import com.google.inject.Singleton; -public class UtilsModule extends AbstractGinModule { +public class UtilsModule extends BaseUtilsModule { @Override protected void configure() { + super.configure(); bind(ConsoleUtils.class).in(Singleton.class); bind(ConsoleManager.class).in(Singleton.class); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabVirtualMachinePresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabVirtualMachinePresenter.java index e24543e..1e02b42 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabVirtualMachinePresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabVirtualMachinePresenter.java @@ -9,6 +9,8 @@ import org.ovirt.engine.ui.common.utils.ConsoleManager; import org.ovirt.engine.ui.common.utils.ConsoleUtils; import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister; +import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; @@ -34,6 +36,7 @@ private final ConsoleManager consoleManager; private final ErrorPopupManager errorPopupManager; + private final ConsoleOptionsFrontendPersister consoleOptionsPersister; @GenEvent public static class VirtualMachineSelectionChange { @@ -52,6 +55,7 @@ getModel().getConsoleConnectEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { + consoleOptionsPersister.loadFromLocalStorage(getModel(), ConsoleContext.WA); String errorMessage = MainTabVirtualMachinePresenter.this.consoleManager.connectToConsole(getModel()); if (errorMessage != null) { MainTabVirtualMachinePresenter.this.errorPopupManager.show(errorMessage); @@ -72,10 +76,12 @@ @Inject public MainTabVirtualMachinePresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, PlaceManager placeManager, MainModelProvider<VM, VmListModel> modelProvider, - ConsoleManager consoleManager, ConsoleUtils consoleUtils, ErrorPopupManager errorPopupManager) { + ConsoleManager consoleManager, ConsoleUtils consoleUtils, ErrorPopupManager errorPopupManager, + ConsoleOptionsFrontendPersister consoleOptionsPersister) { super(eventBus, view, proxy, placeManager, modelProvider); this.consoleManager = consoleManager; this.errorPopupManager = errorPopupManager; + this.consoleOptionsPersister = consoleOptionsPersister; } -- To view, visit http://gerrit.ovirt.org/13274 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I847e17c6e28db7921f0bc162f0ff70399e671a03 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches