Adapt HistogramView to trace streaming + extension point export
authorFrancois Chouinard <fchouinard@gmail.com>
Tue, 26 Jul 2011 15:50:20 +0000 (11:50 -0400)
committerFrancois Chouinard <fchouinard@gmail.com>
Tue, 26 Jul 2011 15:51:53 +0000 (11:51 -0400)
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/tracecontrol/actions/CreateNewTrace.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/Histogram.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramDataModel.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramView.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/TimeRangeHistogram.java
org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngExperiment.java
org.eclipse.linuxtools.tmf.ui/build.properties

index 96bedcb2be9030d4ca51a974e739ff27504583f3..250df42873ee52d75b60b3403aa18fe9ac32048f 100644 (file)
@@ -28,8 +28,8 @@ import org.eclipse.linuxtools.lttng.tracecontrol.model.TraceResource.TraceState;
 import org.eclipse.linuxtools.lttng.tracecontrol.model.config.TraceConfig;
 import org.eclipse.linuxtools.lttng.tracecontrol.service.ILttControllerService;
 import org.eclipse.linuxtools.lttng.ui.LTTngUiPlugin;
-import org.eclipse.linuxtools.lttng.ui.tracecontrol.TraceControlConstants;
 import org.eclipse.linuxtools.lttng.ui.tracecontrol.Messages;
+import org.eclipse.linuxtools.lttng.ui.tracecontrol.TraceControlConstants;
 import org.eclipse.linuxtools.lttng.ui.tracecontrol.dialogs.NewTraceDialog;
 import org.eclipse.linuxtools.lttng.ui.tracecontrol.subsystems.TraceSubSystem;
 import org.eclipse.rse.core.events.ISystemRemoteChangeEvents;
@@ -58,8 +58,8 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
     // ------------------------------------------------------------------------
     // Attributes
     // ------------------------------------------------------------------------
-    
-    private List<TargetResource> fSelectedFiles;
+
+    private final List<TargetResource> fSelectedFiles;
 
     // ------------------------------------------------------------------------
     // Constructors
@@ -69,7 +69,7 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
      * Constructor for CreateNewTrace.
      */
     public CreateNewTrace() {
-        fSelectedFiles= new ArrayList<TargetResource>();
+        fSelectedFiles = new ArrayList<TargetResource>();
     }
 
     // ------------------------------------------------------------------------
@@ -78,7 +78,10 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
 
     /*
      * (non-Javadoc)
-     * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
+     * 
+     * @see
+     * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+     * action.IAction, org.eclipse.ui.IWorkbenchPart)
      */
     @Override
     public void setActivePart(IAction action, IWorkbenchPart targetPart) {
@@ -91,22 +94,23 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
      */
     protected TargetResource getFirstSelectedTarget() {
         if (fSelectedFiles.size() > 0) {
-            return (TargetResource) fSelectedFiles.get(0);
+            return fSelectedFiles.get(0);
         }
         return null;
     }
 
     /*
      * (non-Javadoc)
+     * 
      * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
      */
     @Override
     public void run(IAction action) {
         Shell shell = getShell();
         final TargetResource targetResource = getFirstSelectedTarget();
-        TraceSubSystem subSystem = (TraceSubSystem)targetResource.getSubSystem();
+        TraceSubSystem subSystem = (TraceSubSystem) targetResource.getSubSystem();
         NewTraceDialog dialog = new NewTraceDialog(shell, subSystem, targetResource);
-        
+
         final TraceConfig traceConfig = dialog.open();
 
         if (traceConfig == null) {
@@ -120,14 +124,14 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
             trace.setName(traceConfig.getTraceName());
             trace.setParent(targetResource);
             trace.setTraceConfig(traceConfig);
-            
+
             if (targetResource.isUst()) {
                 boolean ok = setupUstLocation(service, targetResource, traceConfig);
                 if (!ok) {
                     return;
                 }
             }
-            
+
             trace.setupTrace();
 
             if (!targetResource.isUst()) {
@@ -135,15 +139,16 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
                 // Enable all channels by default
                 trace.setChannelEnable(TraceControlConstants.Lttng_Control_AllChannels, true);
 
-                // Set overwrite mode for all channels according to user selection (true for flight recorder, false for normal)
+                // Set overwrite mode for all channels according to user
+                // selection (true for flight recorder, false for normal)
                 trace.setChannelOverwrite(TraceControlConstants.Lttng_Control_AllChannels, traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE);
 
                 // Set channel timer for all channels
-                final long period = 5000; 
+                final long period = 1000;
                 trace.setChannelTimer(TraceControlConstants.Lttng_Control_AllChannels, period);
 
                 // Set subbuffer size for all channels
-                final long subbufSize = 16384; 
+                final long subbufSize = 16384;
                 trace.setChannelSubbufSize(TraceControlConstants.Lttng_Control_AllChannels, subbufSize);
 
                 // Set number of subbuffers for all channels
@@ -161,29 +166,28 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
                     }
                 }
             }
-            
+
             if (trace.isUst()) {
                 // in UST the tracing is started after setupTrace!!
                 trace.setTraceState(TraceState.STARTED);
-            }
-            else {
+            } else {
                 trace.setTraceState(TraceState.CONFIGURED);
             }
-            
+
             targetResource.addTrace(trace);
 
             ISystemRegistry registry = SystemStartHere.getSystemRegistry();
             registry.fireRemoteResourceChangeEvent(ISystemRemoteChangeEvents.SYSTEM_REMOTE_RESOURCE_CREATED, trace, targetResource, subSystem, null);
-                
+
         } catch (Exception e) {
             SystemMessageException sysExp;
             if (e instanceof SystemMessageException) {
-                sysExp = (SystemMessageException)e;
+                sysExp = (SystemMessageException) e;
             } else {
-                sysExp = new SystemMessageException(LTTngUiPlugin.getDefault().getMessage(e));    
+                sysExp = new SystemMessageException(LTTngUiPlugin.getDefault().getMessage(e));
             }
-            SystemBasePlugin.logError(Messages.Lttng_Control_ErrorNewTrace + " (" +  //$NON-NLS-1$
-                    Messages.Lttng_Resource_Trace + ": "  + traceConfig.getTraceName() + ")", sysExp); //$NON-NLS-1$ //$NON-NLS-2$
+            SystemBasePlugin.logError(Messages.Lttng_Control_ErrorNewTrace + " (" + //$NON-NLS-1$
+                    Messages.Lttng_Resource_Trace + ": " + traceConfig.getTraceName() + ")", sysExp); //$NON-NLS-1$ //$NON-NLS-2$
 
             return;
         }
@@ -192,7 +196,10 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
 
     /*
      * (non-Javadoc)
-     * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
+     * 
+     * @see
+     * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+     * .IAction, org.eclipse.jface.viewers.ISelection)
      */
     @Override
     @SuppressWarnings("unchecked")
@@ -204,7 +211,7 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
             while (theSet.hasNext()) {
                 Object obj = theSet.next();
                 if (obj instanceof TargetResource) {
-                    fSelectedFiles.add((TargetResource)obj);
+                    fSelectedFiles.add((TargetResource) obj);
                 }
             }
         }
@@ -218,10 +225,12 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
     protected Shell getShell() {
         return SystemBasePlugin.getActiveWorkbenchShell();
     }
-    
+
     /*
      * (non-Javadoc)
-     * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow)
+     * 
+     * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.
+     * IWorkbenchWindow)
      */
     @Override
     public void init(IWorkbenchWindow window) {
@@ -230,6 +239,7 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
 
     /*
      * (non-Javadoc)
+     * 
      * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
      */
     @Override
@@ -238,16 +248,18 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
 
     /*
      * (non-Javadoc)
+     * 
      * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
      */
     @Override
     public void init(IViewPart view) {
     }
-    
+
     /*
      * Setup the trace location for UST.
-     */ 
-    private boolean setupUstLocation(final ILttControllerService service, final TargetResource targetResource, final TraceConfig traceConfig) throws Exception {
+     */
+    private boolean setupUstLocation(final ILttControllerService service, final TargetResource targetResource, final TraceConfig traceConfig)
+            throws Exception {
         if (traceConfig.isNetworkTrace()) {
             File localDir = new File(traceConfig.getTracePath());
             if (!localDir.exists()) {
@@ -263,28 +275,24 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
                 public void run() {
 
                     // Setup trace location using Lttng controller service proxy
-                    service.writeTraceNetwork(targetResource.getParent().getName(),
-                            targetResource.getName(),
-                            traceConfig.getTraceName(), 
-                            traceConfig.getNumChannel(), 
-                            traceConfig.getIsAppend(), 
-                            traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE, 
-                            traceConfig.getMode() == TraceConfig.NORMAL_MODE, 
-                            new ILttControllerService.DoneWriteTraceNetwork() {
-
-                        @Override
-                        public void doneWriteTraceNetwork(IToken token, Exception error, Object str) {
-                            if (error != null) {
-                                // Notify with error
-                                error(error);
-                                return;
-                            }
-
-                            // Notify about success
-                            done(true);
-                        }
-                    });
-                }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
+                    service.writeTraceNetwork(targetResource.getParent().getName(), targetResource.getName(), traceConfig.getTraceName(),
+                            traceConfig.getNumChannel(), traceConfig.getIsAppend(), traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE,
+                            traceConfig.getMode() == TraceConfig.NORMAL_MODE, new ILttControllerService.DoneWriteTraceNetwork() {
+
+                                @Override
+                                public void doneWriteTraceNetwork(IToken token, Exception error, Object str) {
+                                    if (error != null) {
+                                        // Notify with error
+                                        error(error);
+                                        return;
+                                    }
+
+                                    // Notify about success
+                                    done(true);
+                                }
+                            });
+                }
+            }.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
             return ok;
         } else {
             // Create future task
@@ -293,29 +301,25 @@ public class CreateNewTrace implements IObjectActionDelegate, IWorkbenchWindowAc
                 public void run() {
 
                     // Setup trace location using Lttng controller service proxy
-                    service.writeTraceLocal(targetResource.getParent().getName(),
-                            targetResource.getName(),
-                            traceConfig.getTraceName(), 
-                            traceConfig.getTracePath(), 
-                            traceConfig.getNumChannel(),
-                            traceConfig.getIsAppend(), 
-                            traceConfig.getMode() == TraceConfig.NORMAL_MODE, 
-                            traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE, 
+                    service.writeTraceLocal(targetResource.getParent().getName(), targetResource.getName(), traceConfig.getTraceName(),
+                            traceConfig.getTracePath(), traceConfig.getNumChannel(), traceConfig.getIsAppend(),
+                            traceConfig.getMode() == TraceConfig.NORMAL_MODE, traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE,
                             new ILttControllerService.DoneWriteTraceLocal() {
 
-                        @Override
-                        public void doneWriteTraceLocal(IToken token, Exception error, Object str) {
-                            if (error != null) {
-                                // Notify with error
-                                error(error);
-                                return;
-                            }
-
-                            // Notify about success
-                            done(true);
-                        }
-                    });
-                }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
+                                @Override
+                                public void doneWriteTraceLocal(IToken token, Exception error, Object str) {
+                                    if (error != null) {
+                                        // Notify with error
+                                        error(error);
+                                        return;
+                                    }
+
+                                    // Notify about success
+                                    done(true);
+                                }
+                            });
+                }
+            }.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
             return ok;
         }
     }
index fc604583c720e30fa2837303ff54d543afc53459..dfc97a7ecf81526ce2b9fa5d99b652054004774e 100644 (file)
@@ -273,7 +273,7 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
         fDataModel.countEvent(timestamp);
         if (fDataModel.getNbEvents() % REFRESH_FREQUENCY == 0) {
             refresh();
-            refresh();
+            refresh(); // This is intentional. Exercise left to the reader :-)
         }
     }
 
@@ -283,7 +283,7 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
      * @param timestamp
      */
     public void setCurrentEvent(long timestamp) {
-        fCurrentEventTime = timestamp;
+        fCurrentEventTime = (timestamp > 0) ? timestamp : 0;
         fDataModel.setCurrentEvent(timestamp);
         refresh();
     }
@@ -381,16 +381,11 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
                         int canvasHeight = fCanvas.getBounds().height;
                         fDataModel.setCurrentEvent(fCurrentEventTime);
                         fScaledData = fDataModel.scaleTo(canvasWidth, canvasHeight);
-                        // If there's no data, just get out
-                        if (fScaledData.fData[0] == 0)
-                            return;
-                        // Display histogram and update X-,Y-axis labels
                         fCanvas.redraw();
+                        // Display histogram and update X-,Y-axis labels
                         fTimeRangeStartText.setText(HistogramUtils.nanosecondsToString(fDataModel.getStartTime()));
                         fTimeRangeEndText.setText(HistogramUtils.nanosecondsToString(fDataModel.getEndTime()));
-                        if (fDataModel.getStartTime() > 0) {
-                            fMaxNbEventsText.setText(Long.toString(fScaledData.fMaxValue));
-                        }
+                        fMaxNbEventsText.setText(Long.toString(fScaledData.fMaxValue));
                         // The Y-axis area might need to be re-sized
                         fMaxNbEventsText.getParent().layout();
                     }
@@ -536,7 +531,7 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
 
     @Override
     public void mouseHover(MouseEvent event) {
-        if (fDataModel.getNbEvents() > 0 && fScaledData.fLastBucket >= event.x) {
+        if (fDataModel.getNbEvents() > 0 && fScaledData != null && fScaledData.fLastBucket >= event.x) {
             String tooltip = formatToolTipLabel(event.x);
             fCanvas.setToolTipText(tooltip);
         }
@@ -545,7 +540,7 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
     private String formatToolTipLabel(int index) {
         long startTime = fDataModel.getStartTime() + fScaledData.fCurrentBucket * fScaledData.fBucketDuration;
         long endTime = startTime + fScaledData.fBucketDuration;
-        int nbEvents = fScaledData.fData[index];
+        int nbEvents = (index >= 0) ? fScaledData.fData[index] : 0;
 
         StringBuffer buffer = new StringBuffer();
         buffer.append("Range = ["); //$NON-NLS-1$
index 5c70e3d3321f1051f104a159271e9b78de4620d3..266635bafe961d861248411c2cb4859e98042608 100644 (file)
@@ -16,7 +16,6 @@ import java.util.Arrays;
 
 import org.eclipse.linuxtools.lttng.exceptions.EventOutOfSequenceException;
 import org.eclipse.linuxtools.lttng.ui.LTTngUILogger;
-import org.eclipse.linuxtools.lttng.ui.views.histogram.HistogramScaledData;
 
 /**
  * <b><u>HistogramDataModel</u></b>
@@ -50,8 +49,7 @@ import org.eclipse.linuxtools.lttng.ui.views.histogram.HistogramScaledData;
  * TODO: Add filter support for more refined event counting (e.g. by trace,
  * event type, etc.)
  * <p>
- * TODO: Cut-off eccentric values?
- * TODO: Support for going back in time?
+ * TODO: Cut-off eccentric values? TODO: Support for going back in time?
  */
 public class HistogramDataModel {
 
@@ -219,6 +217,7 @@ public class HistogramDataModel {
         HistogramScaledData result = new HistogramScaledData(width, height);
 
         // Scale horizontally
+        result.fMaxValue = 0;
         int bucketsPerBar = fLastBucket / width + 1;
         result.fBucketDuration = bucketsPerBar * fBucketDuration;
         for (int i = 0; i < width; i++) {
index 7375f99a885639b7cb57e289078d05826dd560f8..be2fa6d4715a41b7833ace511c1230f658d75eee 100644 (file)
@@ -36,13 +36,17 @@ public class HistogramRequest extends TmfEventRequest<LttngEvent> {
     // Constructor
     // ------------------------------------------------------------------------
 
-    public HistogramRequest(Histogram histogram, TmfTimeRange range, int nbEvents, ITmfDataRequest.ExecutionType execType) {
-        super(LttngEvent.class, range, nbEvents, LttngConstants.DEFAULT_BLOCK_SIZE, execType);
+    public HistogramRequest(Histogram histogram, TmfTimeRange range, int rank, int nbEvents, ITmfDataRequest.ExecutionType execType) {
+        super(LttngEvent.class, range, rank, nbEvents, LttngConstants.DEFAULT_BLOCK_SIZE, execType);
         fHistogram = histogram;
     }
 
     public HistogramRequest(Histogram histogram, TmfTimeRange range, ITmfDataRequest.ExecutionType execType) {
-        this(histogram, range, ALL_DATA, execType);
+        this(histogram, range, 0, ALL_DATA, execType);
+    }
+
+    public HistogramRequest(Histogram histogram, TmfTimeRange range, int rank, ITmfDataRequest.ExecutionType execType) {
+        this(histogram, range, rank, ALL_DATA, execType);
     }
 
     // ------------------------------------------------------------------------
index 769680b1cd010572701bc1a2a48421881a90db73..4a0d18c27155aa6a849a50f722cad261894a01d0 100644 (file)
@@ -21,12 +21,12 @@ import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
 import org.eclipse.linuxtools.tmf.request.ITmfDataRequest.ExecutionType;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentRangeUpdatedSignal;
 import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
 import org.eclipse.linuxtools.tmf.signal.TmfRangeSynchSignal;
 import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.signal.TmfSignalManager;
 import org.eclipse.linuxtools.tmf.signal.TmfTimeSynchSignal;
-import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.ui.views.TmfView;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
@@ -258,7 +258,7 @@ public class HistogramView extends TmfView {
     public void updateCurrentEventTime(long newTime) {
         if (fCurrentExperiment != null) {
             TmfTimeRange timeRange = new TmfTimeRange(new TmfTimestamp(newTime, TIME_SCALE), TmfTimestamp.BigCrunch);
-            HistogramRequest request = new HistogramRequest(fTimeRangeHistogram, timeRange, 1, ExecutionType.FOREGROUND) {
+            HistogramRequest request = new HistogramRequest(fTimeRangeHistogram, timeRange, 0, 1, ExecutionType.FOREGROUND) {
                 @Override
                 public void handleData(LttngEvent event) {
                     if (event != null) {
@@ -322,21 +322,34 @@ public class HistogramView extends TmfView {
     }
 
     private void loadExperiment() {
-        fExperimentStartTime = fCurrentExperiment.getStartTime().getValue();
-        fExperimentEndTime = fCurrentExperiment.getEndTime().getValue();
-        fCurrentTimestamp = fExperimentStartTime;
         initializeHistograms();
         fParent.redraw();
     }
 
-//    @TmfSignalHandler
-//    @SuppressWarnings("unchecked")
-//    public void experimentUpdated(TmfExperimentUpdatedSignal signal) {
-//        fCurrentExperiment = (TmfExperiment<LttngEvent>) signal.getExperiment();
-//        fFullRangeHistogramCanvas.redraw();
-//        fTimespanHistogramCanvas.redraw();
-//        createCanvasAndRequests();
-//    }
+    @TmfSignalHandler
+    @SuppressWarnings("unchecked")
+    public void experimentRangeUpdated(TmfExperimentRangeUpdatedSignal signal) {
+
+        fCurrentExperiment = (TmfExperiment<LttngEvent>) signal.getExperiment();
+        boolean drawTimeRangeHistogram = fExperimentStartTime == 0;
+        TmfTimeRange fullRange = signal.getRange();
+
+        fExperimentStartTime = fullRange.getStartTime().getValue();
+        fExperimentEndTime = fullRange.getEndTime().getValue();
+
+        fFullTraceHistogram.setFullRange(fExperimentStartTime, fExperimentEndTime);
+        fTimeRangeHistogram.setFullRange(fExperimentStartTime, fExperimentEndTime);
+
+        if (drawTimeRangeHistogram) {
+            fCurrentTimestamp = fExperimentStartTime;
+            fCurrentEventTimeControl.setValue(fCurrentTimestamp);
+            fFullTraceHistogram.setTimeRange(fExperimentStartTime, INITIAL_WINDOW_SPAN);
+            fTimeRangeHistogram.setTimeRange(fExperimentStartTime, INITIAL_WINDOW_SPAN);
+            sendTimeRangeRequest(fExperimentStartTime, fExperimentStartTime + INITIAL_WINDOW_SPAN);
+        }
+
+        sendFullRangeRequest(fullRange);
+    }
 
     @TmfSignalHandler
     public void currentTimeUpdated(TmfTimeSynchSignal signal) {
@@ -376,11 +389,14 @@ public class HistogramView extends TmfView {
     // ------------------------------------------------------------------------
 
     private void initializeHistograms() {
-        updateExperimentTimeRange(fCurrentExperiment);
+        TmfTimeRange fullRange = updateExperimentTimeRange(fCurrentExperiment);
+
+        fTimeRangeHistogram.clear();
         fTimeRangeHistogram.setFullRange(fExperimentStartTime, fExperimentEndTime);
         fTimeRangeHistogram.setTimeRange(fExperimentStartTime, INITIAL_WINDOW_SPAN);
         fTimeRangeHistogram.setCurrentEvent(fExperimentStartTime);
 
+        fFullTraceHistogram.clear();
         fFullTraceHistogram.setFullRange(fExperimentStartTime, fExperimentEndTime);
         fFullTraceHistogram.setTimeRange(fExperimentStartTime, INITIAL_WINDOW_SPAN);
         fFullTraceHistogram.setCurrentEvent(fExperimentStartTime);
@@ -393,7 +409,21 @@ public class HistogramView extends TmfView {
         fTimeSpanControl.setValue(fWindowSpan);
 
         sendTimeRangeRequest(fExperimentStartTime, fExperimentStartTime + fWindowSpan);
-        sendFullRangeRequest();
+        sendFullRangeRequest(fullRange);
+    }
+
+    private TmfTimeRange updateExperimentTimeRange(TmfExperiment<LttngEvent> experiment) {
+        fExperimentStartTime = 0;
+        fExperimentEndTime = 0;
+        fCurrentTimestamp = 0;
+
+        TmfTimeRange timeRange = fCurrentExperiment.getTimeRange();
+        if (timeRange != TmfTimeRange.Null) {
+            fExperimentStartTime = timeRange.getStartTime().getValue();
+            fExperimentEndTime = timeRange.getEndTime().getValue();
+            fCurrentTimestamp = fExperimentStartTime;
+        }
+        return timeRange;
     }
 
     private void sendTimeRangeRequest(long startTime, long endTime) {
@@ -410,31 +440,13 @@ public class HistogramView extends TmfView {
         fCurrentExperiment.sendRequest(fTimeRangeRequest);
     }
 
-    private void sendFullRangeRequest() {
+    private void sendFullRangeRequest(TmfTimeRange fullRange) {
         if (fFullTraceRequest != null && !fFullTraceRequest.isCompleted()) {
             fFullTraceRequest.cancel();
         }
-        fFullTraceHistogram.clear();
-        TmfTimeRange timeRange = updateExperimentTimeRange(fCurrentExperiment);
-        fFullTraceRequest = new HistogramRequest(fFullTraceHistogram, timeRange, ExecutionType.BACKGROUND);
+        fFullTraceRequest = new HistogramRequest(fFullTraceHistogram, fullRange, (int) fFullTraceHistogram.fDataModel.getNbEvents(),
+                ExecutionType.BACKGROUND);
         fCurrentExperiment.sendRequest(fFullTraceRequest);
     }
 
-    private TmfTimeRange updateExperimentTimeRange(TmfExperiment<LttngEvent> experiment) {
-        TmfTimestamp startTime = TmfTimestamp.BigCrunch;
-        TmfTimestamp endTime = TmfTimestamp.BigBang;
-        for (ITmfTrace trace : experiment.getTraces()) {
-            TmfTimestamp traceStartTime = trace.getStartTime();
-            if (traceStartTime.compareTo(startTime, true) < 0)
-                startTime = traceStartTime;
-            TmfTimestamp traceEndTime = trace.getEndTime();
-            if (traceEndTime.compareTo(endTime, true) > 0)
-                endTime = traceEndTime;
-        }
-        fExperimentStartTime = startTime.getValue();
-        fExperimentEndTime = endTime.getValue();
-
-        return new TmfTimeRange(startTime, endTime);
-    }
-
 }
index 265e269bed64d058bd2f55e5d7c60d47147ec2ed..1ed5f7ef5b7ffc91f13d95ff5030108cd4881415 100644 (file)
@@ -61,7 +61,8 @@ public class TimeRangeHistogram extends Histogram {
     }
 
     public void setFullRange(long startTime, long endTime) {
-        fZoom.setFullRange(startTime, endTime);
+        long currentFirstEvent = getStartTime();
+        fZoom.setFullRange((currentFirstEvent == 0) ? startTime : currentFirstEvent, endTime);
     }
 
 }
index 124139a67bf8c832ecbe004071e82d848538492c..ac5fe82418fd56bfb537d4f568d885b2064de2bb 100644 (file)
@@ -233,7 +233,7 @@ public class LTTngExperiment<T extends TmfEvent> extends TmfExperiment<T> implem
                                     LTTngTrace lttngTrace = (LTTngTrace) trace;
                                     JniTrace jniTrace = lttngTrace.getCurrentJniTrace();
                                     jniTrace.updateTrace();
-                                    startTime = Math.min(startTime, jniTrace.getStartTime().getTime());
+                                    startTime = Math.min(startTime, lttngTrace.getStartTime().getValue());
                                     endTime = Math.max(endTime, jniTrace.getEndTime().getTime());
                                 }
                             }
@@ -250,12 +250,12 @@ public class LTTngExperiment<T extends TmfEvent> extends TmfExperiment<T> implem
                     try {
                         sendRequest((ITmfDataRequest<T>) request);
                         request.waitForCompletion();
-                        if (timeRange != null) {
+                        if (timeRange != null && timeRange != TmfTimeRange.Null) {
                             TmfExperimentRangeUpdatedSignal signal = new TmfExperimentRangeUpdatedSignal(LTTngExperiment.this, LTTngExperiment.this,
                                     timeRange);
                             broadcast(signal);
                         }
-                        Thread.sleep(5000);
+                        Thread.sleep(2000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
index e77da8dab3c8a56e7c855e322bdbf777b66038e2..4e8b0f6418f0a64feb3a0d2f6e9f1c2cab47ea5b 100644 (file)
@@ -5,4 +5,5 @@ bin.includes = META-INF/,\
                icons/,\
                about.html,\
                plugin.properties,\
-               plugin.xml
+               plugin.xml,\
+               schema/
This page took 0.057948 seconds and 5 git commands to generate.