/******************************************************************************* * Copyright (c) 2016 Ericsson * * 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 *******************************************************************************/ package org.eclipse.tracecompass.internal.analysis.os.linux.ui.actions; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jface.action.Action; import org.eclipse.tracecompass.analysis.os.linux.core.signals.TmfThreadSelectedSignal; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.ui.views.TmfView; /** * Follow Thread Action, this action broadcasts a * {@link TmfThreadSelectedSignal} when run, it sends a thread id and a trace to * the signal. * * @author Matthew Khouzam */ @NonNullByDefault public class FollowThreadAction extends Action { private final int fThreadId; private final TmfView fView; private final ITmfTrace fTrace; private final @Nullable String fThreadName; /** * Constructor * * @param source * the view that is generating the signal, but also shall * broadcast it * @param threadName * the thread name, can be null * @param threadId * the thread id * @param trace * the trace containing the thread */ public FollowThreadAction(TmfView source, @Nullable String threadName, int threadId, ITmfTrace trace) { fView = source; fThreadName = threadName; fThreadId = threadId; fTrace = trace; } @Override public String getText() { if (fThreadName == null) { return Messages.FollowThreadAction_follow + ' ' + fThreadId; } return Messages.FollowThreadAction_follow + ' ' + fThreadName + '/' + fThreadId; } @Override public void run() { fView.broadcast(new TmfThreadSelectedSignal(fView, fThreadId, fTrace)); super.run(); } }