/******************************************************************************* * Copyright (c) 2004, 2010 BREDEX GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.rc.common.commands; import org.eclipse.jubula.communication.internal.ICommand; import org.eclipse.jubula.communication.internal.message.AUTModeChangedMessage; import org.eclipse.jubula.communication.internal.message.ChangeAUTModeMessage; import org.eclipse.jubula.communication.internal.message.Message; import org.eclipse.jubula.communication.internal.message.ServerShowDialogMessage; import org.eclipse.jubula.communication.internal.message.ServerShowObservConsoleMessage; import org.eclipse.jubula.rc.common.AUTServer; import org.eclipse.jubula.rc.common.AUTServerConfiguration; import org.eclipse.jubula.tools.internal.exception.CommunicationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The command object for ChangeAUTModeMessage. <br> * The execute() method enables the <code>mode</code> and returns a * AUTModeChangedMessage. * * @author BREDEX GmbH * @created 23.08.2004 * */ public class ChangeAUTModeCommand implements ICommand { /** the logger */ private static Logger log = LoggerFactory.getLogger(ChangeAUTModeCommand.class); /** the message */ private ChangeAUTModeMessage m_message; /** * {@inheritDoc} */ public Message getMessage() { return m_message; } /** * Stores also the new configuration into {@link AUTServerConfiguration} * contained in the given message. * {@inheritDoc} */ public void setMessage(Message message) { m_message = (ChangeAUTModeMessage) message; final AUTServerConfiguration autServerConfig = AUTServerConfiguration.getInstance(); switch (m_message.getMode()) { case ChangeAUTModeMessage.CHECK_MODE : case ChangeAUTModeMessage.RECORD_MODE : case ChangeAUTModeMessage.AGENT_OBJECT_MAPPING : case ChangeAUTModeMessage.OBJECT_MAPPING : autServerConfig.setMappingKeyMod(m_message .getMappingKeyModifier()); autServerConfig.setMappingWithParentsKeyMod(m_message .getMappingWithParentsKeyModifier()); autServerConfig.setMappingKey(m_message.getMappingKey()); autServerConfig.setMappingWithParentsKey(m_message .getMappingWithParentsKey()); autServerConfig.setMappingMouseButton(m_message .getMappingMouseButton()); autServerConfig.setMappingWithParentsMouseButton(m_message .getMappingWithParentsMouseButton()); autServerConfig.setKey2Mod(m_message.getKey2Modifier()); autServerConfig.setKey2(m_message.getKey2()); autServerConfig.setCheckModeKeyMod(m_message .getCheckModeKeyModifier()); autServerConfig.setCheckModeKey(m_message.getCheckModeKey()); autServerConfig.setCheckCompKeyMod(m_message .getCheckCompKeyModifier()); autServerConfig.setCheckCompKey(m_message.getCheckCompKey()); autServerConfig.setSingleLineTrigger(m_message .getSingleLineTrigger()); autServerConfig.setMultiLineTrigger(m_message .getMultiLineTrigger()); default : } } /** * Changes the mode of the AUTServer to the mode taken from the message. * Returns an AUTModeChangedMessage with the new mode. * * {@inheritDoc} */ public Message execute() { log.info("changing mode of the AUTServer to: " //$NON-NLS-1$ + m_message.getMode()); AUTServer autserver = AUTServer.getInstance(); int oldMode = autserver.getMode(); autserver.setMode(m_message.getMode()); autserver.refreshMode(); ServerShowObservConsoleMessage shellMsg = new ServerShowObservConsoleMessage(); ServerShowDialogMessage dialogMsg = new ServerShowDialogMessage(); switch (m_message.getMode()) { case ChangeAUTModeMessage.CHECK_MODE : if (m_message.getRecordDialogOpen()) { shellMsg.setAction(ServerShowObservConsoleMessage .ACT_SHOW_ACTION_SHELL); } shellMsg.setCheck(true); break; case ChangeAUTModeMessage.RECORD_MODE : if (m_message.getRecordDialogOpen()) { shellMsg.setAction(ServerShowObservConsoleMessage .ACT_SHOW_ACTION_SHELL); } shellMsg.setCheck(false); break; default : shellMsg.setAction(ServerShowObservConsoleMessage .ACT_CLOSE_ACTION_SHELL); dialogMsg.setAction(ServerShowDialogMessage .ACT_CLOSE_CHECK_DIALOG); } try { autserver.getServerCommunicator().send(shellMsg); if (m_message.getMode() != oldMode && (m_message.getMode() == ChangeAUTModeMessage.TESTING)) { autserver.getServerCommunicator().send(dialogMsg); } } catch (CommunicationException e) { // Could not send message to AUT Agent. This is not a problem, // as it means that there is no more connection to the AUT Agent, // and if there is no connection to the AUT Agent, then this AUT // will be ending shortly anyway. } AUTModeChangedMessage result = new AUTModeChangedMessage(); result.setMode(autserver.getMode()); return result; } /** * {@inheritDoc} */ public void timeout() { log.error(this.getClass().getName() + ".timeout() called"); //$NON-NLS-1$ } }