1 /*******************************************************************************
2 * Copyright (c) 2014 É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
.lttng2
.kernel
.ui
.views
.cpuusage
;
15 import org
.eclipse
.jface
.viewers
.ISelection
;
16 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
17 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
18 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
19 import org
.eclipse
.swt
.SWT
;
20 import org
.eclipse
.swt
.custom
.SashForm
;
21 import org
.eclipse
.swt
.layout
.FillLayout
;
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
.ui
.views
.TmfView
;
28 * CPU usage view. It contains 2 viewers: one tree viewer showing all the
29 * threads who were on the CPU in the time range, and one XY chart viewer
30 * plotting the total time spent on CPU and the time of the threads selected in
33 * @author Geneviève Bastien
35 public class CpuUsageView
extends TmfView
{
38 public static final String ID
= "org.eclipse.linuxtools.lttng2.kernel.ui.views.cpuusage"; //$NON-NLS-1$
40 private CpuUsageComposite fTreeViewer
= null;
41 private CpuUsageXYViewer fXYViewer
= null;
46 public CpuUsageView() {
47 super(Messages
.CpuUsageView_Title
);
51 public void createPartControl(Composite parent
) {
53 final SashForm sash
= new SashForm(parent
, SWT
.NONE
);
55 fTreeViewer
= new CpuUsageComposite(sash
);
57 /* Build the XY chart part of the view */
58 fXYViewer
= new CpuUsageXYViewer(sash
);
60 /* Add selection listener to tree viewer */
61 fTreeViewer
.addSelectionChangeListener(new ISelectionChangedListener() {
63 public void selectionChanged(SelectionChangedEvent event
) {
64 ISelection selection
= event
.getSelection();
65 if (selection
instanceof IStructuredSelection
) {
66 Object structSelection
= ((IStructuredSelection
) selection
).getFirstElement();
67 if (structSelection
instanceof CpuUsageEntry
) {
68 CpuUsageEntry entry
= (CpuUsageEntry
) structSelection
;
69 fTreeViewer
.setSelectedThread(entry
.getTid());
70 fXYViewer
.setSelectedThread(Long
.valueOf(entry
.getTid()));
76 sash
.setLayout(new FillLayout());
78 /* Initialize the viewers with the currently selected trace */
79 ITmfTrace trace
= getActiveTrace();
81 TmfTraceSelectedSignal signal
= new TmfTraceSelectedSignal(this, trace
);
82 fTreeViewer
.traceSelected(signal
);
83 fXYViewer
.traceSelected(signal
);
89 public void setFocus() {
93 public void dispose() {
95 if (fTreeViewer
!= null) {
96 fTreeViewer
.dispose();
98 if (fXYViewer
!= null) {