Commit | Line | Data |
---|---|---|
6e512b93 | 1 | /******************************************************************************* |
8827c197 | 2 | * Copyright (c) 2009, 2010 Ericsson |
6e512b93 | 3 | * |
dfaf8391 FC |
4 | * All rights reserved. This program and the accompanying materials are made |
5 | * available under the terms of the Eclipse Public License v1.0 which | |
6e512b93 ASL |
6 | * accompanies this distribution, and is available at |
7 | * http://www.eclipse.org/legal/epl-v10.html | |
8 | * | |
860cadcf FC |
9 | * Contributors: |
10 | * Alvaro Sanchez-Leon - Initial implementation | |
11 | * Michel Dagenais (michel.dagenais@polymtl.ca) - Reference C implementation, used with permission | |
6e512b93 | 12 | *******************************************************************************/ |
8b29a712 | 13 | package org.eclipse.linuxtools.lttng.ui.views.resources; |
8035003b | 14 | |
dfaf8391 FC |
15 | import org.eclipse.jface.action.Action; |
16 | import org.eclipse.jface.action.IMenuListener; | |
17 | import org.eclipse.jface.action.IMenuManager; | |
18 | import org.eclipse.jface.action.IToolBarManager; | |
19 | import org.eclipse.jface.action.MenuManager; | |
20 | import org.eclipse.jface.action.Separator; | |
6c13869b FC |
21 | import org.eclipse.linuxtools.lttng.core.control.LttngCoreProviderFactory; |
22 | import org.eclipse.linuxtools.lttng.core.request.ILttngSyntEventRequest; | |
23 | import org.eclipse.linuxtools.lttng.core.state.evProcessor.ITransEventProcessor; | |
dfaf8391 | 24 | import org.eclipse.linuxtools.lttng.ui.TraceDebug; |
8827c197 | 25 | import org.eclipse.linuxtools.lttng.ui.model.trange.ItemContainer; |
41dc35d0 | 26 | import org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView; |
dfaf8391 | 27 | import org.eclipse.linuxtools.lttng.ui.views.common.ParamsUpdater; |
8827c197 | 28 | import org.eclipse.linuxtools.lttng.ui.views.resources.evProcessor.ResourcesEventToHandlerFactory; |
dfaf8391 | 29 | import org.eclipse.linuxtools.lttng.ui.views.resources.model.ResourceModelFactory; |
c48abe58 | 30 | import org.eclipse.linuxtools.lttng.ui.views.resources.model.ResourcesTimeRangeViewerProvider; |
6c13869b FC |
31 | import org.eclipse.linuxtools.tmf.core.event.TmfEvent; |
32 | import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange; | |
33 | import org.eclipse.linuxtools.tmf.core.experiment.TmfExperiment; | |
34 | import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType; | |
35 | import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentRangeUpdatedSignal; | |
36 | import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentSelectedSignal; | |
d61e0854 | 37 | import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentUpdatedSignal; |
6c13869b FC |
38 | import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal; |
39 | import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler; | |
40 | import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal; | |
dfaf8391 | 41 | import org.eclipse.linuxtools.tmf.ui.viewers.TmfViewerFactory; |
dfaf8391 FC |
42 | import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITmfTimeScaleSelectionListener; |
43 | import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITmfTimeSelectionListener; | |
44 | import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeScaleSelectionEvent; | |
45 | import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeSelectionEvent; | |
46 | import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITmfTimeAnalysisEntry; | |
dfaf8391 FC |
47 | import org.eclipse.swt.SWT; |
48 | import org.eclipse.swt.layout.FillLayout; | |
6e512b93 | 49 | import org.eclipse.swt.widgets.Composite; |
dfaf8391 FC |
50 | import org.eclipse.swt.widgets.Display; |
51 | import org.eclipse.swt.widgets.Menu; | |
52 | import org.eclipse.ui.IActionBars; | |
53 | import org.eclipse.ui.IWorkbenchActionConstants; | |
54 | import org.eclipse.ui.PlatformUI; | |
55 | import org.eclipse.ui.plugin.AbstractUIPlugin; | |
6e512b93 ASL |
56 | |
57 | /** | |
dfaf8391 FC |
58 | * @author alvaro |
59 | * | |
6e512b93 | 60 | */ |
41dc35d0 FC |
61 | public class ResourcesView extends AbsTimeUpdateView implements |
62 | ITmfTimeSelectionListener, ITmfTimeScaleSelectionListener { | |
dfaf8391 FC |
63 | |
64 | // ======================================================================== | |
65 | // Data | |
66 | // ======================================================================== | |
3b38ea61 | 67 | public static final String ID = "org.eclipse.linuxtools.lttng.ui.views.resources"; //$NON-NLS-1$ |
dfaf8391 FC |
68 | |
69 | // private int totalNumItems = 0; | |
70 | // Actions | |
71 | private Action resetScale; | |
72 | private Action nextEvent; | |
73 | private Action prevEvent; | |
74 | private Action nextTrace; | |
75 | private Action prevTrace; | |
76 | private Action showLegend; | |
77 | private Action filterTraces; | |
78 | private Action zoomIn; | |
79 | private Action zoomOut; | |
8827c197 | 80 | private Action zoomFilter; |
dfaf8391 FC |
81 | private Composite top; |
82 | ||
a79913eb FC |
83 | private TmfTimeRange initTimeRange = TmfTimeRange.Null; |
84 | ||
dfaf8391 FC |
85 | // private static SimpleDateFormat stimeformat = new SimpleDateFormat( |
86 | // "yy/MM/dd HH:mm:ss"); | |
6e512b93 | 87 | |
dfaf8391 FC |
88 | // private TraceModelImplFactory fact; |
89 | ||
90 | // ======================================================================== | |
41dc35d0 | 91 | // Constructor |
dfaf8391 | 92 | // ======================================================================== |
6e512b93 ASL |
93 | |
94 | /** | |
dfaf8391 | 95 | * The constructor. |
6e512b93 ASL |
96 | */ |
97 | public ResourcesView() { | |
41dc35d0 | 98 | super(ID); |
6e512b93 ASL |
99 | } |
100 | ||
41dc35d0 FC |
101 | // ======================================================================== |
102 | // Methods | |
103 | // ======================================================================== | |
104 | ||
dfaf8391 FC |
105 | /** |
106 | * This is a callback that will allow us to create the viewer and initialize | |
107 | * it. | |
6e512b93 ASL |
108 | */ |
109 | @Override | |
110 | public void createPartControl(Composite parent) { | |
dfaf8391 FC |
111 | top = new Composite(parent, SWT.BORDER); |
112 | ||
113 | top.setLayout(new FillLayout()); | |
c48abe58 | 114 | tsfviewer = TmfViewerFactory.createViewer(top, new ResourcesTimeRangeViewerProvider(getParamsUpdater())); |
dfaf8391 FC |
115 | |
116 | tsfviewer.addWidgetSelectionListner(this); | |
117 | tsfviewer.addWidgetTimeScaleSelectionListner(this); | |
118 | ||
41dc35d0 | 119 | // Traces shall not be grouped to allow synchronisation |
dfaf8391 FC |
120 | tsfviewer.groupTraces(true); |
121 | tsfviewer.setAcceptSelectionAPIcalls(true); | |
122 | ||
123 | // Viewer to notify selection to this class | |
41dc35d0 | 124 | // This class will synchronise selections with table. |
0c2a2e08 FC |
125 | // tsfviewer.addWidgetSelectionListner(this); |
126 | // tsfviewer.addWidgetTimeScaleSelectionListner(this); | |
dfaf8391 FC |
127 | |
128 | // Create the help context id for the viewer's control | |
129 | // TODO: Associate with help system | |
130 | PlatformUI.getWorkbench().getHelpSystem().setHelp( | |
131 | tsfviewer.getControl(), | |
132 | "org.eclipse.linuxtools.lttng.ui.views.resource.view"); //$NON-NLS-1$ | |
133 | ||
134 | makeActions(); | |
135 | hookContextMenu(); | |
136 | contributeToActionBars(); | |
137 | ||
0c2a2e08 FC |
138 | // // Read relevant values |
139 | // int timeSpaceWidth = tsfviewer.getTimeSpace(); | |
140 | // if (timeSpaceWidth < 0) { | |
141 | // timeSpaceWidth = -timeSpaceWidth; | |
142 | // } | |
dfaf8391 | 143 | |
8827c197 FC |
144 | TmfExperiment<?> experiment = TmfExperiment.getCurrentExperiment(); |
145 | if (experiment != null) { | |
146 | TmfTimeRange experimentTRange = experiment.getTimeRange(); | |
a79913eb | 147 | if (experimentTRange != TmfTimeRange.Null) { |
8827c197 FC |
148 | long time0 = experimentTRange.getStartTime().getValue(); |
149 | long time1 = experimentTRange.getEndTime().getValue(); | |
150 | ParamsUpdater paramUpdater = getParamsUpdater(); | |
0c2a2e08 | 151 | paramUpdater.update(time0, time1); // , timeSpaceWidth); |
8827c197 | 152 | |
a79913eb FC |
153 | // send the initial request and obtained the adjusted time used |
154 | TmfTimeRange adjustedTimeRange = initialExperimentDataRequest(this, experimentTRange); | |
155 | ||
156 | // initialize widget time boundaries and filtering parameters | |
157 | ModelUpdateInit(experimentTRange, adjustedTimeRange, this); | |
158 | } | |
8827c197 | 159 | } else { |
9c4eb5f7 | 160 | TraceDebug.debug("No selected experiment information available"); //$NON-NLS-1$ |
8827c197 | 161 | } |
dfaf8391 FC |
162 | } |
163 | ||
164 | private void hookContextMenu() { | |
165 | MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$ | |
166 | menuMgr.setRemoveAllWhenShown(true); | |
167 | menuMgr.addMenuListener(new IMenuListener() { | |
d4011df2 | 168 | @Override |
dfaf8391 FC |
169 | public void menuAboutToShow(IMenuManager manager) { |
170 | ResourcesView.this.fillContextMenu(manager); | |
171 | } | |
172 | }); | |
173 | ||
174 | Menu menu = menuMgr.createContextMenu(tsfviewer.getControl()); | |
175 | tsfviewer.getControl().setMenu(menu); | |
176 | getSite() | |
177 | .registerContextMenu(menuMgr, tsfviewer.getSelectionProvider()); | |
178 | } | |
179 | ||
180 | private void contributeToActionBars() { | |
181 | IActionBars bars = getViewSite().getActionBars(); | |
182 | fillLocalPullDown(bars.getMenuManager()); | |
183 | fillLocalToolBar(bars.getToolBarManager()); | |
184 | } | |
185 | ||
186 | private void fillLocalPullDown(IMenuManager manager) { | |
187 | manager.add(new Separator()); | |
c48abe58 | 188 | manager.add(showLegend); |
dfaf8391 FC |
189 | manager.add(new Separator()); |
190 | manager.add(resetScale); | |
191 | manager.add(nextEvent); | |
192 | manager.add(prevEvent); | |
193 | manager.add(nextTrace); | |
194 | manager.add(prevTrace); | |
195 | // manager.add(filterTraces); | |
196 | manager.add(zoomIn); | |
197 | manager.add(zoomOut); | |
8827c197 | 198 | manager.add(zoomFilter); |
dfaf8391 FC |
199 | manager.add(new Separator()); |
200 | } | |
6e512b93 | 201 | |
dfaf8391 | 202 | private void fillContextMenu(IMenuManager manager) { |
c48abe58 | 203 | manager.add(showLegend); |
dfaf8391 FC |
204 | manager.add(new Separator()); |
205 | manager.add(resetScale); | |
206 | manager.add(nextEvent); | |
207 | manager.add(prevEvent); | |
208 | manager.add(nextTrace); | |
209 | manager.add(prevTrace); | |
210 | // manager.add(showLegend); | |
211 | // manager.add(filterTraces); | |
212 | manager.add(zoomIn); | |
213 | manager.add(zoomOut); | |
8827c197 | 214 | manager.add(zoomFilter); |
dfaf8391 FC |
215 | manager.add(new Separator()); |
216 | manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); | |
6e512b93 ASL |
217 | } |
218 | ||
dfaf8391 | 219 | private void fillLocalToolBar(IToolBarManager manager) { |
c48abe58 | 220 | manager.add(showLegend); |
dfaf8391 FC |
221 | manager.add(new Separator()); |
222 | manager.add(resetScale); | |
223 | manager.add(nextEvent); | |
224 | manager.add(prevEvent); | |
225 | manager.add(nextTrace); | |
226 | manager.add(prevTrace); | |
227 | // manager.add(filterTraces); | |
228 | manager.add(zoomIn); | |
229 | manager.add(zoomOut); | |
8827c197 | 230 | manager.add(zoomFilter); |
dfaf8391 FC |
231 | manager.add(new Separator()); |
232 | } | |
233 | ||
234 | private void makeActions() { | |
235 | // action4 | |
236 | resetScale = new Action() { | |
237 | @Override | |
238 | public void run() { | |
239 | if (tsfviewer != null) { | |
240 | tsfviewer.resetStartFinishTime(); | |
241 | } | |
242 | ||
243 | } | |
244 | }; | |
245 | resetScale.setText(Messages.getString("ResourcesView.Action.Reset")); //$NON-NLS-1$ | |
3b38ea61 FC |
246 | resetScale.setToolTipText(Messages.getString("ResourcesView.Action.Reset.ToolTip")); //$NON-NLS-1$ |
247 | resetScale.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( | |
7e71a0d6 | 248 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/home_nav.gif")); //$NON-NLS-1$ //$NON-NLS-2$ |
dfaf8391 FC |
249 | |
250 | // action5 | |
251 | nextEvent = new Action() { | |
252 | @Override | |
253 | public void run() { | |
254 | if (tsfviewer != null) { | |
255 | tsfviewer.selectNextEvent(); | |
256 | } | |
257 | } | |
258 | }; | |
259 | nextEvent.setText(Messages.getString("ResourcesView.Action.NextEvent")); //$NON-NLS-1$ | |
3b38ea61 FC |
260 | nextEvent.setToolTipText(Messages.getString("ResourcesView.Action.NextEvent.Tooltip")); //$NON-NLS-1$ |
261 | nextEvent.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( | |
7e71a0d6 | 262 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/next_event.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 FC |
263 | |
264 | // action6 | |
265 | prevEvent = new Action() { | |
266 | @Override | |
267 | public void run() { | |
268 | if (tsfviewer != null) { | |
269 | tsfviewer.selectPrevEvent(); | |
270 | } | |
271 | } | |
272 | }; | |
273 | prevEvent.setText(Messages.getString("ResourcesView.Action.PrevEvent")); //$NON-NLS-1$ | |
3b38ea61 FC |
274 | prevEvent.setToolTipText(Messages.getString("ResourcesView.Action.PrevEvent.Tooltip")); //$NON-NLS-1$ |
275 | prevEvent.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( | |
7e71a0d6 | 276 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/prev_event.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 FC |
277 | |
278 | // action7 | |
279 | nextTrace = new Action() { | |
280 | @Override | |
281 | public void run() { | |
282 | if (tsfviewer != null) { | |
283 | tsfviewer.selectNextTrace(); | |
284 | } | |
285 | } | |
286 | }; | |
3b38ea61 FC |
287 | nextTrace.setText(Messages.getString("ResourcesView.Action.NextResource")); //$NON-NLS-1$ |
288 | nextTrace.setToolTipText(Messages.getString("ResourcesView.Action.NextResource.ToolTip")); //$NON-NLS-1$ | |
289 | nextTrace.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( | |
7e71a0d6 | 290 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/next_item.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 FC |
291 | |
292 | // action8 | |
293 | prevTrace = new Action() { | |
294 | @Override | |
295 | public void run() { | |
296 | if (tsfviewer != null) { | |
297 | tsfviewer.selectPrevTrace(); | |
298 | } | |
299 | } | |
300 | }; | |
3b38ea61 FC |
301 | prevTrace.setText(Messages.getString("ResourcesView.Action.PreviousResource")); //$NON-NLS-1$ |
302 | prevTrace.setToolTipText(Messages.getString("ResourcesView.Action.PreviousResource.Tooltip")); //$NON-NLS-1$ | |
303 | prevTrace.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( | |
7e71a0d6 | 304 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/prev_item.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 FC |
305 | |
306 | // action9 | |
307 | showLegend = new Action() { | |
308 | @Override | |
309 | public void run() { | |
310 | if (tsfviewer != null) { | |
311 | tsfviewer.showLegend(); | |
312 | } | |
313 | } | |
314 | }; | |
315 | showLegend.setText(Messages.getString("ResourcesView.Action.Legend")); //$NON-NLS-1$ | |
3b38ea61 | 316 | showLegend.setToolTipText(Messages.getString("ResourcesView.Action.Legend.ToolTip")); //$NON-NLS-1$ |
dfaf8391 FC |
317 | |
318 | // action10 | |
319 | filterTraces = new Action() { | |
320 | @Override | |
321 | public void run() { | |
322 | if (tsfviewer != null) { | |
323 | tsfviewer.filterTraces(); | |
324 | } | |
325 | } | |
326 | }; | |
327 | filterTraces.setText(Messages.getString("ResourcesView.Action.Filter")); //$NON-NLS-1$ | |
3b38ea61 FC |
328 | filterTraces.setToolTipText(Messages.getString("ResourcesView.Action.Filter.ToolTip")); //$NON-NLS-1$ |
329 | filterTraces.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( | |
7e71a0d6 | 330 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/filter_items.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 FC |
331 | |
332 | // action10 | |
333 | zoomIn = new Action() { | |
334 | @Override | |
335 | public void run() { | |
336 | if (tsfviewer != null) { | |
337 | tsfviewer.zoomIn(); | |
338 | } | |
339 | } | |
340 | }; | |
341 | zoomIn.setText(Messages.getString("ResourcesView.Action.ZoomIn")); //$NON-NLS-1$ | |
3b38ea61 | 342 | zoomIn.setToolTipText(Messages.getString("ResourcesView.Action.ZoomIn.Tooltip")); //$NON-NLS-1$ |
dfaf8391 | 343 | zoomIn.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( |
7e71a0d6 | 344 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/zoomin_nav.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 FC |
345 | |
346 | // action10 | |
347 | zoomOut = new Action() { | |
348 | @Override | |
349 | public void run() { | |
350 | if (tsfviewer != null) { | |
351 | tsfviewer.zoomOut(); | |
352 | } | |
353 | } | |
354 | }; | |
355 | zoomOut.setText(Messages.getString("ResourcesView.Action.ZoomOut")); //$NON-NLS-1$ | |
3b38ea61 | 356 | zoomOut.setToolTipText(Messages.getString("ResourcesView.Action.ZoomOut.tooltip")); //$NON-NLS-1$ |
dfaf8391 | 357 | zoomOut.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( |
7e71a0d6 | 358 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/zoomout_nav.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
dfaf8391 | 359 | |
8827c197 FC |
360 | // zoomFilter |
361 | zoomFilter = new Action() { | |
dfaf8391 FC |
362 | @Override |
363 | public void run() { | |
8827c197 FC |
364 | // Nothing to do, however the selection status is needed by the |
365 | // application | |
dfaf8391 FC |
366 | } |
367 | }; | |
8827c197 FC |
368 | |
369 | zoomFilter.setText(Messages.getString("ResourcesView.Action.ZoomFilter")); //$NON-NLS-1$ | |
370 | zoomFilter.setToolTipText(Messages.getString("ResourcesView.Action.ZoomFilter.tooltip")); //$NON-NLS-1$ | |
3b38ea61 | 371 | zoomFilter.setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin( |
7e71a0d6 | 372 | Messages.getString("ResourcesView.tmf.UI"), "icons/elcl16/filter_items.gif")); //$NON-NLS-1$//$NON-NLS-2$ |
8827c197 FC |
373 | zoomFilter.setChecked(false); |
374 | ||
dfaf8391 FC |
375 | // PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_ELCL_SYNCED); |
376 | } | |
377 | ||
378 | /** | |
379 | * Passing the focus request to the viewer's control. | |
6e512b93 ASL |
380 | */ |
381 | @Override | |
382 | public void setFocus() { | |
dfaf8391 FC |
383 | tsfviewer.getControl().setFocus(); |
384 | } | |
385 | ||
8827c197 FC |
386 | /* |
387 | * (non-Javadoc) | |
388 | * | |
389 | * @see org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView# | |
390 | * tsfTmProcessSelEvent | |
391 | * (org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeSelectionEvent | |
392 | * ) | |
393 | */ | |
550d787e | 394 | @Override |
dfaf8391 | 395 | public void tsfTmProcessSelEvent(TmfTimeSelectionEvent event) { |
8827c197 FC |
396 | // common implementation |
397 | super.tsfTmProcessSelEvent(event); | |
dfaf8391 FC |
398 | } |
399 | ||
41dc35d0 FC |
400 | /* |
401 | * (non-Javadoc) | |
402 | * | |
403 | * @seeorg.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis. | |
404 | * ITmfTimeScaleSelectionListener | |
405 | * #tsfTmProcessTimeScaleEvent(org.eclipse.linuxtools | |
406 | * .tmf.ui.viewers.timeAnalysis.TmfTimeScaleSelectionEvent) | |
407 | */ | |
550d787e | 408 | @Override |
dfaf8391 | 409 | public void tsfTmProcessTimeScaleEvent(TmfTimeScaleSelectionEvent event) { |
8827c197 | 410 | super.tsfTmProcessTimeScaleEvent(event); |
dfaf8391 FC |
411 | } |
412 | ||
8827c197 FC |
413 | /* |
414 | * (non-Javadoc) | |
dfaf8391 | 415 | * |
8827c197 FC |
416 | * @see |
417 | * org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView#displayModel | |
418 | * (org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model. | |
419 | * ITmfTimeAnalysisEntry[], long, long, boolean, long, long, | |
420 | * java.lang.Object) | |
dfaf8391 | 421 | */ |
550d787e | 422 | @Override |
8827c197 FC |
423 | public void displayModel(final ITmfTimeAnalysisEntry[] items, final long startBoundTime, |
424 | final long endBoundTime, final boolean updateTimeBounds, final long startVisibleWindow, | |
425 | final long endVisibleWindow, final Object source) { | |
db1ea19b FC |
426 | |
427 | // Return if disposed | |
428 | if ((tsfviewer == null) || (tsfviewer.getControl().isDisposed())) return; | |
429 | ||
8827c197 FC |
430 | Display display = tsfviewer.getControl().getDisplay(); |
431 | display.asyncExec(new Runnable() { | |
d4011df2 | 432 | @Override |
dfaf8391 | 433 | public void run() { |
db1ea19b FC |
434 | if ((tsfviewer != null) && (!tsfviewer.getControl().isDisposed())) { |
435 | tsfviewer.display(items, startBoundTime, endBoundTime, updateTimeBounds); | |
436 | // validate visible boundaries | |
437 | if (startVisibleWindow > -1 && endVisibleWindow > -1) { | |
438 | tsfviewer.setSelectVisTimeWindow(startVisibleWindow, endVisibleWindow, source); | |
439 | } | |
440 | tsfviewer.resizeControls(); | |
8827c197 | 441 | } |
dfaf8391 FC |
442 | } |
443 | }); | |
444 | } | |
445 | ||
446 | @Override | |
447 | public void dispose() { | |
448 | // dispose parent resources | |
449 | super.dispose(); | |
dfaf8391 FC |
450 | |
451 | tsfviewer.removeWidgetSelectionListner(this); | |
452 | tsfviewer.removeWidgetTimeScaleSelectionListner(this); | |
453 | tsfviewer = null; | |
454 | } | |
455 | ||
41dc35d0 | 456 | /** |
8827c197 | 457 | * Registers as listener of time selection from other tmf views |
dfaf8391 | 458 | * |
8827c197 | 459 | * @param signal |
dfaf8391 | 460 | */ |
550d787e | 461 | @Override |
8827c197 FC |
462 | @TmfSignalHandler |
463 | public void synchToTime(TmfTimeSynchSignal signal) { | |
464 | super.synchToTime(signal); | |
dfaf8391 FC |
465 | } |
466 | ||
467 | /** | |
8827c197 FC |
468 | * Annotation Registers as listener of time range selection from other views |
469 | * The implementation handles the entry of the signal. | |
41dc35d0 FC |
470 | * |
471 | * @param signal | |
dfaf8391 | 472 | */ |
41dc35d0 | 473 | @TmfSignalHandler |
8827c197 FC |
474 | public void synchToTimeRange(TmfRangeSynchSignal signal) { |
475 | if (zoomFilter != null) { | |
476 | synchToTimeRange(signal, zoomFilter.isChecked()); | |
dfaf8391 | 477 | } |
dfaf8391 FC |
478 | } |
479 | ||
39332b5c | 480 | @Override |
8827c197 FC |
481 | public void modelIncomplete(ILttngSyntEventRequest request) { |
482 | // Nothing to do | |
483 | // The data will be refreshed on the next request | |
41dc35d0 | 484 | } |
dfaf8391 | 485 | |
41dc35d0 FC |
486 | /* |
487 | * (non-Javadoc) | |
488 | * | |
8827c197 FC |
489 | * @see org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView# |
490 | * getEventProcessor() | |
41dc35d0 | 491 | */ |
39332b5c | 492 | @Override |
8827c197 FC |
493 | public ITransEventProcessor getEventProcessor() { |
494 | return ResourcesEventToHandlerFactory.getInstance(); | |
495 | } | |
496 | ||
497 | /** | |
498 | * @param signal | |
499 | */ | |
500 | @TmfSignalHandler | |
501 | public void experimentSelected(TmfExperimentSelectedSignal<? extends TmfEvent> signal) { | |
502 | if (signal != null) { | |
503 | TmfTimeRange experimentTRange = signal.getExperiment().getTimeRange(); | |
d712a5f3 | 504 | |
a79913eb FC |
505 | initTimeRange = TmfTimeRange.Null; |
506 | if (experimentTRange != TmfTimeRange.Null) { | |
507 | // prepare time intervals in widget | |
508 | ModelUpdateInit(experimentTRange, experimentTRange, signal.getSource()); | |
509 | ||
510 | // request initial data | |
511 | initialExperimentDataRequest(signal.getSource(), experimentTRange); | |
512 | } | |
513 | } | |
514 | } | |
515 | ||
516 | @TmfSignalHandler | |
517 | public void experimentRangeUpdated(TmfExperimentRangeUpdatedSignal signal) { | |
518 | if (initTimeRange == TmfTimeRange.Null && signal.getExperiment().equals(TmfExperiment.getCurrentExperiment())) { | |
519 | TmfTimeRange experimentTRange = signal.getRange(); | |
520 | ||
521 | if (experimentTRange != TmfTimeRange.Null) { | |
522 | // prepare time intervals in widget | |
523 | ModelUpdateInit(experimentTRange, experimentTRange, signal.getSource()); | |
d712a5f3 | 524 | |
a79913eb FC |
525 | // request initial data |
526 | initialExperimentDataRequest(signal.getSource(), experimentTRange); | |
527 | } | |
d712a5f3 | 528 | } |
41dc35d0 | 529 | } |
dfaf8391 | 530 | |
d61e0854 PT |
531 | @TmfSignalHandler |
532 | public void experimentUpdated(TmfExperimentUpdatedSignal signal) { | |
533 | if (signal.getExperiment().equals(TmfExperiment.getCurrentExperiment())) { | |
534 | final TmfTimeRange range = signal.getExperiment().getTimeRange(); | |
535 | if (range != TmfTimeRange.Null) { | |
536 | Display.getDefault().asyncExec(new Runnable() { | |
537 | @Override | |
538 | public void run() { | |
539 | tsfviewer.setTimeBounds(range.getStartTime().getValue(), range.getEndTime().getValue()); | |
540 | }}); | |
541 | } | |
542 | } | |
543 | } | |
544 | ||
8827c197 FC |
545 | /** |
546 | * @param source | |
547 | * @param experimentTRange | |
548 | * @return Adjusted time window used for the request (smaller window to | |
549 | * initialize view) | |
41dc35d0 | 550 | */ |
8827c197 FC |
551 | private TmfTimeRange initialExperimentDataRequest(Object source, TmfTimeRange experimentTRange) { |
552 | // Adjust the initial time window to a shorter interval to allow | |
553 | // user to select the interesting area based on the perspective | |
554 | TmfTimeRange initTimeWindow = getInitTRange(experimentTRange); | |
dfaf8391 | 555 | |
a79913eb | 556 | eventRequest(initTimeWindow, experimentTRange, true, ExecutionType.FOREGROUND); |
8827c197 | 557 | if (TraceDebug.isDEBUG()) { |
3b38ea61 | 558 | TraceDebug.debug("Initialization request time range is: " + initTimeWindow.getStartTime().toString() + "-" //$NON-NLS-1$ //$NON-NLS-2$ |
8827c197 | 559 | + initTimeWindow.getEndTime().toString()); |
dfaf8391 FC |
560 | } |
561 | ||
a79913eb | 562 | initTimeRange = initTimeWindow; |
8827c197 FC |
563 | return initTimeWindow; |
564 | } | |
dfaf8391 | 565 | |
8827c197 FC |
566 | /* |
567 | * (non-Javadoc) | |
568 | * | |
569 | * @see org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView# | |
570 | * getParamsUpdater() | |
571 | */ | |
550d787e | 572 | @Override |
8827c197 FC |
573 | protected ParamsUpdater getParamsUpdater() { |
574 | return ResourceModelFactory.getParamsUpdater(); | |
575 | } | |
dfaf8391 | 576 | |
8827c197 FC |
577 | /* |
578 | * (non-Javadoc) | |
579 | * | |
580 | * @see org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView# | |
581 | * getItemContainer() | |
582 | */ | |
583 | @Override | |
584 | protected ItemContainer<?> getItemContainer() { | |
585 | return ResourceModelFactory.getResourceContainer(); | |
dfaf8391 | 586 | } |
c1c69938 FC |
587 | |
588 | /* | |
589 | * (non-Javadoc) | |
590 | * @see org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView#getProviderId() | |
591 | */ | |
592 | @Override | |
593 | protected int getProviderId() { | |
594 | return LttngCoreProviderFactory.RESOURCE_LTTNG_SYTH_EVENT_PROVIDER; | |
595 | } | |
dfaf8391 | 596 | } |