xmlxychart.view.name = XML XY Chart View
latency.view.name = Latency Table
+latency.scatter.view.name = Latency vs Time
name="%latency.view.name"
restorable="true">
</view>
+ <view
+ allowMultiple="false"
+ category="org.eclipse.linuxtools.tmf.ui.views.category"
+ class="org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternScatterGraphView"
+ icon="icons/eview16/scatter.png"
+ id="org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.scattergraph"
+ name="%latency.scatter.view.name"
+ restorable="true">
+ </view>
</extension>
</plugin>
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
# http://www.eclipse.org/legal/epl-v10.html
###############################################################################
TmfXmlAnalysisOutputSource_LatencyTable=Latency Table
+TmfXmlAnalysisOutputSource_ScatterGraphTitle=Latency vs Time
--- /dev/null
+/*******************************************************************************
+ * 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() {
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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;
+ }
+}
--- /dev/null
+/*******************************************************************************
+ * 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();
+ }
+ }
+}
--- /dev/null
+###############################################################################
+# 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
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;
/**
* 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;
}
}
- //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());