tmf: TmfTraceManager improvements
[deliverable/tracecompass.git] / org.eclipse.tracecompass.analysis.os.linux.ui / src / org / eclipse / tracecompass / analysis / os / linux / ui / views / cpuusage / CpuUsageView.java
CommitLineData
dffc234f 1/*******************************************************************************
ed902a2b 2 * Copyright (c) 2014, 2015 École Polytechnique de Montréal
dffc234f
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
e363eae1 13package org.eclipse.tracecompass.analysis.os.linux.ui.views.cpuusage;
dffc234f 14
e9a0d1cb
GB
15import org.eclipse.jface.viewers.ISelection;
16import org.eclipse.jface.viewers.ISelectionChangedListener;
17import org.eclipse.jface.viewers.IStructuredSelection;
18import org.eclipse.jface.viewers.SelectionChangedEvent;
dffc234f
GB
19import org.eclipse.swt.SWT;
20import org.eclipse.swt.custom.SashForm;
21import org.eclipse.swt.layout.FillLayout;
22import org.eclipse.swt.widgets.Composite;
2bdf0193
AM
23import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
24import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
21852dfa 25import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
2bdf0193 26import org.eclipse.tracecompass.tmf.ui.views.TmfView;
dffc234f
GB
27
28/**
29 * CPU usage view. It contains 2 viewers: one tree viewer showing all the
30 * threads who were on the CPU in the time range, and one XY chart viewer
31 * plotting the total time spent on CPU and the time of the threads selected in
32 * the tree viewer.
33 *
34 * @author Geneviève Bastien
35 */
36public class CpuUsageView extends TmfView {
37
38 /** ID string */
e363eae1 39 public static final String ID = "org.eclipse.tracecompass.analysis.os.linux.views.cpuusage"; //$NON-NLS-1$
dffc234f 40
3df2eabe 41 private CpuUsageComposite fTreeViewer = null;
e9a0d1cb 42 private CpuUsageXYViewer fXYViewer = null;
3df2eabe 43
dffc234f
GB
44 /**
45 * Constructor
46 */
47 public CpuUsageView() {
48 super(Messages.CpuUsageView_Title);
49 }
50
51 @Override
52 public void createPartControl(Composite parent) {
53
54 final SashForm sash = new SashForm(parent, SWT.NONE);
55
3df2eabe 56 fTreeViewer = new CpuUsageComposite(sash);
dffc234f
GB
57
58 /* Build the XY chart part of the view */
e9a0d1cb
GB
59 fXYViewer = new CpuUsageXYViewer(sash);
60
61 /* Add selection listener to tree viewer */
62 fTreeViewer.addSelectionChangeListener(new ISelectionChangedListener() {
63 @Override
64 public void selectionChanged(SelectionChangedEvent event) {
65 ISelection selection = event.getSelection();
66 if (selection instanceof IStructuredSelection) {
67 Object structSelection = ((IStructuredSelection) selection).getFirstElement();
68 if (structSelection instanceof CpuUsageEntry) {
69 CpuUsageEntry entry = (CpuUsageEntry) structSelection;
70 fTreeViewer.setSelectedThread(entry.getTid());
71 fXYViewer.setSelectedThread(Long.valueOf(entry.getTid()));
72 }
73 }
74 }
75 });
dffc234f
GB
76
77 sash.setLayout(new FillLayout());
78
79 /* Initialize the viewers with the currently selected trace */
21852dfa 80 ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
dffc234f
GB
81 if (trace != null) {
82 TmfTraceSelectedSignal signal = new TmfTraceSelectedSignal(this, trace);
3df2eabe
BH
83 fTreeViewer.traceSelected(signal);
84 fXYViewer.traceSelected(signal);
dffc234f
GB
85 }
86
87 }
88
89 @Override
90 public void setFocus() {
91 }
92
3df2eabe
BH
93 @Override
94 public void dispose() {
95 super.dispose();
96 if (fTreeViewer != null) {
97 fTreeViewer.dispose();
98 }
99 if (fXYViewer != null) {
100 fXYViewer.dispose();
101 }
102 }
103
dffc234f 104}
This page took 0.04975 seconds and 5 git commands to generate.