tmf: Bug 491714: Fix population of XmlTimeGraphView for experiments
authorBernd Hufmann <Bernd.Hufmann@ericsson.com>
Thu, 14 Apr 2016 15:45:27 +0000 (11:45 -0400)
committerBernd Hufmann <bernd.hufmann@ericsson.com>
Fri, 22 Apr 2016 10:43:57 +0000 (06:43 -0400)
With this patch the XmlTimeGraphView is populated with the content of
all traces part of an experiment.

When rebuilding the event list the view cache (event list, filters,
view context) is cleared. This is important because right now
there is only one instance of XmlTimeGraphView per trace even if there
are more than one XML analyses and views defined.

Change-Id: I535cace0089147bea4584c5af8b7a0c57157bd36
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/70681
Reviewed-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/views/timegraph/XmlTimeGraphView.java
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/timegraph/AbstractStateSystemTimeGraphView.java
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/timegraph/AbstractTimeGraphView.java

index 0b40966ad9800ab47395041cd64857e6308f44bc..b8af05b079731687cb543e3aee3372873cf20a32 100644 (file)
@@ -294,7 +294,7 @@ public class XmlTimeGraphView extends AbstractTimeGraphView {
             }
         }
 
-        putEntryList(trace, new ArrayList<TimeGraphEntry>(entryList));
+        addToEntryList(parentTrace, new ArrayList<TimeGraphEntry>(entryList));
 
         if (parentTrace.equals(getTrace())) {
             refresh();
index d27ffb2947615462aa75b5479ee07dd60aca60d6..e5f4776b61051fa8da276e48688b6032bab8e0b4 100644 (file)
@@ -26,8 +26,6 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
 import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
-import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
 import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ILinkEvent;
@@ -487,16 +485,12 @@ public abstract class AbstractStateSystemTimeGraphView extends AbstractTimeGraph
         throw new UnsupportedOperationException();
     }
 
-    // ------------------------------------------------------------------------
-    // Signal handlers
-    // ------------------------------------------------------------------------
-
-    @TmfSignalHandler
     @Override
-    public void traceClosed(final TmfTraceClosedSignal signal) {
-        super.traceClosed(signal);
+    protected void resetView(ITmfTrace viewTrace) {
+        // Don't remove super call
+        super.resetView(viewTrace);
         synchronized (fSSEntryListMap) {
-            for (ITmfStateSystem ss : fTraceSSMap.removeAll(signal.getTrace())) {
+            for (ITmfStateSystem ss : fTraceSSMap.removeAll(viewTrace)) {
                 fSSEntryListMap.remove(ss);
             }
         }
index 929e719f3f584c540f4270d1dbb77dc39a9f12d8..3e3424b78d885448c659bce2edf41d05d1f325c6 100644 (file)
@@ -1465,29 +1465,12 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
      */
     @TmfSignalHandler
     public void traceClosed(final TmfTraceClosedSignal signal) {
-        synchronized (fBuildThreadMap) {
-            for (ITmfTrace trace : getTracesToBuild(signal.getTrace())) {
-                BuildThread buildThread = fBuildThreadMap.remove(trace);
-                if (buildThread != null) {
-                    buildThread.cancel();
-                }
-            }
-        }
-        fMarkerEventSourcesMap.remove(signal.getTrace());
-        synchronized (fEntryListMap) {
-            fEntryListMap.remove(signal.getTrace());
-        }
-        fFiltersMap.remove(signal.getTrace());
-        fViewContext.remove(signal.getTrace());
+        resetView(signal.getTrace());
         if (signal.getTrace() == fTrace) {
             fTrace = null;
             fEditorFile = null;
             fStartTime = SWT.DEFAULT;
             fEndTime = SWT.DEFAULT;
-            if (fZoomThread != null) {
-                fZoomThread.cancel();
-                fZoomThread = null;
-            }
             refresh();
         }
     }
@@ -1600,6 +1583,8 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
         if (viewTrace == null) {
             return;
         }
+        resetView(viewTrace);
+
         List<IMarkerEventSource> markerEventSources = new ArrayList<>();
         synchronized (fBuildThreadMap) {
             for (ITmfTrace trace : getTracesToBuild(viewTrace)) {
@@ -2237,6 +2222,42 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
         }
     }
 
+    /**
+     * Method to reset the view internal data for a given trace.
+     *
+     * When overriding this method make sure to call the super
+     * implementation.
+     *
+     * @param viewTrace
+     *            trace to reset the view for.
+     * @since 2.0
+     */
+    protected void resetView(ITmfTrace viewTrace) {
+        if (viewTrace == null) {
+            return;
+        }
+        synchronized (fBuildThreadMap) {
+            for (ITmfTrace trace : getTracesToBuild(viewTrace)) {
+                BuildThread buildThread = fBuildThreadMap.remove(trace);
+                if (buildThread != null) {
+                    buildThread.cancel();
+                }
+            }
+        }
+        synchronized (fEntryListMap) {
+            fEntryListMap.remove(viewTrace);
+        }
+        fViewContext.remove(viewTrace);
+        fFiltersMap.remove(viewTrace);
+        fMarkerEventSourcesMap.remove(viewTrace);
+        if (viewTrace == fTrace) {
+            if (fZoomThread != null) {
+                fZoomThread.cancel();
+                fZoomThread = null;
+            }
+        }
+    }
+
     private void createContextMenu() {
         TimeGraphCombo combo = getTimeGraphCombo();
         fEntryMenuManager.setRemoveAllWhenShown(true);
This page took 0.028613 seconds and 5 git commands to generate.