Merge remote-tracking branch 'eclipse/master'
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / resources / ResourcesView.java
CommitLineData
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 13package org.eclipse.linuxtools.lttng.ui.views.resources;
8035003b 14
dfaf8391
FC
15import org.eclipse.jface.action.Action;
16import org.eclipse.jface.action.IMenuListener;
17import org.eclipse.jface.action.IMenuManager;
18import org.eclipse.jface.action.IToolBarManager;
19import org.eclipse.jface.action.MenuManager;
20import org.eclipse.jface.action.Separator;
6c13869b
FC
21import org.eclipse.linuxtools.lttng.core.control.LttngCoreProviderFactory;
22import org.eclipse.linuxtools.lttng.core.request.ILttngSyntEventRequest;
23import org.eclipse.linuxtools.lttng.core.state.evProcessor.ITransEventProcessor;
dfaf8391 24import org.eclipse.linuxtools.lttng.ui.TraceDebug;
8827c197 25import org.eclipse.linuxtools.lttng.ui.model.trange.ItemContainer;
41dc35d0 26import org.eclipse.linuxtools.lttng.ui.views.common.AbsTimeUpdateView;
dfaf8391 27import org.eclipse.linuxtools.lttng.ui.views.common.ParamsUpdater;
8827c197 28import org.eclipse.linuxtools.lttng.ui.views.resources.evProcessor.ResourcesEventToHandlerFactory;
dfaf8391 29import org.eclipse.linuxtools.lttng.ui.views.resources.model.ResourceModelFactory;
c48abe58 30import org.eclipse.linuxtools.lttng.ui.views.resources.model.ResourcesTimeRangeViewerProvider;
6c13869b
FC
31import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
32import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
33import org.eclipse.linuxtools.tmf.core.experiment.TmfExperiment;
34import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
35import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentRangeUpdatedSignal;
36import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentSelectedSignal;
d61e0854 37import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentUpdatedSignal;
6c13869b
FC
38import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
39import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
40import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;
dfaf8391 41import org.eclipse.linuxtools.tmf.ui.viewers.TmfViewerFactory;
dfaf8391
FC
42import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITmfTimeScaleSelectionListener;
43import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITmfTimeSelectionListener;
44import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeScaleSelectionEvent;
45import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeSelectionEvent;
46import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITmfTimeAnalysisEntry;
dfaf8391
FC
47import org.eclipse.swt.SWT;
48import org.eclipse.swt.layout.FillLayout;
6e512b93 49import org.eclipse.swt.widgets.Composite;
dfaf8391
FC
50import org.eclipse.swt.widgets.Display;
51import org.eclipse.swt.widgets.Menu;
52import org.eclipse.ui.IActionBars;
53import org.eclipse.ui.IWorkbenchActionConstants;
54import org.eclipse.ui.PlatformUI;
55import org.eclipse.ui.plugin.AbstractUIPlugin;
6e512b93
ASL
56
57/**
dfaf8391
FC
58 * @author alvaro
59 *
6e512b93 60 */
41dc35d0
FC
61public 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
a4115405 83 private TmfTimeRange initTimeRange = TmfTimeRange.NULL_RANGE;
a79913eb 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();
a4115405 147 if (experimentTRange != TmfTimeRange.NULL_RANGE) {
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
a4115405
FC
505 initTimeRange = TmfTimeRange.NULL_RANGE;
506 if (experimentTRange != TmfTimeRange.NULL_RANGE) {
a79913eb
FC
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) {
a4115405 518 if (initTimeRange == TmfTimeRange.NULL_RANGE && signal.getExperiment().equals(TmfExperiment.getCurrentExperiment())) {
a79913eb
FC
519 TmfTimeRange experimentTRange = signal.getRange();
520
a4115405 521 if (experimentTRange != TmfTimeRange.NULL_RANGE) {
a79913eb
FC
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();
314b1e32 535 if (range != TmfTimeRange.NULL_RANGE) {
d61e0854
PT
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 }
314b1e32 596}
This page took 0.069386 seconds and 5 git commands to generate.