Commit | Line | Data |
---|---|---|
87c5447c | 1 | /******************************************************************************* |
abf7b9b0 | 2 | * Copyright (c) 2014, 2015 École Polytechnique de Montréal |
87c5447c GB |
3 | * |
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 | |
8 | * | |
9 | * Contributors: | |
10 | * Geneviève Bastien - Initial API and implementation | |
11 | *******************************************************************************/ | |
12 | ||
2bdf0193 | 13 | package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.xychart; |
87c5447c GB |
14 | |
15 | import org.eclipse.jdt.annotation.Nullable; | |
16 | import org.eclipse.jface.util.IPropertyChangeListener; | |
17 | import org.eclipse.jface.util.PropertyChangeEvent; | |
87c5447c GB |
18 | import org.eclipse.swt.widgets.Composite; |
19 | import org.eclipse.swt.widgets.Display; | |
2bdf0193 AM |
20 | import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.TmfXmlUiStrings; |
21 | import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.XmlViewInfo; | |
22 | import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer; | |
23 | import org.eclipse.tracecompass.tmf.ui.views.TmfChartView; | |
87c5447c GB |
24 | import org.w3c.dom.Element; |
25 | ||
26 | /** | |
27 | * This view displays state system data in an xy chart. It uses an XML | |
28 | * {@link TmfXmlUiStrings#XY_VIEW} element from an XML file. This element | |
29 | * defines which entries from the state system will be shown and also gives | |
30 | * additional information on the presentation of the view. | |
31 | * | |
32 | * @author Geneviève Bastien | |
33 | */ | |
34 | public class XmlXYView extends TmfChartView { | |
35 | ||
36 | /** View ID. */ | |
37 | public static final String ID = "org.eclipse.linuxtools.internal.tmf.analysis.xml.ui.views.xyview"; //$NON-NLS-1$ | |
38 | ||
39 | private final XmlViewInfo fViewInfo = new XmlViewInfo(ID); | |
40 | ||
41 | /** | |
42 | * Default constructor | |
43 | */ | |
44 | public XmlXYView() { | |
45 | super(Messages.XmlXYView_DefaultTitle); | |
46 | ||
47 | this.addPartPropertyListener(new IPropertyChangeListener() { | |
48 | @Override | |
49 | public void propertyChange(@Nullable PropertyChangeEvent event) { | |
50 | if (event == null) { | |
51 | return; | |
52 | } | |
53 | if (event.getProperty().equals(TmfXmlUiStrings.XML_OUTPUT_DATA)) { | |
54 | Object newValue = event.getNewValue(); | |
55 | if (newValue instanceof String) { | |
56 | fViewInfo.setViewData((String) newValue); | |
57 | setViewTitle(); | |
58 | TmfXYChartViewer viewer = getChartViewer(); | |
59 | if (viewer instanceof XmlXYViewer) { | |
60 | ((XmlXYViewer) viewer).viewInfoUpdated(); | |
61 | } | |
62 | ||
63 | } | |
64 | } | |
65 | } | |
66 | ||
67 | }); | |
68 | setViewTitle(); | |
69 | } | |
70 | ||
87c5447c GB |
71 | private void setViewTitle() { |
72 | /* | |
73 | * Get the view element from the XML file. If the element can't be | |
74 | * found, return. | |
75 | */ | |
76 | Element viewElement = fViewInfo.getViewElement(TmfXmlUiStrings.XY_VIEW); | |
77 | if (viewElement == null) { | |
78 | return; | |
79 | } | |
80 | ||
81 | String title = fViewInfo.getViewTitle(viewElement); | |
82 | if (title == null) { | |
83 | title = Messages.XmlXYView_DefaultTitle; | |
84 | } | |
85 | final String viewTitle = title; | |
86 | Display.getDefault().asyncExec(new Runnable() { | |
87 | @Override | |
88 | public void run() { | |
89 | setPartName(viewTitle); | |
90 | } | |
91 | }); | |
92 | } | |
93 | ||
4c5e027b MAL |
94 | @Override |
95 | protected TmfXYChartViewer createChartViewer(@Nullable Composite parent) { | |
96 | return new XmlXYViewer(parent, fViewInfo); | |
97 | } | |
98 | ||
87c5447c | 99 | } |