Internalize lttng.core APIs
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / latency / HistogramViewer.java
CommitLineData
fbd124dd
BH
1/*******************************************************************************\r
2 * Copyright (c) 2010, 2011 Ericsson\r
3 * \r
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
8 * \r
9 * Contributors:\r
10 * Philippe Sawicki (INF4990.A2010@gmail.com) - Initial API and implementation\r
11 * Mathieu Denis (mathieu.denis55@gmail.com) - Refactored code\r
12 * Bernd Hufmann - Adapted to new model-view-controller design\r
13 *******************************************************************************/\r
14package org.eclipse.linuxtools.lttng.ui.views.latency;\r
15\r
fbd124dd
BH
16import org.eclipse.linuxtools.lttng.ui.views.latency.listeners.HistogramPaintListener;\r
17import org.eclipse.linuxtools.lttng.ui.views.latency.listeners.TooltipListener;\r
18import org.eclipse.linuxtools.lttng.ui.views.latency.listeners.ZoomListener;\r
e0752744
FC
19import org.eclipse.linuxtools.tmf.ui.views.histogram.HistogramDataModel;\r
20import org.eclipse.linuxtools.tmf.ui.views.histogram.IHistogramDataModel;\r
21import org.eclipse.linuxtools.tmf.ui.views.histogram.IHistogramModelListener;\r
fbd124dd
BH
22import org.eclipse.swt.SWT;\r
23import org.eclipse.swt.widgets.Composite;\r
24\r
25/**\r
26 * <b><u>HistogramViewer</u></b>\r
27 * <p>\r
28 * \r
29 * Histogram viewer.\r
30 * \r
31 * @author Philippe Sawicki\r
32 */\r
33public class HistogramViewer extends AbstractViewer implements IHistogramModelListener {\r
34\r
35 // ------------------------------------------------------------------------\r
36 // Attributes\r
37 // ------------------------------------------------------------------------\r
38\r
39 /**\r
40 * Usable width for data plotting.\r
41 */\r
42 protected int fUsableWidth;\r
43\r
44 /**\r
45 * Latency histogram model.\r
46 */\r
47 private HistogramDataModel fModel;\r
48\r
49 // ------------------------------------------------------------------------\r
50 // Constructors\r
51 // ------------------------------------------------------------------------\r
52\r
53 /**\r
54 * Constructor.\r
55 * @param parent The parent composite node.\r
56 * @param style The SWT style to use to render the view.\r
57 */\r
58 public HistogramViewer(Composite parent, int style) {\r
59 super(parent, style);\r
60 \r
61 // Register the paint listener\r
62 fPaintListener = new HistogramPaintListener(this);\r
63 addPaintListener(fPaintListener);\r
64 \r
65 // Register the zoom listener\r
66 fZoomListener = new ZoomListener(this);\r
67 addListener(SWT.MouseWheel, fZoomListener);\r
68 \r
69 // Register the mouse click listener\r
70 fMouseTraceListener = new TooltipListener(this, (HistogramPaintListener)fPaintListener);\r
71 addMouseTrackListener(fMouseTraceListener);\r
72 \r
73 fModel = new HistogramDataModel();\r
74 fModel.addHistogramListener(this);\r
75 }\r
76\r
77 // ------------------------------------------------------------------------\r
78 // Operations\r
79 // ------------------------------------------------------------------------\r
80\r
81 /*\r
82 * (non-Javadoc)\r
83 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#dispose()\r
84 */\r
85 @Override\r
86 public void dispose() {\r
87 fModel.removeHistogramListener(this);\r
88 fPaintListener.dispose();\r
89 super.dispose();\r
90 }\r
91\r
92 /*\r
93 * (non-Javadoc)\r
94 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#clear()\r
95 */\r
96 @Override\r
97 public void clear() {\r
98 fPaintListener.clear();\r
99 }\r
100\r
101 /*\r
102 * (non-Javadoc)\r
103 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#clearBackground()\r
104 */\r
105 @Override\r
106 public void clearBackground() {\r
107 fPaintListener.clear();\r
108 }\r
109\r
110 /*\r
111 * (non-Javadoc)\r
112 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#increaseBarWidth()\r
113 */\r
114 @Override\r
115 public void increaseBarWidth() {\r
116 fPaintListener.increaseBarWitdh();\r
117 modelUpdated();\r
118 }\r
119\r
120 /*\r
121 * (non-Javadoc)\r
122 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#decreaseBarWidth()\r
123 */\r
124 @Override\r
125 public void decreaseBarWidth() {\r
126 fPaintListener.decreaseBarWitdh();\r
127 modelUpdated();\r
128 }\r
129\r
130 /*\r
131 * (non-Javadoc)\r
132 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#getModel()\r
133 */\r
134 @Override\r
135 public IHistogramDataModel getModel() {\r
136 return fModel;\r
137 }\r
138\r
139 /*\r
140 * (non-Javadoc)\r
141 * @see org.eclipse.linuxtools.lttng.ui.views.histogram.IHistogramModelListener#modelUpdated()\r
142 */\r
143 @Override\r
144 public void modelUpdated() {\r
145 \r
146 if (!isDisposed() && getDisplay() != null) {\r
147 getDisplay().asyncExec(new Runnable() {\r
148 @Override\r
149 public void run() {\r
150 if (!isDisposed()) {\r
151 redraw();\r
152 }\r
153 }\r
154 });\r
155 }\r
156 }\r
157}
This page took 0.031038 seconds and 5 git commands to generate.