From: Jean-Christian Kouame Date: Fri, 4 Mar 2016 21:56:48 +0000 (-0500) Subject: tmf : Add latency scatter graph view for the pattern analysis X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=c8e5d00eb7c1a570b32140b61773ca050b373798;hp=38fad53e172c1e16b0513ec2916ce4bbdcdd8a13;p=deliverable%2Ftracecompass.git tmf : Add latency scatter graph view for the pattern analysis Change-Id: I44ccdf56c3b769e2f0d74dc26e7fe2f1eab568ea Signed-off-by: Jean-Christian Kouame Reviewed-on: https://git.eclipse.org/r/67839 Reviewed-by: Genevieve Bastien Tested-by: Genevieve Bastien Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam --- diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/icons/eview16/scatter.png b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/icons/eview16/scatter.png new file mode 100644 index 0000000000..c375602f57 Binary files /dev/null and b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/icons/eview16/scatter.png differ diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties index ee3996282b..16782e0faa 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties @@ -22,3 +22,4 @@ xmltimegraph.view.name = XML Time Graph View xmlxychart.view.name = XML XY Chart View latency.view.name = Latency Table +latency.scatter.view.name = Latency vs Time diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml index 2db9e18303..19a07b1a1a 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml @@ -87,5 +87,14 @@ name="%latency.view.name" restorable="true"> + + diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java index 732ab3120d..635308645d 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java @@ -19,6 +19,8 @@ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.module.messages"; //$NON-NLS-1$ /** Latency table */ public static String TmfXmlAnalysisOutputSource_LatencyTable; + /** Scatter graph title */ + public static String TmfXmlAnalysisOutputSource_ScatterGraphTitle; static { // initialize resource bundle diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties index cd026f47e3..87eb0be601 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties @@ -7,3 +7,4 @@ # http://www.eclipse.org/legal/epl-v10.html ############################################################################### TmfXmlAnalysisOutputSource_LatencyTable=Latency Table +TmfXmlAnalysisOutputSource_ScatterGraphTitle=Latency vs Time diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/Messages.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/Messages.java new file mode 100644 index 0000000000..75a6dcdad0 --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/Messages.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency; + +import org.eclipse.osgi.util.NLS; + +/** + * Message for XML analysis latency views + * + * @author Jean-Christian Kouame + */ +public class Messages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.messages"; //$NON-NLS-1$ + /** + * Scatter graph title + */ + public static String PatternLatencyViews_ScatterGraphTitle; + /** + * Scatter graph X label + */ + public static String PatternLatencyViews_ScatterGraphXLabel; + /** + * Scatter graph Y label + */ + public static String PatternLatencyViews_ScatterGraphYLabel; + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternScatterGraphView.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternScatterGraphView.java new file mode 100644 index 0000000000..413f057b63 --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternScatterGraphView.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency; + +import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.TmfXmlUiStrings; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.XmlLatencyViewInfo; +import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer; +import org.eclipse.tracecompass.tmf.ui.views.TmfChartView; + +/** + * The scatter graph view for pattern latency + * + * @author Jean-Christian Kouame + */ +public class PatternScatterGraphView extends TmfChartView { + + /** The view's ID */ + public static final @NonNull String ID = "org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.scattergraph"; //$NON-NLS-1$ + + private final XmlLatencyViewInfo fViewInfo = new XmlLatencyViewInfo(ID); + + private PatternScatterGraphViewer fViewer; + + /** + * Constructor + */ + public PatternScatterGraphView() { + super(ID); + this.addPartPropertyListener(new IPropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(TmfXmlUiStrings.XML_LATENCY_OUTPUT_DATA)) { + Object newValue = event.getNewValue(); + if (newValue instanceof String) { + String data = (String) newValue; + fViewInfo.setViewData(data); + loadLatencyView(); + } + } + } + }); + } + + private void loadLatencyView() { + if (fViewer != null) { + fViewer.updateViewer(fViewInfo.getViewAnalysisId()); + } + } + + @Override + protected TmfXYChartViewer createChartViewer(Composite parent) { + PatternScatterGraphViewer viewer = new PatternScatterGraphViewer(checkNotNull(parent), checkNotNull(Messages.PatternLatencyViews_ScatterGraphTitle), checkNotNull(Messages.PatternLatencyViews_ScatterGraphXLabel), checkNotNull(Messages.PatternLatencyViews_ScatterGraphYLabel)); + fViewer = viewer; + loadLatencyView(); + return viewer; + } +} diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternScatterGraphViewer.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternScatterGraphViewer.java new file mode 100644 index 0000000000..087a2675d2 --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternScatterGraphViewer.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter.AbstractSegmentStoreScatterGraphViewer; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider.XmlPatternAnalysis; +import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; +import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils; + +/** + * Displays the latency analysis data in a scatter graph + * + * @author Jean-Christian Kouame + */ +public class PatternScatterGraphViewer extends AbstractSegmentStoreScatterGraphViewer { + + private String fAnalysisId; + + /** + * Constructor + * + * @param parent + * The parent composite + * @param title + * The view title + * @param xLabel + * The x axis label + * @param yLabel + * The y axis label + */ + public PatternScatterGraphViewer(@NonNull Composite parent, @NonNull String title, @NonNull String xLabel, @NonNull String yLabel) { + super(parent, title, xLabel, yLabel); + } + + @Override + protected @Nullable ISegmentStoreProvider getSegmentStoreProvider(@NonNull ITmfTrace trace) { + return fAnalysisId != null ? TmfTraceUtils.getAnalysisModuleOfClass(trace, XmlPatternAnalysis.class, fAnalysisId) : null; + } + + /** + * Set the analysis ID and update the view + * + * @param analysisId + * The analysis ID + */ + public void updateViewer(String analysisId) { + if (analysisId != null) { + fAnalysisId = analysisId; + initializeDataSource(); + } + } +} diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/messages.properties b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/messages.properties new file mode 100644 index 0000000000..45e5619723 --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/messages.properties @@ -0,0 +1,11 @@ +############################################################################### +# Copyright (c) 2016 Ericsson +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +############################################################################### +PatternLatencyViews_ScatterGraphTitle=Duration vs Time +PatternLatencyViews_ScatterGraphXLabel=Time +PatternLatencyViews_ScatterGraphYLabel=Duration diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java index d6a88f7672..5f38a07aaa 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java @@ -27,6 +27,7 @@ import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.Activator; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.TmfXmlUiStrings; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.module.Messages; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternLatencyTableView; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternScatterGraphView; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.xychart.XmlXYView; import org.eclipse.tracecompass.tmf.analysis.xml.core.module.XmlUtils; import org.eclipse.tracecompass.tmf.analysis.xml.core.stateprovider.TmfXmlStrings; @@ -98,7 +99,12 @@ public class TmfXmlAnalysisOutputSource implements ITmfNewAnalysisModuleListener /** * Latency Table View type */ - LATENCY_TABLE(PatternLatencyTableView.ID, Messages.TmfXmlAnalysisOutputSource_LatencyTable); + LATENCY_TABLE(PatternLatencyTableView.ID, Messages.TmfXmlAnalysisOutputSource_LatencyTable), + + /** + * Latency Scatter View type + */ + SCATTER_GRAPH(PatternScatterGraphView.ID, Messages.TmfXmlAnalysisOutputSource_ScatterGraphTitle); private @NonNull String fLatencyViewId; private String fLatencyViewLabel; @@ -169,7 +175,7 @@ public class TmfXmlAnalysisOutputSource implements ITmfNewAnalysisModuleListener } } - //Add the latency views for pattern analysis + // Add the latency views for pattern analysis if (module instanceof XmlPatternAnalysis) { for (LatencyViewType viewType : LatencyViewType.values()) { IAnalysisOutput output = new TmfXmlLatencyViewOutput(viewType.getViewId(), viewType.getLabel());