tmf: Add command to manually refresh traces
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / internal / tmf / ui / project / handlers / RefreshTraceContentHandler.java
1 /*******************************************************************************
2 * Copyright (c) 2015 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 * Marc-Andre Laperle - Initial API and implementation.
11 *******************************************************************************/
12 package org.eclipse.tracecompass.internal.tmf.ui.project.handlers;
13
14 import java.util.Iterator;
15
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;
29
30 /**
31 * Refresh the content of a trace in order to see new events.
32 */
33 public class RefreshTraceContentHandler extends AbstractHandler {
34
35 @Override
36 public Object execute(ExecutionEvent event) throws ExecutionException {
37
38 // Get the selection
39 ISelection selection = HandlerUtil.getCurrentSelection(event);
40 if (!(selection instanceof IStructuredSelection)) {
41 return null;
42 }
43 final Iterator<Object> iterator = ((IStructuredSelection) selection).iterator();
44
45 while (iterator.hasNext()) {
46 Object element = iterator.next();
47 if (element instanceof TmfTraceElement) {
48 TmfTraceElement trace = (TmfTraceElement) element;
49 refreshTrace(trace);
50
51 } else if (element instanceof TmfTraceFolder) {
52 TmfTraceFolder tmfTraceFolder = (TmfTraceFolder) element;
53 for (TmfTraceElement e : tmfTraceFolder.getTraces()) {
54 refreshTrace(e);
55 }
56 } else if (element instanceof ITmfEvent) {
57 ITmfEvent iTmfEvent = (ITmfEvent) element;
58 refreshTrace(iTmfEvent.getTrace());
59 }
60 }
61 return null;
62 }
63
64 private static void refreshTrace(TmfTraceElement t) {
65 final TmfTraceElement traceElement = t.getElementUnderTraceFolder();
66 ITmfTrace trace = traceElement.getTrace();
67 refreshTrace(trace);
68 }
69
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);
74 }
75
76 }
This page took 0.0362130000000001 seconds and 5 git commands to generate.