lttng: More luna annotation updates
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / viewers / statistics / TmfStatisticsViewer.java
index 2c0df664c872e7536d43508e907c0559e929d8fd..3a7b975bfe5116aaa9dcd8e2bfce5413914aae1d 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012 Ericsson
+ * Copyright (c) 2012, 2013 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -9,6 +9,7 @@
  * Contributors:
  *   Mathieu Denis <mathieu.denis@polymtl.ca> - Initial API and implementation
  *   Alexandre Montplaisir - Port to ITmfStatistics provider
+ *   Patrick Tasse - Support selection range
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.viewers.statistics;
@@ -21,17 +22,18 @@ import org.eclipse.jface.viewers.TreeViewerColumn;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.linuxtools.tmf.core.component.TmfComponent;
-import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.core.signal.TmfStatsUpdatedSignal;
+import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceRangeUpdatedSignal;
 import org.eclipse.linuxtools.tmf.core.statistics.ITmfStatistics;
+import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
+import org.eclipse.linuxtools.tmf.core.trace.TmfTraceManager;
 import org.eclipse.linuxtools.tmf.ui.viewers.TmfViewer;
 import org.eclipse.linuxtools.tmf.ui.viewers.statistics.model.ITmfColumnDataProvider;
 import org.eclipse.linuxtools.tmf.ui.viewers.statistics.model.TmfBaseColumnData;
@@ -62,11 +64,6 @@ import org.eclipse.swt.widgets.Listener;
  */
 public class TmfStatisticsViewer extends TmfViewer {
 
-    /**
-     * The initial window span (in nanoseconds)
-     */
-    public static final long INITIAL_WINDOW_SPAN = (1L * 100 * 1000 * 1000); // .1sec
-
     /**
      * Timestamp scale (nanosecond)
      */
@@ -162,12 +159,16 @@ public class TmfStatisticsViewer extends TmfViewer {
      */
     private boolean fSendRangeRequest = true;
 
+    /** Reference to the trace manager */
+    private final TmfTraceManager fTraceManager;
+
     /**
      * Empty constructor. To be used in conjunction with
      * {@link TmfStatisticsViewer#init(Composite, String, ITmfTrace)}
      */
     public TmfStatisticsViewer() {
         super();
+        fTraceManager = TmfTraceManager.getInstance();
     }
 
     /**
@@ -184,6 +185,7 @@ public class TmfStatisticsViewer extends TmfViewer {
      */
     public TmfStatisticsViewer(Composite parent, String viewerName, ITmfTrace trace) {
         init(parent, viewerName, trace);
+        fTraceManager = TmfTraceManager.getInstance();
     }
 
     /**
@@ -210,11 +212,6 @@ public class TmfStatisticsViewer extends TmfViewer {
         initInput();
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see org.eclipse.linuxtools.tmf.core.component.TmfComponent#dispose()
-     */
     @Override
     public void dispose() {
         super.dispose();
@@ -248,12 +245,9 @@ public class TmfStatisticsViewer extends TmfViewer {
             // Sends the time range request only once from this method.
             if (fSendRangeRequest) {
                 fSendRangeRequest = false;
-                // Calculate the selected time range to request
-                long startTime = signal.getRange().getStartTime().normalize(0, TIME_SCALE).getValue();
-                TmfTimestamp startTS = new TmfTimestamp(startTime, TIME_SCALE);
-                TmfTimestamp endTS = new TmfTimestamp(startTime + INITIAL_WINDOW_SPAN, TIME_SCALE);
-                TmfTimeRange timeRange = new TmfTimeRange(startTS, endTS);
-
+                ITmfTimestamp begin = fTraceManager.getSelectionBeginTime();
+                ITmfTimestamp end = fTraceManager.getSelectionEndTime();
+                TmfTimeRange timeRange = new TmfTimeRange(begin, end);
                 requestTimeRangeData(trace, timeRange);
             }
         }
@@ -266,13 +260,31 @@ public class TmfStatisticsViewer extends TmfViewer {
      *
      * @param signal
      *            Contains the information about the new selected time range.
+     * @deprecated
+     *            As of 2.1, use {@link #timeSynchUpdated(TmfTimeSynchSignal)}
      */
+    @Deprecated
     @TmfSignalHandler
     public void timeRangeUpdated(TmfRangeSynchSignal signal) {
+    }
+
+    /**
+     * Handles the time synch updated signal. It updates the time range
+     * statistics.
+     *
+     * @param signal
+     *            Contains the information about the new selected time range.
+     * @since 3.0
+     */
+    @TmfSignalHandler
+    public void timeSynchUpdated(TmfTimeSynchSignal signal) {
         if (fTrace == null) {
             return;
         }
-        requestTimeRangeData(fTrace, signal.getCurrentRange());
+        ITmfTimestamp begin = signal.getBeginTime();
+        ITmfTimestamp end = signal.getEndTime();
+        TmfTimeRange timeRange = new TmfTimeRange(begin, end);
+        requestTimeRangeData(fTrace, timeRange);
     }
 
     /**
@@ -576,14 +588,8 @@ public class TmfStatisticsViewer extends TmfViewer {
             // Checks if the trace is already in the statistics tree.
             int numNodeTraces = statisticsTreeNode.getNbChildren();
 
-            int numTraces = 1;
-            ITmfTrace[] trace = { fTrace };
-            // For experiment, gets all the traces within it
-            if (fTrace instanceof TmfExperiment) {
-                TmfExperiment experiment = (TmfExperiment) fTrace;
-                numTraces = experiment.getTraces().length;
-                trace = experiment.getTraces();
-            }
+            ITmfTrace[] traces = TmfTraceManager.getTraceSet(fTrace);
+            int numTraces = traces.length;
 
             if (numTraces == numNodeTraces) {
                 boolean same = true;
@@ -592,7 +598,7 @@ public class TmfStatisticsViewer extends TmfViewer {
                  * previously selected.
                  */
                 for (int i = 0; i < numTraces; i++) {
-                    String traceName = trace[i].getName();
+                    String traceName = traces[i].getName();
                     if (!statisticsTreeNode.containsChild(traceName)) {
                         same = false;
                         break;
@@ -723,14 +729,7 @@ public class TmfStatisticsViewer extends TmfViewer {
                 statTree.resetTimeRangeValue();
             }
 
-            ITmfTrace[] traces;
-            if (trace instanceof TmfExperiment) {
-                TmfExperiment experiment = (TmfExperiment) trace;
-                traces = experiment.getTraces();
-            } else {
-                traces = new ITmfTrace[] { trace };
-            }
-            for (final ITmfTrace aTrace : traces) {
+            for (final ITmfTrace aTrace : TmfTraceManager.getTraceSet(trace)) {
                 if (!isListeningTo(aTrace)) {
                     continue;
                 }
This page took 0.026925 seconds and 5 git commands to generate.