blob: 6a39e51787b9be213b720850d08eea1fc482853b [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2019 École Polytechnique de Montréal
*
* 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
**********************************************************************/
package org.eclipse.tracecompass.incubator.internal.ros.ui.messageflow;
import org.eclipse.tracecompass.incubator.internal.ros.core.analysis.messageflow.RosMessageFlowAnalysis;
import org.eclipse.tracecompass.incubator.internal.ros.core.analysis.messageflow.TargetMessageInfo;
import org.eclipse.tracecompass.incubator.internal.ros.core.signals.RosMessageSelectedSignal;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisParamProvider;
import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
/**
* Parameter provider for the ROS Message Flow analysis. Contains the target
* message info.
*
* @author Christophe Bedard
*/
public class RosMessageFlowParameterProvider extends TmfAbstractAnalysisParamProvider {
private static final String NAME = "ROS Message Flow parameter provider"; //$NON-NLS-1$
private TargetMessageInfo fInfo = null;
/**
* Constructor
*/
public RosMessageFlowParameterProvider() {
super();
TmfSignalManager.register(this);
}
@Override
public void dispose() {
super.dispose();
TmfSignalManager.deregister(this);
}
@Override
public String getName() {
return NAME;
}
@Override
public Object getParameter(String name) {
if (name.equals(RosMessageFlowAnalysis.TARGET_MESSAGE_INFO_KEY)) {
return fInfo;
}
return null;
}
@Override
public boolean appliesToTrace(ITmfTrace trace) {
return true;
}
/**
* Handle {@link RosMessageSelectedSignal}
*
* @param signal
* the signal
*/
@TmfSignalHandler
public void handleFollowedMessage(RosMessageSelectedSignal signal) {
setTargetMessageInfo(signal.getInfo());
}
private void setTargetMessageInfo(TargetMessageInfo info) {
fInfo = info;
notifyParameterChanged(RosMessageFlowAnalysis.TARGET_MESSAGE_INFO_KEY);
}
}