From d9789e33813472cb628ba91587eb6cfd1f3d3b90 Mon Sep 17 00:00:00 2001 From: Matthew Khouzam Date: Tue, 13 Oct 2015 21:56:39 -0400 Subject: [PATCH] lttng: Add time alignment work to scatter chart Removes adjustRange() on the X-axis because it can change the desired range when no data point exists at the range bounds. Changes TmfCommonXLineChartViewer to use X-axis range for time alignment instead of first and last data points. Change-Id: Ia15eff9a258da0b20d0204c25f003768adc6b5e0 Signed-off-by: Bernd Hufmann Signed-off-by: Matthew Khouzam Signed-off-by: Patrick Tasse Signed-off-by: Marc-Andre Laperle Reviewed-on: https://git.eclipse.org/r/57011 Reviewed-by: Hudson CI --- .../linux/ui/views/cpuusage/CpuUsageView.java | 1 - .../latency/LatencyScatterGraphViewer.java | 15 ++++---- .../ui/views/latency/LatencyScatterView.java | 35 +++++-------------- .../xycharts/TmfMouseDragProvider.java | 5 --- .../ui/viewers/xycharts/TmfXYChartViewer.java | 30 +++------------- .../linecharts/TmfCommonXLineChartViewer.java | 1 - .../tmf/ui/views/TmfChartView.java | 2 -- .../tmf/ui/views/histogram/HistogramView.java | 1 - 8 files changed, 21 insertions(+), 69 deletions(-) diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/analysis/os/linux/ui/views/cpuusage/CpuUsageView.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/analysis/os/linux/ui/views/cpuusage/CpuUsageView.java index a2b899a0f9..ac6ac32709 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/analysis/os/linux/ui/views/cpuusage/CpuUsageView.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/analysis/os/linux/ui/views/cpuusage/CpuUsageView.java @@ -187,7 +187,6 @@ public class CpuUsageView extends TmfView implements ITmfTimeAligned { if (pointAreaWidth <= 0) { pointAreaWidth = fSashForm.getBounds().width - curTimeAxisOffset; } - // TODO this is just an approximation that assumes that the end will be at the same position but that can change for a different data range/scaling int endOffset = curTimeAxisOffset + pointAreaWidth; GridLayout layout = (GridLayout) fXYViewerContainer.getLayout(); int endOffsetWithoutMargin = endOffset + layout.marginRight; diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterGraphViewer.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterGraphViewer.java index 12477b20c5..e7819c8117 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterGraphViewer.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterGraphViewer.java @@ -274,12 +274,14 @@ public class LatencyScatterGraphViewer extends TmfCommonXLineChartViewer { long currentStart = getTimeInNanos(currentRange.getStartTime()); long currentEnd = getTimeInNanos(currentRange.getEndTime()); if (dataInput == null) { - Display.getDefault().syncExec(new Runnable() { - @Override - public void run() { - clearContent(); - } - }); + if (!getDisplay().isDisposed()) { + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + clearContent(); + } + }); + } fDisplayData = NonNullUtils.checkNotNull(Collections.EMPTY_LIST); } else { Collection elements = (Collection) dataInput.getIntersectingElements(currentStart, currentEnd); @@ -348,7 +350,6 @@ public class LatencyScatterGraphViewer extends TmfCommonXLineChartViewer { IAxisTick xTick = xAxis.getTick(); xTick.setFormat(tmfChartTimeStampFormat); xAxis.setRange(new Range(0.0, end - start)); - xAxis.adjustRange(); if (maxY > 0.0) { swtChart.getAxisSet().getYAxis(0).setRange(new Range(0.0, maxY)); } diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterView.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterView.java index 0fff37e3f0..e1c23836fe 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterView.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/LatencyScatterView.java @@ -8,20 +8,21 @@ ********************************************************************************/ package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency; + import static org.eclipse.tracecompass.common.core.NonNullUtils.nullToEmptyString; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.widgets.Composite; -import org.eclipse.tracecompass.tmf.ui.views.TmfView; +import org.eclipse.tracecompass.common.core.NonNullUtils; +import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer; +import org.eclipse.tracecompass.tmf.ui.views.TmfChartView; /** * Some stuff * * @author Matthew Khouzam */ -public class LatencyScatterView extends TmfView { +public class LatencyScatterView extends TmfChartView { // Attributes // ------------------------------------------------------------------------ @@ -46,28 +47,10 @@ public class LatencyScatterView extends TmfView { // ------------------------------------------------------------------------ @Override - public void createPartControl(@Nullable Composite parent) { - SashForm sf = new SashForm(parent, SWT.NONE); - fScatterViewer = new LatencyScatterGraphViewer(sf, nullToEmptyString(Messages.LatencyScatterView_title), nullToEmptyString(Messages.LatencyScatterView_xAxis), nullToEmptyString(Messages.LatencyScatterView_yAxis)); - } - - // ------------------------------------------------------------------------ - // Operations - // ------------------------------------------------------------------------ - - @Override - public void setFocus() { - if (fScatterViewer != null) { - fScatterViewer.getControl().setFocus(); - } - } - - @Override - public void dispose() { - super.dispose(); - if (fScatterViewer != null) { - fScatterViewer.dispose(); - } + protected TmfXYChartViewer createChartViewer(@Nullable Composite parent) { + fScatterViewer = new LatencyScatterGraphViewer(NonNullUtils.checkNotNull(parent), nullToEmptyString(Messages.LatencyScatterView_title), nullToEmptyString(Messages.LatencyScatterView_xAxis), + nullToEmptyString(Messages.LatencyScatterView_yAxis)); + return fScatterViewer; } } diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java index 996657c3f9..ca624fbe44 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfMouseDragProvider.java @@ -91,11 +91,6 @@ public class TmfMouseDragProvider extends TmfBaseProvider implements MouseListen @Override public void mouseUp(MouseEvent e) { if ((fIsUpdate) && (fStartTime != fEndTime)) { - // Adjust range to the full range here so that it shows - // the original range (important for time alignment) - IAxis xAxis = getChart().getAxisSet().getXAxis(0); - xAxis.adjustRange(); - ITmfChartTimeProvider viewer = getChartViewer(); viewer.updateWindow(fStartTime, fEndTime); } diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java index f658ee7ed1..ee224645e5 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/TmfXYChartViewer.java @@ -393,20 +393,9 @@ public abstract class TmfXYChartViewer extends TmfTimeViewer implements ITmfChar int pixelCoordinate = 0; IAxis[] xAxes = getSwtChart().getAxisSet().getXAxes(); - ISeries[] series = fSwtChart.getSeriesSet().getSeries(); - if ((xAxes.length > 0) && (series.length > 0) && - (series[0].getXSeries() != null) && (series[0].getXSeries().length > 0)) { + if (xAxes.length > 0) { IAxis axis = xAxes[0]; - // All series have the same X series - double[] xSeries = series[0].getXSeries(); - double minX = Double.MAX_VALUE; - for (double x : xSeries) { - if (minX > x) { - minX = x; - } - } - - pixelCoordinate = axis.getPixelCoordinate(minX); + pixelCoordinate = axis.getPixelCoordinate(axis.getRange().lower); } return getSwtChart().toControl(getSwtChart().getPlotArea().toDisplay(pixelCoordinate, 0)).x; } @@ -424,21 +413,10 @@ public abstract class TmfXYChartViewer extends TmfTimeViewer implements ITmfChar */ public int getPointAreaWidth() { IAxis[] xAxes = getSwtChart().getAxisSet().getXAxes(); - ISeries[] series = fSwtChart.getSeriesSet().getSeries(); - if ((xAxes.length > 0) && (series.length > 0) && - (series[0].getXSeries() != null) && (series[0].getXSeries().length > 0)) { + if (xAxes.length > 0) { IAxis axis = xAxes[0]; - // All series have the same X series - double[] xSeries = series[0].getXSeries(); - double maxX = Double.MIN_VALUE; - for (double x : xSeries) { - if (maxX < x) { - maxX = x; - } - } - int x1 = getPointAreaOffset(); - int x2 = axis.getPixelCoordinate(maxX); + int x2 = axis.getPixelCoordinate(axis.getRange().upper); x2 = getSwtChart().toControl(getSwtChart().getPlotArea().toDisplay(x2, 0)).x; int width = x2 - x1; return width; diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartViewer.java index f2cd217129..ee5a1c0e70 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartViewer.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartViewer.java @@ -363,7 +363,6 @@ public abstract class TmfCommonXLineChartViewer extends TmfXYChartViewer { int lastX = xValues.length - 1; double end = (start == xValues[lastX]) ? start + 1 : xValues[lastX]; getSwtChart().getAxisSet().getXAxis(0).setRange(new Range(start, end)); - getSwtChart().getAxisSet().getXAxis(0).adjustRange(); if (maxy > miny) { getSwtChart().getAxisSet().getYAxis(0).setRange(new Range(miny, maxy)); } diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java index 97c561a91e..21c48829b9 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/TmfChartView.java @@ -208,8 +208,6 @@ public abstract class TmfChartView extends TmfView implements ITmfTimeAligned { if (pointAreaWidth <= 0) { pointAreaWidth = fSashForm.getBounds().width - curTimeAxisOffset; } - - // TODO this is just an approximation that assumes that the end will be at the same position but that can change for a different data range/scaling int endOffset = curTimeAxisOffset + pointAreaWidth; GridLayout layout = (GridLayout) fXYViewerContainer.getLayout(); int endOffsetWithoutMargin = endOffset + layout.marginRight; diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/histogram/HistogramView.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/histogram/HistogramView.java index 0d9e9d402d..84922b4c63 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/histogram/HistogramView.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/histogram/HistogramView.java @@ -423,7 +423,6 @@ public class HistogramView extends TmfView implements ITmfTimeAligned { if (pointAreaWidth <= 0) { pointAreaWidth = fSashForm.getBounds().width - curTimeAxisOffset; } - // TODO this is just an approximation that assumes that the end will be at the same position but that can change for a different data range/scaling int endOffset = curTimeAxisOffset + pointAreaWidth; GridLayout layout = (GridLayout) fTimeRangeComposite.getLayout(); int endOffsetWithoutMargin = endOffset + layout.marginRight; -- 2.34.1