package org.ovirt.engine.ui.uicommonweb.models.vms; import org.ovirt.engine.ui.frontend.ConsoleErrorTranslator; import org.ovirt.engine.ui.uicommonweb.ICommandTarget; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.help.HelpTag; import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.IEventListener; /** * Listens to error events of the ConsoleModel. If one catched, translates the error code to human readable message and * displays a popup. */ public class ConsoleModelErrorEventListener implements IEventListener<ErrorCodeEventArgs>, ICommandTarget { private ConsoleErrorTranslator consoleErrorCodeTranslator = new ConsoleErrorTranslator(); private Model parentModel; public ConsoleModelErrorEventListener(Model parentModel) { super(); this.parentModel = parentModel; } @Override public void eventRaised(Event<? extends ErrorCodeEventArgs> ev, Object sender, ErrorCodeEventArgs args) { if (ev.matchesDefinition(ConsoleModel.errorEventDefinition) && ((sender instanceof SpiceConsoleModel) || (sender instanceof RdpConsoleModel))) { consoleModelError(sender, getConsoleModelErrorMessage(sender, args)); } } private String getConsoleModelErrorMessage(Object sender, ErrorCodeEventArgs e) { String translatedError = consoleErrorCodeTranslator.translateErrorCode(e.getErrorCode()); if (sender instanceof SpiceConsoleModel) { return ConstantsManager.getInstance() .getMessages() .errConnectingVmUsingSpiceMsg(translatedError); } else if (sender instanceof RdpConsoleModel) { return ConstantsManager.getInstance() .getMessages() .errConnectingVmUsingRdpMsg(translatedError); } return translatedError; } private void consoleModelError(Object sender, String message) { ConfirmationModel model = new ConfirmationModel(); if (parentModel.getConfirmWindow() == null) { parentModel.setConfirmWindow(model); } model.setTitle(ConstantsManager.getInstance().getConstants().consoleDisconnectedTitle()); model.setHelpTag(HelpTag.console_disconnected); model.setHashName("console_disconnected"); //$NON-NLS-1$ model.setMessage(message); UICommand tempVar = new UICommand("CancelError", this); //$NON-NLS-1$ tempVar.setTitle(ConstantsManager.getInstance().getConstants().close()); tempVar.setIsDefault(true); tempVar.setIsCancel(true); model.getCommands().add(tempVar); } @Override public void executeCommand(UICommand command) { if ("CancelError".equals(command.getName())) { //$NON-NLS-1$ parentModel.setConfirmWindow(null); } } @Override public void executeCommand(UICommand uiCommand, Object... parameters) { executeCommand(uiCommand); } }