analysis: Update CpuUsageView to use new TmfChartView API
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.os.linux.ui / src / org / eclipse / tracecompass / analysis / os / linux / ui / views / cpuusage / CpuUsageView.java
1 /*******************************************************************************
2 * Copyright (c) 2014, 2016 École Polytechnique de Montréal and others
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
13 package org.eclipse.tracecompass.analysis.os.linux.ui.views.cpuusage;
14
15 import org.eclipse.jdt.annotation.Nullable;
16 import org.eclipse.jface.viewers.ISelection;
17 import org.eclipse.jface.viewers.ISelectionChangedListener;
18 import org.eclipse.jface.viewers.IStructuredSelection;
19 import org.eclipse.jface.viewers.SelectionChangedEvent;
20 import org.eclipse.swt.events.ControlAdapter;
21 import org.eclipse.swt.events.ControlEvent;
22 import org.eclipse.swt.widgets.Composite;
23 import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
24 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
25 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
26 import org.eclipse.tracecompass.tmf.ui.viewers.TmfViewer;
27 import org.eclipse.tracecompass.tmf.ui.viewers.xycharts.TmfXYChartViewer;
28 import org.eclipse.tracecompass.tmf.ui.views.TmfChartView;
29
30 /**
31 * CPU usage view. It contains 2 viewers: one tree viewer showing all the
32 * threads who were on the CPU in the time range, and one XY chart viewer
33 * plotting the total time spent on CPU and the time of the threads selected in
34 * the tree viewer.
35 *
36 * @author Geneviève Bastien
37 */
38 public class CpuUsageView extends TmfChartView {
39
40 /** ID string */
41 public static final String ID = "org.eclipse.tracecompass.analysis.os.linux.views.cpuusage"; //$NON-NLS-1$
42
43 private @Nullable CpuUsageComposite fTreeViewer = null;
44 private @Nullable CpuUsageXYViewer fXYViewer = null;
45
46 /**
47 * Constructor
48 */
49 public CpuUsageView() {
50 super(Messages.CpuUsageView_Title);
51 }
52
53 @Override
54 public void createPartControl(Composite parent) {
55 super.createPartControl(parent);
56
57 /* Initialize the viewers with the currently selected trace */
58 ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
59 if (trace != null) {
60 TmfTraceSelectedSignal signal = new TmfTraceSelectedSignal(this, trace);
61 if (fTreeViewer != null) {
62 fTreeViewer.traceSelected(signal);
63 }
64 if (fXYViewer != null) {
65 fXYViewer.traceSelected(signal);
66 }
67 }
68 }
69
70 @Override
71 protected TmfXYChartViewer createChartViewer(Composite parent) {
72 CpuUsageXYViewer viewer = new CpuUsageXYViewer(parent);
73 viewer.setSendTimeAlignSignals(true);
74 fXYViewer = viewer;
75 return viewer;
76 }
77
78 @Override
79 public TmfViewer createLeftChildViewer(Composite parent) {
80 final CpuUsageComposite viewer = new CpuUsageComposite(parent);
81
82 /* Add selection listener to tree viewer */
83 viewer.addSelectionChangeListener(new ISelectionChangedListener() {
84 @Override
85 public void selectionChanged(SelectionChangedEvent event) {
86 ISelection selection = event.getSelection();
87 if (selection instanceof IStructuredSelection) {
88 Object structSelection = ((IStructuredSelection) selection).getFirstElement();
89 if (structSelection instanceof CpuUsageEntry) {
90 CpuUsageEntry entry = (CpuUsageEntry) structSelection;
91 if (fTreeViewer != null) {
92 fTreeViewer.setSelectedThread(entry.getTid());
93 }
94 if (fXYViewer != null) {
95 fXYViewer.setSelectedThread(Long.valueOf(entry.getTid()));
96 }
97 }
98 }
99 }
100 });
101
102 viewer.getControl().addControlListener(new ControlAdapter() {
103 @Override
104 public void controlResized(ControlEvent e) {
105 super.controlResized(e);
106 }
107 });
108
109 fTreeViewer = viewer;
110 return fTreeViewer;
111 }
112
113 @Override
114 public void setFocus() {
115 if (fXYViewer != null) {
116 fXYViewer.getControl().setFocus();
117 }
118 }
119
120 }
This page took 0.039883 seconds and 5 git commands to generate.