1 /*******************************************************************************
2 * Copyright (c) 2014, 2015 École Polytechnique de Montréal
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Geneviève Bastien - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.internal
.tmf
.analysis
.xml
.ui
.views
.xychart
;
15 import org
.eclipse
.jdt
.annotation
.Nullable
;
16 import org
.eclipse
.jface
.util
.IPropertyChangeListener
;
17 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.swt
.widgets
.Display
;
20 import org
.eclipse
.tracecompass
.common
.core
.NonNullUtils
;
21 import org
.eclipse
.tracecompass
.internal
.tmf
.analysis
.xml
.ui
.TmfXmlUiStrings
;
22 import org
.eclipse
.tracecompass
.internal
.tmf
.analysis
.xml
.ui
.views
.XmlViewInfo
;
23 import org
.eclipse
.tracecompass
.tmf
.ui
.viewers
.xycharts
.TmfXYChartViewer
;
24 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.TmfChartView
;
25 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.TmfViewFactory
;
26 import org
.w3c
.dom
.Element
;
29 * This view displays state system data in an xy chart. It uses an XML
30 * {@link TmfXmlUiStrings#XY_VIEW} element from an XML file. This element
31 * defines which entries from the state system will be shown and also gives
32 * additional information on the presentation of the view.
34 * @author Geneviève Bastien
36 public class XmlXYView
extends TmfChartView
{
39 public static final String ID
= "org.eclipse.linuxtools.internal.tmf.analysis.xml.ui.views.xyview"; //$NON-NLS-1$
41 private final XmlViewInfo fViewInfo
= new XmlViewInfo(ID
);
47 super(Messages
.XmlXYView_DefaultTitle
);
49 this.addPartPropertyListener(new IPropertyChangeListener() {
51 public void propertyChange(@Nullable PropertyChangeEvent event
) {
55 if (event
.getProperty().equals(TmfXmlUiStrings
.XML_OUTPUT_DATA
)) {
56 Object newValue
= event
.getNewValue();
57 if (newValue
instanceof String
) {
58 fViewInfo
.setViewData((String
) newValue
);
60 TmfXYChartViewer viewer
= getChartViewer();
61 if (viewer
instanceof XmlXYViewer
) {
62 ((XmlXYViewer
) viewer
).viewInfoUpdated();
72 private void setViewTitle() {
74 * Get the view element from the XML file. If the element can't be
77 Element viewElement
= fViewInfo
.getViewElement(TmfXmlUiStrings
.XY_VIEW
);
78 if (viewElement
== null) {
82 String title
= fViewInfo
.getViewTitle(viewElement
);
84 title
= Messages
.XmlXYView_DefaultTitle
;
86 final String viewTitle
= title
;
87 Display
.getDefault().asyncExec(new Runnable() {
90 setPartName(viewTitle
);
96 public void createPartControl(@Nullable Composite parent
) {
97 super.createPartControl(parent
);
98 fViewInfo
.setName(NonNullUtils
.checkNotNull(TmfViewFactory
.getBaseSecId(getViewSite().getSecondaryId())));
103 protected TmfXYChartViewer
createChartViewer(@Nullable Composite parent
) {
104 return new XmlXYViewer(parent
, fViewInfo
);