Force pin action on all views
[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 21import org.eclipse.tracecompass.segmentstore.core.ISegment;
b489f302 22import org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal;
b23cbbfc
MAL
23import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
24import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
25import org.eclipse.tracecompass.tmf.ui.views.TmfView;
26
27/**
28 * Displays the segment store analysis data in a density chart and a table
29 * corresponding to the selected latencies.
30 *
31 * @author Matthew Khouzam
32 * @author Marc-Andre Laperle
33 */
34public abstract class AbstractSegmentStoreDensityView extends TmfView {
35
36 private static final int[] DEFAULT_WEIGHTS = new int[] { 4, 6 };
37
38 private @Nullable AbstractSegmentStoreDensityViewer fDensityViewer;
39 private @Nullable AbstractSegmentStoreTableViewer fTableViewer;
40
41 /**
42 * Constructs a segment store density view
43 *
44 * @param viewName
45 * the name of the view
46 */
47 public AbstractSegmentStoreDensityView(String viewName) {
48 super(viewName);
49 }
50
51 /**
52 * Used to keep the table in sync with the density viewer.
53 */
54 private final class DataChangedListener implements ISegmentStoreDensityViewerDataListener {
55 @Override
56 public void dataChanged(List<ISegment> data) {
57 updateTableModel(data);
58 }
59
60 private void updateTableModel(@Nullable List<ISegment> data) {
61 final AbstractSegmentStoreTableViewer viewer = fTableViewer;
62 if (viewer != null && data != null) {
63 viewer.updateModel(data.toArray(new ISegment[] {}));
64 }
65 }
66
67 @Override
07daa331 68 public void dataSelectionChanged(@Nullable List<ISegment> data) {
b23cbbfc
MAL
69 updateTableModel(data);
70 }
71 }
72
73 @Override
74 public void createPartControl(@Nullable Composite parent) {
75 super.createPartControl(parent);
76
77 final SashForm sashForm = new SashForm(parent, SWT.NONE);
78
79 fTableViewer = createSegmentStoreTableViewer(sashForm);
80 fDensityViewer = createSegmentStoreDensityViewer(sashForm);
81 fDensityViewer.addDataListener(new DataChangedListener());
82
83 sashForm.setWeights(DEFAULT_WEIGHTS);
84
85 Action zoomOut = new ZoomOutAction(this);
86 IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager();
87 toolBar.add(zoomOut);
88 ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
b489f302
BH
89 if (trace != null) {
90 TmfTraceSelectedSignal signal = new TmfTraceSelectedSignal(this, trace);
91 if (fDensityViewer != null) {
92 fDensityViewer.traceSelected(signal);
93 }
94 if (fTableViewer != null) {
95 fTableViewer.traceSelected(signal);
96 }
b23cbbfc
MAL
97 }
98 }
99
100 /**
101 * Create a table viewer suitable for displaying the segment store content.
102 *
103 * @param parent
104 * the parent composite
105 * @return the table viewer
106 */
1d8dcc1f 107 protected abstract AbstractSegmentStoreTableViewer createSegmentStoreTableViewer(Composite parent);
b23cbbfc
MAL
108
109 /**
110 * Create a density viewer suitable for displaying the segment store
111 * content.
112 *
113 * @param parent
114 * the parent composite
115 * @return the density viewer
116 */
1d8dcc1f 117 protected abstract AbstractSegmentStoreDensityViewer createSegmentStoreDensityViewer(Composite parent);
b23cbbfc
MAL
118
119 @Override
120 public void setFocus() {
121 final AbstractSegmentStoreDensityViewer viewer = fDensityViewer;
122 if (viewer != null) {
123 viewer.getControl().setFocus();
124 }
125 }
126
127 @Override
128 public void dispose() {
129 final AbstractSegmentStoreDensityViewer densityViewer = fDensityViewer;
130 if (densityViewer != null) {
131 densityViewer.dispose();
132 }
133
134 final AbstractSegmentStoreTableViewer tableViewer = fTableViewer;
135 if (tableViewer != null) {
136 tableViewer.dispose();
137 }
138
139 super.dispose();
140 }
141
142 // Package-visible on purpose for ZoomOutAction
143 @Nullable
144 AbstractSegmentStoreDensityViewer getDensityViewer() {
145 return fDensityViewer;
146 }
6e1b4486
JR
147
148 @Override
149 protected boolean canBePinned() {
150 //TODO: actionPin is not defined
151 return false;
152 }
b23cbbfc 153}
This page took 0.04269 seconds and 5 git commands to generate.