1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
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
10 * Marc-Andre Laperle - Initial API and implementation.
11 *******************************************************************************/
12 package org
.eclipse
.tracecompass
.internal
.tmf
.ui
.project
.handlers
;
14 import java
.util
.Iterator
;
16 import org
.eclipse
.core
.commands
.AbstractHandler
;
17 import org
.eclipse
.core
.commands
.ExecutionEvent
;
18 import org
.eclipse
.core
.commands
.ExecutionException
;
19 import org
.eclipse
.jface
.viewers
.ISelection
;
20 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
21 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
22 import org
.eclipse
.tracecompass
.tmf
.core
.signal
.TmfTraceRangeUpdatedSignal
;
23 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimeRange
;
24 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimestamp
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
26 import org
.eclipse
.tracecompass
.tmf
.ui
.project
.model
.TmfTraceElement
;
27 import org
.eclipse
.tracecompass
.tmf
.ui
.project
.model
.TmfTraceFolder
;
28 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
31 * Refresh the content of a trace in order to see new events.
33 public class RefreshTraceContentHandler
extends AbstractHandler
{
36 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
39 ISelection selection
= HandlerUtil
.getCurrentSelection(event
);
40 if (!(selection
instanceof IStructuredSelection
)) {
43 final Iterator
<Object
> iterator
= ((IStructuredSelection
) selection
).iterator();
45 while (iterator
.hasNext()) {
46 Object element
= iterator
.next();
47 if (element
instanceof TmfTraceElement
) {
48 TmfTraceElement trace
= (TmfTraceElement
) element
;
51 } else if (element
instanceof TmfTraceFolder
) {
52 TmfTraceFolder tmfTraceFolder
= (TmfTraceFolder
) element
;
53 for (TmfTraceElement e
: tmfTraceFolder
.getTraces()) {
56 } else if (element
instanceof ITmfEvent
) {
57 ITmfEvent iTmfEvent
= (ITmfEvent
) element
;
58 refreshTrace(iTmfEvent
.getTrace());
64 private static void refreshTrace(TmfTraceElement t
) {
65 final TmfTraceElement traceElement
= t
.getElementUnderTraceFolder();
66 ITmfTrace trace
= traceElement
.getTrace();
70 private static void refreshTrace(ITmfTrace trace
) {
71 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
72 TmfTraceRangeUpdatedSignal signal
= new TmfTraceRangeUpdatedSignal(trace
, trace
, range
);
73 trace
.broadcastAsync(signal
);