Internalize lttng.ui APIs
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / internal / lttng / ui / views / latency / GraphViewer.java
1 /*******************************************************************************
2 * Copyright (c) 2010, 2011 Ericsson
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 * Philippe Sawicki (INF4990.A2010@gmail.com) - Initial API and implementation
11 * Mathieu Denis (mathieu.denis55@gmail.com) - Refactored code
12 * Bernd Hufmann - Adapted to new model-view-controller design
13 *******************************************************************************/
14 package org.eclipse.linuxtools.internal.lttng.ui.views.latency;
15
16 import org.eclipse.linuxtools.internal.lttng.ui.views.latency.listeners.GraphMouseListener;
17 import org.eclipse.linuxtools.internal.lttng.ui.views.latency.listeners.GraphPaintListener;
18 import org.eclipse.linuxtools.internal.lttng.ui.views.latency.listeners.TimePointerListener;
19 import org.eclipse.linuxtools.internal.lttng.ui.views.latency.model.IGraphDataModel;
20 import org.eclipse.linuxtools.internal.lttng.ui.views.latency.model.IGraphModelListener;
21 import org.eclipse.linuxtools.internal.lttng.ui.views.latency.model.LatencyGraphModel;
22 import org.eclipse.swt.widgets.Composite;
23
24 /**
25 * <b><u>GraphViewer</u></b>
26 * <p>
27 * Graph viewer.
28 *
29 * @author Philippe Sawicki
30 */
31 public class GraphViewer extends AbstractViewer implements IGraphModelListener {
32
33 // ------------------------------------------------------------------------
34 // Attributes
35 // ------------------------------------------------------------------------
36
37 /**
38 * Latency graph model
39 */
40 private LatencyGraphModel fModel;
41
42 // ------------------------------------------------------------------------
43 // Constructors
44 // ------------------------------------------------------------------------
45
46 /**
47 * Constructor.
48 * @param parent The parent composite node.
49 * @param style The SWT style to use to render the view.
50 */
51 public GraphViewer(Composite parent, int style) {
52 super(parent, style);
53
54 // Register the paint listener
55 fPaintListener = new GraphPaintListener(this);
56 addPaintListener(fPaintListener);
57
58 // Register the mouse track listener
59 fMouseTraceListener = new TimePointerListener(this, (GraphPaintListener)fPaintListener);
60 addMouseTrackListener(fMouseTraceListener);
61
62 // Register mouse listener
63 fMouseListener = new GraphMouseListener(this, (GraphPaintListener)fPaintListener);
64 addMouseListener(fMouseListener);
65
66 fModel = new LatencyGraphModel();
67 fModel.addGraphModelListener(this);
68 }
69
70 // ------------------------------------------------------------------------
71 // Operations
72 // ------------------------------------------------------------------------
73
74 /*
75 * (non-Javadoc)
76 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#dispose()
77 */
78 @Override
79 public void dispose() {
80 fModel.removeGraphModelListener(this);
81 fPaintListener.dispose();
82 super.dispose();
83 }
84
85 /*
86 * (non-Javadoc)
87 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#clear()
88 */
89 @Override
90 public void clear() {
91 fPaintListener.clear();
92 }
93
94 /*
95 * (non-Javadoc)
96 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#clearBackground()
97 */
98 @Override
99 public void clearBackground() {
100 fPaintListener.clear();
101 }
102
103 /*
104 * (non-Javadoc)
105 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#increaseBarWidth()
106 */
107 @Override
108 public void increaseBarWidth() {
109 fPaintListener.increaseBarWitdh();
110 graphModelUpdated();
111 }
112
113 /*
114 * (non-Javadoc)
115 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#decreaseBarWidth()
116 */
117 @Override
118 public void decreaseBarWidth() {
119 fPaintListener.decreaseBarWitdh();
120 graphModelUpdated();
121 }
122
123 /*
124 * (non-Javadoc)
125 * @see org.eclipse.linuxtools.lttng.ui.views.latency.AbstractViewer#getModel()
126 */
127 @Override
128 public IGraphDataModel getModel() {
129 return fModel;
130 }
131
132 /*
133 * (non-Javadoc)
134 * @see org.eclipse.linuxtools.lttng.ui.views.latency.model.IGraphModelListener#graphModelUpdated()
135 */
136 @Override
137 public void graphModelUpdated() {
138 if (!isDisposed() && getDisplay() != null) {
139 getDisplay().asyncExec(new Runnable() {
140 @Override
141 public void run() {
142 if (!isDisposed()) {
143 redraw();
144 }
145 }
146 });
147 }
148 }
149
150 /*
151 * (non-Javadoc)
152 * @see org.eclipse.linuxtools.lttng.ui.views.latency.model.IGraphModelListener#currentEventUpdated()
153 */
154 @Override
155 public void currentEventUpdated(long currentEventTime) {
156 graphModelUpdated();
157 }
158 }
This page took 0.034103 seconds and 5 git commands to generate.