analysis: Keep selection when switching traces Kernel Memory Usage View
authorJean-Christian Kouame <jean-christian.kouame@ericsson.com>
Tue, 21 Jun 2016 03:13:30 +0000 (23:13 -0400)
committerJean-Christian Kouame <jean-christian.kouame@ericsson.com>
Thu, 23 Jun 2016 21:21:48 +0000 (17:21 -0400)
Change-Id: I45ba60e1476995c07b9bb0df32733ff837943ddc
Signed-off-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/75601
Reviewed-by: Hudson CI
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageTreeViewer.java
analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageView.java
analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageViewer.java

index db78eec4c5d3543780e2231a0dc51f8421c1d5ad..958fa64eebe16927c27dbaa5d546c2ab28750ff9 100644 (file)
@@ -16,6 +16,7 @@ import java.util.HashMap;
 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;
@@ -31,6 +32,8 @@ import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
 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;
@@ -235,14 +238,21 @@ public class KernelMemoryUsageTreeViewer extends AbstractTmfTreeViewer {
     @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
index 1bfa5f09b857b4eb4bd872248f5d652febef6bfe..0e9a83b2b19e2b47b52e9aadbc0b3d08fc288ffb 100644 (file)
@@ -8,6 +8,8 @@
  **********************************************************************/
 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;
@@ -18,6 +20,7 @@ import org.eclipse.swt.events.ControlEvent;
 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;
@@ -34,6 +37,8 @@ public class KernelMemoryUsageView extends TmfChartView {
 
     /** 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
@@ -62,6 +67,8 @@ public class KernelMemoryUsageView extends TmfChartView {
                     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()));
                 }
             }
         }
index 7c75d9ce08a4206a0387f0527fba3b61fc8d2dad..717a9267144982c1b345ee4a88e8d801db2f14f0 100644 (file)
@@ -26,6 +26,8 @@ import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
 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;
@@ -194,15 +196,22 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
     @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);
+    }
+
 }
This page took 0.028433 seconds and 5 git commands to generate.