analysis: Move timing analysis ui classes in own java packages
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.timing.ui / src / org / eclipse / tracecompass / analysis / timing / ui / views / segmentstore / density / AbstractSegmentStoreDensityView.java
CommitLineData
b23cbbfc 1/******************************************************************************
edded5c1 2 * Copyright (c) 2015, 2016 Ericsson
b23cbbfc
MAL
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
10package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density;
11
12import java.util.List;
13
14import org.eclipse.jdt.annotation.Nullable;
15import org.eclipse.jface.action.Action;
16import org.eclipse.jface.action.IToolBarManager;
17import org.eclipse.swt.SWT;
18import org.eclipse.swt.custom.SashForm;
19import org.eclipse.swt.widgets.Composite;
edded5c1 20import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.AbstractSegmentStoreTableViewer;
b23cbbfc
MAL
21import org.eclipse.tracecompass.segmentstore.core.ISegment;
22import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
23import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
24import org.eclipse.tracecompass.tmf.ui.views.TmfView;
25
26/**
27 * Displays the segment store analysis data in a density chart and a table
28 * corresponding to the selected latencies.
29 *
30 * @author Matthew Khouzam
31 * @author Marc-Andre Laperle
32 */
33public abstract class AbstractSegmentStoreDensityView extends TmfView {
34
35 private static final int[] DEFAULT_WEIGHTS = new int[] { 4, 6 };
36
37 private @Nullable AbstractSegmentStoreDensityViewer fDensityViewer;
38 private @Nullable AbstractSegmentStoreTableViewer fTableViewer;
39
40 /**
41 * Constructs a segment store density view
42 *
43 * @param viewName
44 * the name of the view
45 */
46 public AbstractSegmentStoreDensityView(String viewName) {
47 super(viewName);
48 }
49
50 /**
51 * Used to keep the table in sync with the density viewer.
52 */
53 private final class DataChangedListener implements ISegmentStoreDensityViewerDataListener {
54 @Override
55 public void dataChanged(List<ISegment> data) {
56 updateTableModel(data);
57 }
58
59 private void updateTableModel(@Nullable List<ISegment> data) {
60 final AbstractSegmentStoreTableViewer viewer = fTableViewer;
61 if (viewer != null && data != null) {
62 viewer.updateModel(data.toArray(new ISegment[] {}));
63 }
64 }
65
66 @Override
67 public void dataSelectionChanged(List<ISegment> data) {
68 updateTableModel(data);
69 }
70 }
71
72 @Override
73 public void createPartControl(@Nullable Composite parent) {
74 super.createPartControl(parent);
75
76 final SashForm sashForm = new SashForm(parent, SWT.NONE);
77
78 fTableViewer = createSegmentStoreTableViewer(sashForm);
79 fDensityViewer = createSegmentStoreDensityViewer(sashForm);
80 fDensityViewer.addDataListener(new DataChangedListener());
81
82 sashForm.setWeights(DEFAULT_WEIGHTS);
83
84 Action zoomOut = new ZoomOutAction(this);
85 IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager();
86 toolBar.add(zoomOut);
87 ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
88 if (trace != null && fDensityViewer != null) {
89 fDensityViewer.loadTrace(trace);
90 }
91 }
92
93 /**
94 * Create a table viewer suitable for displaying the segment store content.
95 *
96 * @param parent
97 * the parent composite
98 * @return the table viewer
99 */
1d8dcc1f 100 protected abstract AbstractSegmentStoreTableViewer createSegmentStoreTableViewer(Composite parent);
b23cbbfc
MAL
101
102 /**
103 * Create a density viewer suitable for displaying the segment store
104 * content.
105 *
106 * @param parent
107 * the parent composite
108 * @return the density viewer
109 */
1d8dcc1f 110 protected abstract AbstractSegmentStoreDensityViewer createSegmentStoreDensityViewer(Composite parent);
b23cbbfc
MAL
111
112 @Override
113 public void setFocus() {
114 final AbstractSegmentStoreDensityViewer viewer = fDensityViewer;
115 if (viewer != null) {
116 viewer.getControl().setFocus();
117 }
118 }
119
120 @Override
121 public void dispose() {
122 final AbstractSegmentStoreDensityViewer densityViewer = fDensityViewer;
123 if (densityViewer != null) {
124 densityViewer.dispose();
125 }
126
127 final AbstractSegmentStoreTableViewer tableViewer = fTableViewer;
128 if (tableViewer != null) {
129 tableViewer.dispose();
130 }
131
132 super.dispose();
133 }
134
135 // Package-visible on purpose for ZoomOutAction
136 @Nullable
137 AbstractSegmentStoreDensityViewer getDensityViewer() {
138 return fDensityViewer;
139 }
140}
This page took 0.03042 seconds and 5 git commands to generate.