blob: 9c05d115b5ff3f857da78e0d4c65d32a10385ac0 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2005, 2014 IBM Corporation, Ericsson
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM - Initial API and implementation
* Bernd Hufmann - Updated for TMF
**********************************************************************/
package org.eclipse.tracecompass.tmf.ui.views.uml2sd.core;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.drawings.IGC;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.preferences.ISDPreferences;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.preferences.SDViewPref;
/**
* The message return graph node implementation.<br>
* This class differs on the AsynMessage class only on the drawing line style (dashed instead of plain line).<br>
* Message return are generally associated to a message. This means, they are connected to the same lifelines than the
* associated message but in the opposite direction and for a different event occurrence.<br>
* <br>
* WARNING: The association validity is not checked, it is not necessary to provide a valid association, not even needed
* to set an association to drawn a message with a message return style.<br>
*
*
* @see org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.AsyncMessage AsyncMessage for usage example
* @version 1.0
* @author sveyrier
*
*/
public class AsyncMessageReturn extends AsyncMessage {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
/**
* The grahNode ID constant
*/
public static final String ASYNC_MESS_RET_TAG = "AsyncMessageRet"; //$NON-NLS-1$
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
/**
* The corresponding asynchronous message.
*/
protected AsyncMessage fMessage;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Default constructor.
*/
public AsyncMessageReturn() {
setColorPrefId(ISDPreferences.PREF_ASYNC_MESS_RET);
}
// ------------------------------------------------------------------------
// Methods
// ------------------------------------------------------------------------
/**
* Set the associated message (the message it is the return).<br>
* Setting the association will activate the navigation in the default sequence diagram implementation to the
* message when the user right click on this message return.<br>
*
* @param parentMessage the message to associate
*/
public void setMessage(AsyncMessage parentMessage) {
fMessage = parentMessage;
}
/**
* Returns the associated message (the message it is the return).<br>
*
* @return parentMessage the message to associate
*/
public AsyncMessage getMessage() {
return fMessage;
}
@Override
public void draw(IGC context) {
if (!isVisible()) {
return;
}
ISDPreferences pref = SDViewPref.getInstance();
setColorPrefId(ISDPreferences.PREF_ASYNC_MESS_RET);
int oldStyle = context.getLineStyle();
// Message return are dashed
context.setLineStyle(context.getLineDotStyle());
if (!isSelected()) {
context.setBackground(pref.getBackGroundColor(getColorPrefId()));
context.setForeground(pref.getForeGroundColor(getColorPrefId()));
}
super.draw(context);
// restore the context
context.setLineStyle(oldStyle);
}
@Override
public String getArrayId() {
return ASYNC_MESS_RET_TAG;
}
}