* A histogram widget that displays the event distribution of a whole trace.
* <p>
* It also features a selected range window that can be dragged and zoomed.
- *
- * @version 1.0
+ *
+ * @version 1.1
* @author Francois Chouinard
*/
public class FullTraceHistogram extends Histogram implements MouseMoveListener {
private final HistogramZoom fZoom;
- private long fRangeStartTime;
+ private long fRangeStartTime = 0L;
private long fRangeDuration;
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
/**
- * Standard Constructor.
- *
- * @param view A reference to the parent histogram view
+ * Full Constructor
+ *
+ * @param view A reference to the parent histogram view
* @param parent A reference to the parent composite
*/
public FullTraceHistogram(HistogramView view, Composite parent) {
// ------------------------------------------------------------------------
/**
- * Sets the time range of the full histogram.
- *
+ * Sets the time range of the full histogram.
+ *
* @param startTime A start time
* @param endTime A end time
*/
/**
* Sets the selected time range.
- *
- * @param startTime A start time
- * @param duration A window duration
+ *
+ * @param startTime The histogram start time
+ * @param duration The histogram duration
*/
public void setTimeRange(long startTime, long duration) {
fRangeStartTime = startTime;
fDataModel.complete();
}
+ /* (non-Javadoc)
+ * @see org.eclipse.linuxtools.tmf.ui.views.histogram.Histogram#updateTimeRange(long, long)
+ */
@Override
public void updateTimeRange(long startTime, long endTime) {
((HistogramView) fParentView).updateTimeRange(startTime, endTime);
fMouseDown = true;
fStartPosition = event.x;
}
-
+
@Override
public void mouseUp(MouseEvent event) {
if (fMouseDown) {
super.mouseDown(event);
return;
}
-
- ((HistogramView) fParentView).updateTimeRange(fRangeStartTime, fRangeStartTime + fZoom.getDuration());
+
+ ((HistogramView) fParentView).updateTimeRange(fRangeStartTime, fRangeStartTime + fRangeDuration);
}
}
-
-
+
+
// ------------------------------------------------------------------------
// MouseMoveListener
// ------------------------------------------------------------------------
GC rangeWindowGC = new GC(rangeRectangleImage);
if ((fScaledData != null) && (fRangeStartTime != 0)) {
- drawTimeRangeWindow(rangeWindowGC, rangeRectangleImage);
+ drawTimeRangeWindow(rangeWindowGC);
}
// Draws the buffer image onto the canvas.
rangeRectangleImage.dispose();
}
- private void drawTimeRangeWindow(GC imageGC, Image image) {
+ private void drawTimeRangeWindow(GC imageGC) {
// Map times to histogram coordinates
- long bucketSpan = Math.max(fScaledData.fBucketDuration,1);
+ long bucketSpan = Math.max(fScaledData.fBucketDuration, 1);
int rangeWidth = (int) (fRangeDuration / bucketSpan);
int left = (int) ((fRangeStartTime - fDataModel.getFirstBucketTime()) / bucketSpan);
int right = left + rangeWidth;
int center = (left + right) / 2;
- int height = fCanvas.getSize().y - 2;
+ int height = fCanvas.getSize().y;
// Draw the selection window
imageGC.setForeground(fTimeRangeColor);