xml.ui: Enable multiple XML latency views instances
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.analysis.xml.ui / src / org / eclipse / tracecompass / internal / tmf / analysis / xml / ui / views / latency / PatternLatencyTableView.java
1 /*******************************************************************************
2 * Copyright (c) 2016 Ericsson
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 package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency;
10
11 import org.eclipse.jdt.annotation.NonNull;
12 import org.eclipse.jdt.annotation.Nullable;
13 import org.eclipse.jface.util.IPropertyChangeListener;
14 import org.eclipse.jface.util.PropertyChangeEvent;
15 import org.eclipse.jface.viewers.TableViewer;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Display;
18 import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.AbstractSegmentStoreTableView;
19 import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.AbstractSegmentStoreTableViewer;
20 import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.TmfXmlUiStrings;
21 import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.XmlLatencyViewInfo;
22
23 /**
24 * The latency table view for pattern analysis
25 *
26 * @author Jean-Christian Kouame
27 */
28 public class PatternLatencyTableView extends AbstractSegmentStoreTableView {
29
30 /** The view's ID */
31 public static final @NonNull String ID = "org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latencytable"; //$NON-NLS-1$
32
33 private final XmlLatencyViewInfo fViewInfo = new XmlLatencyViewInfo(ID);
34
35 private PatternLatencyTableViewer fViewer;
36
37 /**
38 * Constructor
39 */
40 public PatternLatencyTableView() {
41 this.addPartPropertyListener(new IPropertyChangeListener() {
42 @Override
43 public void propertyChange(PropertyChangeEvent event) {
44 if (event.getProperty().equals(TmfXmlUiStrings.XML_LATENCY_OUTPUT_DATA)) {
45 Object newValue = event.getNewValue();
46 if (newValue instanceof String) {
47 String data = (String) newValue;
48 fViewInfo.setViewData(data);
49 setPartName(fViewInfo.getLabel());
50 loadLatencyView();
51 }
52 }
53 }
54 });
55 }
56
57 @Override
58 public void createPartControl(@Nullable Composite parent) {
59 String name = getViewSite().getSecondaryId();
60 if (name != null) {
61 /* must initialize view info before calling super */
62 fViewInfo.setName(name);
63 }
64 super.createPartControl(parent);
65 Display.getDefault().asyncExec(new Runnable() {
66 @Override
67 public void run() {
68 setPartName(fViewInfo.getLabel());
69 }
70 });
71 }
72
73 private void loadLatencyView() {
74 if (fViewer != null) {
75 fViewer.updateViewer(fViewInfo.getViewAnalysisId());
76 }
77 }
78
79 @Override
80 protected @NonNull AbstractSegmentStoreTableViewer createSegmentStoreViewer(@NonNull TableViewer tableViewer) {
81 PatternLatencyTableViewer viewer = new PatternLatencyTableViewer(tableViewer);
82 fViewer = viewer;
83 loadLatencyView();
84 return viewer;
85 }
86
87 }
This page took 0.031229 seconds and 5 git commands to generate.