tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / histogram / HistogramView.java
index 980a69964d64773fda8edfaa872b7db63713fe6b..64202fc771f39f13484166976382571bd04f77d2 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010, 2011, 2012 Ericsson
+ * Copyright (c) 2009, 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
@@ -18,9 +18,6 @@
 package org.eclipse.linuxtools.tmf.ui.views.histogram;
 
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-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.ExecutionType;
 import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
@@ -32,6 +29,9 @@ import org.eclipse.linuxtools.tmf.core.signal.TmfTraceOpenedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceRangeUpdatedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceSelectedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceUpdatedSignal;
+import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimeRange;
+import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.ui.editors.ITmfTraceEditor;
 import org.eclipse.linuxtools.tmf.ui.views.TmfView;
@@ -40,7 +40,6 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
 
 /**
  * The purpose of this view is to provide graphical time distribution statistics about the trace events.
@@ -68,11 +67,6 @@ public class HistogramView extends TmfView {
      */
     public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.histogram"; //$NON-NLS-1$
 
-    /**
-     *  The initial window span (in nanoseconds)
-     */
-    public static final long INITIAL_WINDOW_SPAN = (1L * 100 * 1000 * 1000); // .1sec
-
     // ------------------------------------------------------------------------
     // Attributes
     // ------------------------------------------------------------------------
@@ -88,7 +82,7 @@ public class HistogramView extends TmfView {
     private long fTraceEndTime;
     private long fWindowStartTime;
     private long fWindowEndTime;
-    private long fWindowSpan = INITIAL_WINDOW_SPAN;
+    private long fWindowSpan;
     private long fCurrentTimestamp;
 
     // Time controls
@@ -184,7 +178,7 @@ public class HistogramView extends TmfView {
         gridData.verticalAlignment = SWT.CENTER;
         fCurrentEventTimeControl = new HistogramCurrentTimeControl(this, controlsComposite, currentEventLabel, 0L);
         fCurrentEventTimeControl.setLayoutData(gridData);
-        fCurrentEventTimeControl.setValue(0L);
+        fCurrentEventTimeControl.setValue(Long.MIN_VALUE);
 
         // Window span time control
         gridData = new GridData();
@@ -192,7 +186,7 @@ public class HistogramView extends TmfView {
         gridData.verticalAlignment = SWT.CENTER;
         fTimeSpanControl = new HistogramTimeRangeControl(this, controlsComposite, windowSpanLabel, 0L);
         fTimeSpanControl.setLayoutData(gridData);
-        fTimeSpanControl.setValue(0L);
+        fTimeSpanControl.setValue(Long.MIN_VALUE);
 
         // --------------------------------------------------------------------
         // Time range histogram
@@ -247,7 +241,7 @@ public class HistogramView extends TmfView {
         // Histogram
         fFullTraceHistogram = new FullTraceHistogram(this, fullRangeComposite);
 
-        IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+        IEditorPart editor = getSite().getPage().getActiveEditor();
         if (editor instanceof ITmfTraceEditor) {
             ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace();
             if (trace != null) {
@@ -283,6 +277,7 @@ public class HistogramView extends TmfView {
      * Returns the time range of the current selected window (base on default time scale).
      *
      * @return the time range of current selected window.
+     * @since 2.0
      */
     public TmfTimeRange getTimeRange() {
         return new TmfTimeRange(
@@ -341,26 +336,28 @@ public class HistogramView extends TmfView {
     public synchronized void updateTimeRange(long newDuration) {
         if (fTrace != null) {
             long delta = newDuration - fWindowSpan;
-            long newStartTime = fWindowStartTime + (delta / 2);
+            long newStartTime = fWindowStartTime - (delta / 2);
             setNewRange(newStartTime, newDuration);
         }
     }
 
     private void setNewRange(long startTime, long duration) {
-        if (startTime < fTraceStartTime) {
-            startTime = fTraceStartTime;
+        long realStart = startTime;
+
+        if (realStart < fTraceStartTime) {
+            realStart = fTraceStartTime;
         }
 
-        long endTime = startTime + duration;
+        long endTime = realStart + duration;
         if (endTime > fTraceEndTime) {
             endTime = fTraceEndTime;
-            if ((endTime - duration) > fTraceEndTime) {
-                startTime = endTime - duration;
+            if ((endTime - duration) > fTraceStartTime) {
+                realStart = endTime - duration;
             } else {
-                startTime = fTraceStartTime;
+                realStart = fTraceStartTime;
             }
         }
-        updateTimeRange(startTime, endTime);
+        updateTimeRange(realStart, endTime);
     }
 
     // ------------------------------------------------------------------------
@@ -426,15 +423,15 @@ public class HistogramView extends TmfView {
         fTraceEndTime = 0L;
         fWindowStartTime = 0L;
         fWindowEndTime = 0L;
-        fWindowSpan = INITIAL_WINDOW_SPAN;
+        fWindowSpan = 0L;
         fCurrentTimestamp = 0L;
 
         // Clear the UI widgets
         fFullTraceHistogram.clear();
         fTimeRangeHistogram.clear();
-        fCurrentEventTimeControl.setValue(0L);
+        fCurrentEventTimeControl.setValue(Long.MIN_VALUE);
 
-        fTimeSpanControl.setValue(0);
+        fTimeSpanControl.setValue(Long.MIN_VALUE);
     }
 
     /**
@@ -452,7 +449,6 @@ public class HistogramView extends TmfView {
             return;
         }
 
-        boolean drawTimeRangeHistogram = fTraceStartTime == 0;
         TmfTimeRange fullRange = signal.getRange();
 
         fTraceStartTime = fullRange.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
@@ -461,14 +457,6 @@ public class HistogramView extends TmfView {
         fFullTraceHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
         fTimeRangeHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
 
-        if (drawTimeRangeHistogram) {
-            fCurrentTimestamp = fTraceStartTime;
-            fCurrentEventTimeControl.setValue(fCurrentTimestamp);
-            fFullTraceHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
-            fTimeRangeHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
-            sendTimeRangeRequest(fTraceStartTime, fTraceStartTime + INITIAL_WINDOW_SPAN);
-        }
-
         sendFullRangeRequest(fullRange);
     }
 
@@ -489,6 +477,9 @@ public class HistogramView extends TmfView {
         fFullTraceHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
         fTimeRangeHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
 
+        fFullTraceHistogram.setTimeRange(fTimeRangeHistogram.getStartTime(), fWindowSpan);
+        fTimeRangeHistogram.setTimeRange(fTimeRangeHistogram.getStartTime(), fWindowSpan);
+
         if ((fFullTraceRequest != null) && fFullTraceRequest.getRange().getEndTime().compareTo(signal.getRange().getEndTime()) < 0) {
             sendFullRangeRequest(fullRange);
         }
@@ -525,9 +516,15 @@ public class HistogramView extends TmfView {
         assert (signal != null);
 
         if (fTrace != null) {
+            // Validate the time range
+            TmfTimeRange range = signal.getCurrentRange().getIntersection(fTrace.getTimeRange());
+            if (range == null) {
+                return;
+            }
+
             // Update the time range
-            fWindowStartTime = signal.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
-            fWindowEndTime = signal.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+            fWindowStartTime = range.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+            fWindowEndTime = range.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
             fWindowSpan = fWindowEndTime - fWindowStartTime;
 
             // Notify the relevant widgets
@@ -544,33 +541,37 @@ public class HistogramView extends TmfView {
 
     private void initializeHistograms() {
         TmfTimeRange fullRange = updateTraceTimeRange();
+        long timestamp = fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+        long startTime = fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+        long duration = fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue() - startTime;
 
         if ((fTimeRangeRequest != null) && !fTimeRangeRequest.isCompleted()) {
             fTimeRangeRequest.cancel();
         }
         fTimeRangeHistogram.clear();
         fTimeRangeHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
-        fTimeRangeHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
-        fTimeRangeHistogram.setCurrentEvent(fTraceStartTime);
+        fTimeRangeHistogram.setTimeRange(startTime, duration);
+        fTimeRangeHistogram.setCurrentEvent(timestamp);
 
         if ((fFullTraceRequest != null) && !fFullTraceRequest.isCompleted()) {
             fFullTraceRequest.cancel();
         }
         fFullTraceHistogram.clear();
         fFullTraceHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
-        fFullTraceHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
-        fFullTraceHistogram.setCurrentEvent(fTraceStartTime);
+        fFullTraceHistogram.setTimeRange(startTime, duration);
+        fFullTraceHistogram.setCurrentEvent(timestamp);
 
-        fWindowStartTime = fTraceStartTime;
-        fWindowSpan = INITIAL_WINDOW_SPAN;
-        fWindowEndTime = fWindowStartTime + fWindowSpan;
+        fWindowStartTime = startTime;
+        fWindowSpan = duration;
+        fWindowEndTime = startTime + duration;
 
-        fCurrentEventTimeControl.setValue(fTraceStartTime);
+        fCurrentTimestamp = timestamp;
+        fCurrentEventTimeControl.setValue(fCurrentTimestamp);
 
-        fTimeSpanControl.setValue(fWindowSpan);
+        fTimeSpanControl.setValue(duration);
 
         if (!fullRange.equals(TmfTimeRange.NULL_RANGE)) {
-            sendTimeRangeRequest(fTraceStartTime, fTraceStartTime + fWindowSpan);
+            sendTimeRangeRequest(startTime, startTime + duration);
             sendFullRangeRequest(fullRange);
         }
     }
@@ -578,13 +579,11 @@ public class HistogramView extends TmfView {
     private TmfTimeRange updateTraceTimeRange() {
         fTraceStartTime = 0L;
         fTraceEndTime = 0L;
-        fCurrentTimestamp = 0L;
 
         TmfTimeRange timeRange = fTrace.getTimeRange();
         if (!timeRange.equals(TmfTimeRange.NULL_RANGE)) {
             fTraceStartTime = timeRange.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
             fTraceEndTime = timeRange.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
-            fCurrentTimestamp = fTraceStartTime;
         }
         return timeRange;
     }
@@ -598,6 +597,7 @@ public class HistogramView extends TmfView {
         TmfTimeRange timeRange = new TmfTimeRange(startTS, endTS);
 
         fTimeRangeHistogram.clear();
+        fTimeRangeHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
         fTimeRangeHistogram.setTimeRange(startTime, endTime - startTime);
 
         int cacheSize = fTrace.getCacheSize();
This page took 0.027695 seconds and 5 git commands to generate.