blob: cdf29e2fe560bfb267264d36389abc6ec453bae4 [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 SynMessage 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.SyncMessage SyncMessage for usage example
* @version 1.0
* @author sveyrier
*
*/
public class SyncMessageReturn extends SyncMessage {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
/**
* The graphNode ID
*/
public static final String SYNC_MESS_RET_TAG = "SyncMessageRet"; //$NON-NLS-1$
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
/**
* The associated message(the message it is the return).
*/
private SyncMessage fMessage = null;
// ------------------------------------------------------------------------
// Constractors
// ------------------------------------------------------------------------
/**
* Default constructor
*/
public SyncMessageReturn() {
setColorPrefId(ISDPreferences.PREF_SYNC_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(SyncMessage parentMessage) {
fMessage = parentMessage;
fMessage.setMessageReturn(this);
}
/**
* Returns the syncMessage associated to this SyncMessageReturn
*
* @return the associated message
*/
public SyncMessage getMessage() {
return fMessage;
}
@Override
public void draw(IGC context) {
if (!isVisible()) {
return;
}
ISDPreferences pref = SDViewPref.getInstance();
int oldStyle = context.getLineStyle();
// Message return are dashed
context.setLineStyle(context.getLineDotStyle());
// Draw it selected?
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 SYNC_MESS_RET_TAG;
}
}