analysis: bug 494786. Clear process selection when switching trace
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.os.linux.ui / src / org / eclipse / tracecompass / internal / analysis / os / linux / ui / views / kernelmemoryusage / KernelMemoryUsageViewer.java
index c54184aaa9b8b5b1024218bea516c8f111893173..483e0e4b1609a56013cbee0a35d77dc52eae3fa8 100644 (file)
@@ -21,6 +21,9 @@ import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundExc
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
 import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
 import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
+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.statesystem.TmfStateSystemAnalysisModule;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
@@ -49,7 +52,7 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
     public KernelMemoryUsageViewer(Composite parent) {
         super(parent, Messages.MemoryUsageViewer_title, Messages.MemoryUsageViewer_xAxis, Messages.MemoryUsageViewer_yAxis);
         Chart chart = getSwtChart();
-        chart.getAxisSet().getYAxis(0).getTick().setFormat(new DataSizeWithUnitFormat());
+        chart.getAxisSet().getYAxis(0).getTick().setFormat(DataSizeWithUnitFormat.getInstance());
         chart.getLegend().setPosition(SWT.BOTTOM);
     }
 
@@ -78,13 +81,17 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
 
         ITmfStateSystem ss = module.getStateSystem();
         if (ss == null) {
-            throw new IllegalStateException();
+            throw new IllegalStateException("No state system for the module " + module.toString()); //$NON-NLS-1$
         }
 
         double[] xvalues = getXAxis(start, end, nb);
         if (xvalues.length == 0) {
             return;
         }
+        long clampedEnd = Math.min(end, ss.getCurrentEndTime());
+        if (clampedEnd < ss.getStartTime()) {
+            return;
+        }
         setXAxis(xvalues);
 
         try {
@@ -103,7 +110,10 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
 
                 double x = xvalues[i];
                 long t = (long) x + getTimeOffset();
-
+                if( ss.getCurrentEndTime() < t || ss.getStartTime() > t) {
+                    selectedThreadValues[i] = 0;
+                    continue;
+                }
                 List<ITmfStateInterval> kernelState = ss.queryFullState(t);
 
                 /* The subattributes of the root are the different threads */
@@ -132,7 +142,7 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
              * The lowest value we are searching is at the end of the current
              * selected zone
              */
-            List<ITmfStateInterval> kernelState = ss.queryFullState(end);
+            List<ITmfStateInterval> kernelState = ss.queryFullState(clampedEnd);
             List<Integer> threadQuarkList = ss.getSubAttributes(-1, false);
             /* We add the lowest value of each thread */
             for (Integer threadQuark : threadQuarkList) {
@@ -180,4 +190,18 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
         updateContent();
     }
 
+    @Override
+    @TmfSignalHandler
+    public void traceSelected(TmfTraceSelectedSignal signal) {
+        setSelectedThread(NOT_SELECTED);
+        super.traceSelected(signal);
+    }
+
+    @Override
+    @TmfSignalHandler
+    public void traceOpened(TmfTraceOpenedSignal signal) {
+        setSelectedThread(NOT_SELECTED);
+        super.traceOpened(signal);
+    }
+
 }
This page took 0.026612 seconds and 5 git commands to generate.