ctf: Fix CtfTmfLostEvent time range does not use timestamp transform
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / views / timegraph / AbstractTimeGraphView.java
index f78f241a8e37c57558365fb5c1bf410b864efb1f..68e98e42636b83c307cd8bd1171edf312572d255 100644 (file)
@@ -22,8 +22,10 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -43,6 +45,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.Separator;
@@ -672,7 +675,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
             List<IMarkerEvent> markers = new ArrayList<>(getViewMarkerList(getZoomStartTime(), getZoomEndTime(), getResolution(), getMonitor()));
             /* Refresh the trace-specific markers when zooming */
             markers.addAll(getTraceMarkerList(getZoomStartTime(), getZoomEndTime(), getResolution(), getMonitor()));
-            fTimeGraphWrapper.getTimeGraphViewer().getTimeGraphControl().setMarkers(markers);
+            fTimeGraphWrapper.getTimeGraphViewer().setMarkers(markers);
             redraw();
         }
 
@@ -1185,7 +1188,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
                             int alpha = Integer.valueOf(matcher.group(4));
                             Color color = new Color(Display.getDefault(), red, green, blue, alpha);
                             fColors.add(color);
-                            bookmarks.add(new MarkerEvent(null, Long.valueOf(time), Long.valueOf(duration), color, label, true));
+                            bookmarks.add(new MarkerEvent(null, Long.valueOf(time), Long.valueOf(duration), IMarkerEvent.BOOKMARKS, color, label, true));
                         } catch (NumberFormatException e) {
                             Activator.getDefault().logError(e.getMessage());
                         }
@@ -1285,7 +1288,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
                 if (beginTime == endTime) {
                     fTimeGraphWrapper.getTimeGraphViewer().setSelectedTime(beginTime, true);
                 } else {
-                    fTimeGraphWrapper.getTimeGraphViewer().setSelectionRange(beginTime, endTime);
+                    fTimeGraphWrapper.getTimeGraphViewer().setSelectionRange(beginTime, endTime, true);
                 }
                 synchingToTime(fTimeGraphWrapper.getTimeGraphViewer().getTime0());
             }
@@ -1436,7 +1439,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
      *            The progress monitor object
      * @return The list of events for the entry
      */
-    protected abstract @Nullable List<ITimeEvent> getEventList(@NonNull TimeGraphEntry entry,
+    protected abstract @Nullable List<@NonNull ITimeEvent> getEventList(@NonNull TimeGraphEntry entry,
             long startTime, long endTime, long resolution,
             @NonNull IProgressMonitor monitor);
 
@@ -1454,11 +1457,22 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
      *            The progress monitor object
      * @return The list of link events
      */
-    protected @Nullable List<ILinkEvent> getLinkList(long startTime, long endTime,
+    protected @Nullable List<@NonNull ILinkEvent> getLinkList(long startTime, long endTime,
             long resolution, @NonNull IProgressMonitor monitor) {
         return new ArrayList<>();
     }
 
+    /**
+     * Gets the list of view-specific marker categories. Default implementation
+     * returns an empty list.
+     *
+     * @return The list of marker categories
+     * @since 2.0
+     */
+    protected @NonNull List<String> getViewMarkerCategories() {
+        return new ArrayList<>();
+    }
+
     /**
      * Gets the list of view-specific markers for a trace in a given time range.
      * Default implementation returns an empty list.
@@ -1497,14 +1511,30 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
             long resolution, @NonNull IProgressMonitor monitor) {
         List<IMarkerEvent> markers = new ArrayList<>();
         for (IMarkerEventSource markerEventSource : getMarkerEventSources(getTrace())) {
-            if (monitor.isCanceled()) {
-                break;
+            for (String category : markerEventSource.getMarkerCategories()) {
+                if (monitor.isCanceled()) {
+                    break;
+                }
+                markers.addAll(markerEventSource.getMarkerList(checkNotNull(category), startTime, endTime, resolution, monitor));
             }
-            markers.addAll(markerEventSource.getMarkerList(startTime, endTime, resolution, monitor));
         }
         return markers;
     }
 
+    /**
+     * Get the list of current marker categories.
+     *
+     * @return The list of marker categories
+     * @since 2.0
+     */
+    private @NonNull List<String> getMarkerCategories() {
+        Set<String> categories = new HashSet<>(getViewMarkerCategories());
+        for (IMarkerEventSource markerEventSource : getMarkerEventSources(fTrace)) {
+            categories.addAll(markerEventSource.getMarkerCategories());
+        }
+        return new ArrayList<>(categories);
+    }
+
     /**
      * Gets the list of marker event sources for a given trace.
      *
@@ -1513,7 +1543,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
      * @return The list of marker event sources
      * @since 2.0
      */
-    protected @NonNull List<IMarkerEventSource> getMarkerEventSources(ITmfTrace trace) {
+    private @NonNull List<IMarkerEventSource> getMarkerEventSources(ITmfTrace trace) {
         List<IMarkerEventSource> markerEventSources = fMarkerEventSourcesMap.get(trace);
         if (markerEventSources == null) {
             markerEventSources = checkNotNull(Collections.<IMarkerEventSource>emptyList());
@@ -1551,6 +1581,8 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
                     fTimeGraphWrapper.setFilters(fFiltersMap.get(fTrace));
                     fTimeGraphWrapper.getTimeGraphViewer().setLinks(null);
                     fTimeGraphWrapper.getTimeGraphViewer().setBookmarks(refreshBookmarks(fEditorFile));
+                    fTimeGraphWrapper.getTimeGraphViewer().setMarkerCategories(getMarkerCategories());
+                    fTimeGraphWrapper.getTimeGraphViewer().setMarkers(null);
                 } else {
                     fTimeGraphWrapper.refresh();
                 }
@@ -1565,7 +1597,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
                 long endTime = fTrace == null ? SWT.DEFAULT : ctx.getWindowRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
                 startTime = (fStartTime == Long.MAX_VALUE ? SWT.DEFAULT : Math.max(startTime, fStartTime));
                 endTime = (fEndTime == Long.MIN_VALUE ? SWT.DEFAULT : Math.min(endTime, fEndTime));
-                fTimeGraphWrapper.getTimeGraphViewer().setSelectionRange(selectionBeginTime, selectionEndTime);
+                fTimeGraphWrapper.getTimeGraphViewer().setSelectionRange(selectionBeginTime, selectionEndTime, false);
                 fTimeGraphWrapper.getTimeGraphViewer().setStartFinishTime(startTime, endTime);
 
                 if (fTimeGraphWrapper instanceof TimeGraphComboWrapper && !fPackDone) {
@@ -1665,6 +1697,7 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
     private void contributeToActionBars() {
         IActionBars bars = getViewSite().getActionBars();
         fillLocalToolBar(bars.getToolBarManager());
+        fillLocalMenu(bars.getMenuManager());
     }
 
     /**
@@ -1681,9 +1714,11 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
         manager.add(fTimeGraphWrapper.getTimeGraphViewer().getResetScaleAction());
         manager.add(fTimeGraphWrapper.getTimeGraphViewer().getPreviousEventAction());
         manager.add(fTimeGraphWrapper.getTimeGraphViewer().getNextEventAction());
+        manager.add(new Separator());
         manager.add(fTimeGraphWrapper.getTimeGraphViewer().getToggleBookmarkAction());
-        manager.add(fTimeGraphWrapper.getTimeGraphViewer().getPreviousBookmarkAction());
-        manager.add(fTimeGraphWrapper.getTimeGraphViewer().getNextBookmarkAction());
+        manager.add(fTimeGraphWrapper.getTimeGraphViewer().getPreviousMarkerAction());
+        manager.add(fTimeGraphWrapper.getTimeGraphViewer().getNextMarkerAction());
+        manager.add(new Separator());
         manager.add(fPreviousResourceAction);
         manager.add(fNextResourceAction);
         manager.add(fTimeGraphWrapper.getTimeGraphViewer().getZoomInAction());
@@ -1691,6 +1726,16 @@ public abstract class AbstractTimeGraphView extends TmfView implements ITmfTimeA
         manager.add(new Separator());
     }
 
+    /**
+     * Add actions to local menu manager
+     *
+     * @param manager the tool bar manager
+     * @since 2.0
+     */
+    protected void fillLocalMenu(IMenuManager manager) {
+        manager.add(fTimeGraphWrapper.getTimeGraphViewer().getMarkersMenu());
+    }
+
     /**
      * @since 1.0
      */
This page took 0.02903 seconds and 5 git commands to generate.