Search in sources :

Example 1 with MarkerEvent

use of org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent in project tracecompass by tracecompass.

the class TimeGraphViewer method getToggleBookmarkAction.

/**
 * Get the toggle bookmark action.
 *
 * @return The Action object
 * @since 2.0
 */
public Action getToggleBookmarkAction() {
    if (fToggleBookmarkAction == null) {
        fToggleBookmarkAction = new Action() {

            @Override
            public void runWithEvent(Event event) {
                IMarkerEvent selectedBookmark = getBookmarkAtSelection();
                if (selectedBookmark == null) {
                    final long time = Math.min(fSelectionBegin, fSelectionEnd);
                    final long duration = Math.max(fSelectionBegin, fSelectionEnd) - time;
                    final AddBookmarkDialog dialog = new AddBookmarkDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), null);
                    if (dialog.open() == Window.OK) {
                        final String label = dialog.getValue();
                        final RGBA rgba = dialog.getColorValue();
                        IMarkerEvent bookmark = new MarkerEvent(null, time, duration, IMarkerEvent.BOOKMARKS, rgba, label, true);
                        fBookmarks.add(bookmark);
                        updateMarkerList();
                        updateMarkerActions();
                        getControl().redraw();
                        fireBookmarkAdded(bookmark);
                    }
                } else {
                    fBookmarks.remove(selectedBookmark);
                    updateMarkerList();
                    updateMarkerActions();
                    getControl().redraw();
                    fireBookmarkRemoved(selectedBookmark);
                }
            }
        };
        fToggleBookmarkAction.setText(Messages.TmfTimeGraphViewer_BookmarkActionAddText);
        fToggleBookmarkAction.setToolTipText(Messages.TmfTimeGraphViewer_BookmarkActionAddText);
        fToggleBookmarkAction.setImageDescriptor(ADD_BOOKMARK);
    }
    return fToggleBookmarkAction;
}
Also used : AddBookmarkDialog(org.eclipse.tracecompass.internal.tmf.ui.dialogs.AddBookmarkDialog) IAction(org.eclipse.jface.action.IAction) ShowFilterDialogAction(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.dialogs.ShowFilterDialogAction) Action(org.eclipse.jface.action.Action) RGBA(org.eclipse.swt.graphics.RGBA) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) MarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) PaintEvent(org.eclipse.swt.events.PaintEvent) KeyEvent(org.eclipse.swt.events.KeyEvent) ITimeEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent) ILinkEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ILinkEvent) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) MarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent) Event(org.eclipse.swt.widgets.Event) ControlEvent(org.eclipse.swt.events.ControlEvent) SelectionEvent(org.eclipse.swt.events.SelectionEvent) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent)

Example 2 with MarkerEvent

use of org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent in project tracecompass by tracecompass.

the class ResourcesPresentationProvider method getSpecificEventStyle.

@Override
public Map<String, Object> getSpecificEventStyle(ITimeEvent event) {
    Map<String, Object> map = new HashMap<>(super.getSpecificEventStyle(event));
    if (isType(event.getEntry(), Type.CURRENT_THREAD) && event instanceof TimeEvent) {
        if (event instanceof MarkerEvent) {
            TimeEvent timeEvent = (TimeEvent) event;
            OutputElementStyle style = timeEvent.getModel().getStyle();
            if (style != null) {
                return style.getStyleValues();
            }
        } else {
            int threadEventValue = ((TimeEvent) event).getValue();
            RGBAColor color = PALETTE.get(Math.floorMod(threadEventValue + COLOR_DIFFERENCIATION_FACTOR, NUM_COLORS));
            map.put(StyleProperties.BACKGROUND_COLOR, ColorUtils.toHexColor(color.getRed(), color.getGreen(), color.getBlue()));
            map.put(StyleProperties.STYLE_NAME, String.valueOf(threadEventValue));
        }
    } else if (event.getEntry() instanceof TimeGraphEntry && ((TimeGraphEntry) event.getEntry()).getEntryModel() instanceof ITimeGraphEntryModelWeighted) {
        ITimeGraphEntryModelWeighted model = (ITimeGraphEntryModelWeighted) ((TimeGraphEntry) event.getEntry()).getEntryModel();
        int eventValue = ((TimeEvent) event).getValue();
        map.put(StyleProperties.HEIGHT, (float) model.getWeight(eventValue));
    }
    return map;
}
Also used : OutputElementStyle(org.eclipse.tracecompass.tmf.core.model.OutputElementStyle) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ITimeGraphEntryModelWeighted(org.eclipse.tracecompass.internal.provisional.tmf.core.model.timegraph.ITimeGraphEntryModelWeighted) MarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent) RGBAColor(org.eclipse.tracecompass.tmf.core.presentation.RGBAColor) NullTimeEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.NullTimeEvent) TimeEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeEvent) ITimeEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent) TimeGraphEntry(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry) ITimeGraphEntry(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry)

Example 3 with MarkerEvent

use of org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent in project tracecompass by tracecompass.

the class TimeGraphViewStub method getViewMarkerList.

@Override
@NonNull
protected List<IMarkerEvent> getViewMarkerList(Iterable<@NonNull TimeGraphEntry> entries, long startTime, long endTime, long resolution, @NonNull IProgressMonitor monitor) {
    ITmfTrace trace = getTrace();
    if (trace == null) {
        return Collections.emptyList();
    }
    long start = trace.getStartTime().toNanos();
    return Arrays.<IMarkerEvent>asList((IMarkerEvent) new MarkerEvent(fHead1, 120 + start, 50, MARKER_GROUP, new RGBA(33, 33, 33, 33), "Wind", true), (IMarkerEvent) new MarkerEvent(fRow4, 20 + start, 60, MARKER_GROUP, new RGBA(22, 33, 44, 22), "Speed", false), (IMarkerEvent) new MarkerEvent(fRow2, 20 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", true, 0), (IMarkerEvent) new MarkerEvent(fRow2, 26 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", false, 1), (IMarkerEvent) new MarkerEvent(fRow2, 32 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", true, 2), (IMarkerEvent) new MarkerEvent(fRow2, 38 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", false, 3), (IMarkerEvent) new MarkerEvent(fRow2, 44 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", true, 4), (IMarkerEvent) new MarkerEvent(fRow2, 50 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", false, 5), (IMarkerEvent) new MarkerEvent(fRow2, 56 + start, 0, MARKER_GROUP, new RGBA(160, 170, 200, 80), "", true, 6));
}
Also used : ITmfTrace(org.eclipse.tracecompass.tmf.core.trace.ITmfTrace) RGBA(org.eclipse.swt.graphics.RGBA) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) MarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) NonNull(org.eclipse.jdt.annotation.NonNull)

Example 4 with MarkerEvent

use of org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent in project tracecompass by tracecompass.

the class TimeGraphViewWithTooManyMarkersStub method getViewMarkerList.

@Override
@NonNull
protected List<IMarkerEvent> getViewMarkerList(Iterable<@NonNull TimeGraphEntry> entries, long startTime, long endTime, long resolution, @NonNull IProgressMonitor monitor) {
    ITmfTrace trace = getTrace();
    if (trace == null) {
        return Collections.emptyList();
    }
    RGBA fromInt = new RGBA(0, 0, 0, 255);
    long start = trace.getStartTime().toNanos();
    List<IMarkerEvent> markers = new ArrayList<>();
    for (TimeGraphEntry row : entries) {
        int rowId = fEntries.indexOf(row);
        int offset = (int) (MARKER_STEP / 2 * Math.sin(rowId * Math.PI / MARKER_STEP)) + MARKER_STEP / 2;
        for (long i = 0; i < NB_MARKERS; i += MARKER_STEP) {
            long time = start + i + offset;
            if (time >= startTime && time <= endTime) {
                markers.add(new MarkerEvent(row, time, 0L, "", fromInt, "", true, (rowId / MARKER_STEP) % 7));
            }
        }
    }
    return markers;
}
Also used : ITmfTrace(org.eclipse.tracecompass.tmf.core.trace.ITmfTrace) RGBA(org.eclipse.swt.graphics.RGBA) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) MarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent) ArrayList(java.util.ArrayList) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) TimeGraphEntry(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry) NonNull(org.eclipse.jdt.annotation.NonNull)

Example 5 with MarkerEvent

use of org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent in project tracecompass by tracecompass.

the class PeriodicMarkerEventSourceTest method testRollover.

/**
 * Test a marker event source with roll-over.
 */
@Test
public void testRollover() {
    IMarkerEventSource source = new PeriodicMarkerEventSource(CATEGORY, Reference.ZERO, 100L, 4, COLOR, false);
    List<IMarkerEvent> expected = Arrays.asList(new MarkerEvent(null, -100L, 0L, CATEGORY, COLOR, "3", false), new MarkerEvent(null, 0L, 0L, CATEGORY, COLOR, "0", false), new MarkerEvent(null, 100L, 0L, CATEGORY, COLOR, "1", false), new MarkerEvent(null, 200L, 0L, CATEGORY, COLOR, "2", false), new MarkerEvent(null, 300L, 0L, CATEGORY, COLOR, "3", false), new MarkerEvent(null, 400L, 0L, CATEGORY, COLOR, "0", false));
    assertMarkerListEquals(expected, source.getMarkerList(CATEGORY, 0L, 300L, 1, new NullProgressMonitor()));
}
Also used : IMarkerEventSource(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEventSource) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) PeriodicMarkerEventSource(org.eclipse.tracecompass.tmf.ui.markers.PeriodicMarkerEventSource) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) MarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent) IMarkerEvent(org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent) Test(org.junit.Test)

Aggregations

MarkerEvent (org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.MarkerEvent)18 IMarkerEvent (org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEvent)16 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)10 PeriodicMarkerEventSource (org.eclipse.tracecompass.tmf.ui.markers.PeriodicMarkerEventSource)9 IMarkerEventSource (org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.IMarkerEventSource)9 Test (org.junit.Test)9 RGBA (org.eclipse.swt.graphics.RGBA)5 ArrayList (java.util.ArrayList)4 NonNull (org.eclipse.jdt.annotation.NonNull)3 TimeGraphEntry (org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry)3 HashMap (java.util.HashMap)2 LinkedHashMap (java.util.LinkedHashMap)2 Point (org.eclipse.swt.graphics.Point)2 OutputElementStyle (org.eclipse.tracecompass.tmf.core.model.OutputElementStyle)2 ITmfTrace (org.eclipse.tracecompass.tmf.core.trace.ITmfTrace)2 ITimeEvent (org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent)2 ITimeGraphEntry (org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry)2 Collection (java.util.Collection)1 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)1 Matcher (java.util.regex.Matcher)1