import java.util.List;
import java.util.Map;
+import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
import org.eclipse.tracecompass.tmf.ui.viewers.tree.AbstractTmfTreeViewer;
import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeColumnDataProvider;
@Override
@TmfSignalHandler
public void traceSelected(TmfTraceSelectedSignal signal) {
- setSelectedThread(null);
+ initSelection();
super.traceSelected(signal);
}
@Override
@TmfSignalHandler
public void traceOpened(TmfTraceOpenedSignal signal) {
- setSelectedThread(null);
+ initSelection();
super.traceOpened(signal);
}
+
+ private void initSelection() {
+ TmfTraceContext ctx = TmfTraceManager.getInstance().getCurrentTraceContext();
+ final @Nullable Object data = ctx.getData(KernelMemoryUsageView.KERNEL_MEMORY);
+ String thread = data instanceof String ? (String) data : null;
+ setSelectedThread(thread);
+ }
}
\ No newline at end of file
**********************************************************************/
package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.kernelmemoryusage;
+import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
+
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
/** ID string */
public static final String ID = "org.eclipse.tracecompass.analysis.os.linux.ui.kernelmemoryusageview"; //$NON-NLS-1$
+ /** ID of the Kernel Memory Usage view data in the data map of {@link TmfTraceContext} */
+ public static final @NonNull String KERNEL_MEMORY = ID + ".KERNEL_MEMORY"; //$NON-NLS-1$
/*
* We need this reference to update the viewer when there is a new selection
KernelMemoryUsageEntry entry = (KernelMemoryUsageEntry) structSelection;
fTreeViewerReference.setSelectedThread(entry.getTid());
((KernelMemoryUsageViewer) getChartViewer()).setSelectedThread(entry.getTid());
+ TmfTraceContext ctx = TmfTraceManager.getInstance().getCurrentTraceContext();
+ ctx.setData(KERNEL_MEMORY, checkNotNull(entry.getTid()));
}
}
}
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceContext;
+import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.linecharts.TmfCommonXLineChartViewer;
import org.swtchart.Chart;
@Override
@TmfSignalHandler
public void traceSelected(TmfTraceSelectedSignal signal) {
- setSelectedThread(NOT_SELECTED);
+ initSelection();
super.traceSelected(signal);
}
@Override
@TmfSignalHandler
public void traceOpened(TmfTraceOpenedSignal signal) {
- setSelectedThread(NOT_SELECTED);
+ initSelection();
super.traceOpened(signal);
}
+ private void initSelection() {
+ TmfTraceContext ctx = TmfTraceManager.getInstance().getCurrentTraceContext();
+ Object data = ctx.getData(KernelMemoryUsageView.KERNEL_MEMORY);
+ String thread = data instanceof String ? (String) data : NOT_SELECTED;
+ setSelectedThread(thread);
+ }
+
}