Search in sources :

Example 21 with ISegment

use of org.eclipse.tracecompass.segmentstore.core.ISegment in project tracecompass by tracecompass.

the class AbstractSegmentStoreTableViewer method appendToTablePopupMenu.

@Override
protected void appendToTablePopupMenu(IMenuManager manager, IStructuredSelection sel) {
    final ISegment segment = (ISegment) sel.getFirstElement();
    if (segment != null) {
        IAction gotoStartTime = new Action(Messages.SegmentStoreTableViewer_goToStartEvent) {

            @Override
            public void run() {
                broadcast(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, TmfTimestamp.fromNanos(segment.getStart()), TmfTimestamp.fromNanos(segment.getStart()), fTrace));
            }
        };
        IAction gotoEndTime = new Action(Messages.SegmentStoreTableViewer_goToEndEvent) {

            @Override
            public void run() {
                broadcast(new TmfSelectionRangeUpdatedSignal(AbstractSegmentStoreTableViewer.this, TmfTimestamp.fromNanos(segment.getEnd()), TmfTimestamp.fromNanos(segment.getEnd()), fTrace));
            }
        };
        manager.add(gotoStartTime);
        manager.add(gotoEndTime);
        if (segment instanceof ITmfSourceLookup) {
            IContributionItem openCallsiteAction = OpenSourceCodeAction.create(Messages.SegmentStoreTableViewer_lookup, (ITmfSourceLookup) segment, getTableViewer().getTable().getShell());
            if (openCallsiteAction != null) {
                manager.add(openCallsiteAction);
            }
        }
    }
}
Also used : IAction(org.eclipse.jface.action.IAction) Action(org.eclipse.jface.action.Action) OpenSourceCodeAction(org.eclipse.tracecompass.tmf.ui.actions.OpenSourceCodeAction) IAction(org.eclipse.jface.action.IAction) TmfSelectionRangeUpdatedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal) IContributionItem(org.eclipse.jface.action.IContributionItem) ITmfSourceLookup(org.eclipse.tracecompass.tmf.core.event.lookup.ITmfSourceLookup) ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment)

Example 22 with ISegment

use of org.eclipse.tracecompass.segmentstore.core.ISegment in project tracecompass by tracecompass.

the class AbstractSegmentStoreTableViewer method setData.

/**
 * Set the data into the viewer. It will update the model. If the provider
 * is an analysis, the analysis will be scheduled.
 *
 * @param provider
 *            segment store provider
 */
public synchronized void setData(@Nullable ISegmentStoreProvider provider) {
    // Set the current segment store provider
    fSegmentProvider = provider;
    if (provider == null) {
        updateModel(null);
        return;
    }
    createProviderColumns();
    /*
         * If the listener is null then the table is updated from another viewer.
         * Otherwise this class is responsible to load the trace.
         */
    SegmentStoreProviderProgressListener listener = fListener;
    if (listener == null) {
        return;
    }
    ISegmentStore<ISegment> segStore = provider.getSegmentStore();
    // If results are not null, then the segment of the provider is ready
    // and model can be updated
    // FIXME Filtering should be done at the data provider level
    Map<@NonNull Integer, @NonNull Predicate<@NonNull Multimap<@NonNull String, @NonNull Object>>> predicates = generateRegexPredicate();
    Predicate<ISegment> predicate = (segment) -> {
        // Get the filter external input data
        Multimap<@NonNull String, @NonNull Object> input = ISegmentStoreProvider.getFilterInput(provider, segment);
        /*
             * Test each predicates and set the status of the property
             * associated to the predicate
             */
        boolean activateProperty = false;
        for (Map.Entry<Integer, Predicate<Multimap<String, Object>>> mapEntry : predicates.entrySet()) {
            Integer property = Objects.requireNonNull(mapEntry.getKey());
            Predicate<Multimap<String, Object>> value = Objects.requireNonNull(mapEntry.getValue());
            if (property == CoreFilterProperty.DIMMED || property == CoreFilterProperty.EXCLUDE) {
                boolean status = value.test(input);
                activateProperty |= status;
            }
        }
        return activateProperty;
    };
    if (segStore != null) {
        // Cancel the current filtering job
        Job job = fFilteringJob;
        if (job != null) {
            job.cancel();
        }
        if (predicates.isEmpty()) {
            updateModel(segStore);
            return;
        }
        job = new Job(Messages.SegmentStoreTableViewer_FilteringData) {

            @Override
            protected IStatus run(@Nullable IProgressMonitor monitor) {
                try (ScopeLog log = new ScopeLog(LOGGER, Level.FINE, "SegmentStoreTable:Filtering")) {
                    // $NON-NLS-1$
                    SubMonitor subMonitor = SubMonitor.convert(monitor);
                    ISegmentStore<ISegment> filteredStore = new ArrayListStore<>();
                    for (ISegment segment : segStore) {
                        if (subMonitor.isCanceled()) {
                            return Status.CANCEL_STATUS;
                        }
                        if (predicate.test(segment)) {
                            filteredStore.add(segment);
                        }
                    }
                    if (subMonitor.isCanceled()) {
                        return Status.CANCEL_STATUS;
                    }
                    updateModel(filteredStore);
                    return Status.OK_STATUS;
                }
            }
        };
        fFilteringJob = job;
        job.schedule();
        return;
    }
    // If results are null, then add completion listener and if the provider
    // is an analysis, run the analysis
    updateModel(null);
    provider.addListener(listener);
    if (provider instanceof IAnalysisModule) {
        ((IAnalysisModule) provider).schedule();
    }
}
Also used : TmfTraceOpenedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal) Format(java.text.Format) TmfTimestamp(org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp) TableViewer(org.eclipse.jface.viewers.TableViewer) IAction(org.eclipse.jface.action.IAction) TableColumn(org.eclipse.swt.widgets.TableColumn) TmfTraceClosedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal) TmfSelectionRangeUpdatedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal) IStatus(org.eclipse.core.runtime.IStatus) HashMultimap(com.google.common.collect.HashMultimap) Nullable(org.eclipse.jdt.annotation.Nullable) Map(java.util.Map) TmfStrings(org.eclipse.tracecompass.tmf.core.TmfStrings) ArrayListStore(org.eclipse.tracecompass.internal.segmentstore.core.arraylist.ArrayListStore) TmfTraceManager(org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager) TmfFilterAppliedSignal(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filters.TmfFilterAppliedSignal) TmfTraceSelectedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfTraceSelectedSignal) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ISegmentStore(org.eclipse.tracecompass.segmentstore.core.ISegmentStore) TmfSignalHandler(org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler) ITmfTrace(org.eclipse.tracecompass.tmf.core.trace.ITmfTrace) ImmutableSet(com.google.common.collect.ImmutableSet) ISegmentAspect(org.eclipse.tracecompass.tmf.core.segment.ISegmentAspect) Predicate(java.util.function.Predicate) Collection(java.util.Collection) Set(java.util.Set) Status(org.eclipse.core.runtime.Status) Display(org.eclipse.swt.widgets.Display) Logger(java.util.logging.Logger) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) TraceCompassLog(org.eclipse.tracecompass.common.core.log.TraceCompassLog) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) Objects(java.util.Objects) ITmfTimestamp(org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp) SWT(org.eclipse.swt.SWT) Entry(java.util.Map.Entry) ISelection(org.eclipse.jface.viewers.ISelection) ScopeLog(org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.ScopeLog) Builder(com.google.common.collect.ImmutableMultimap.Builder) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) TmfSignalManager(org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager) NonNull(org.eclipse.jdt.annotation.NonNull) TmfTimestampFormat(org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat) Activator(org.eclipse.tracecompass.internal.analysis.timing.ui.Activator) SubMonitor(org.eclipse.core.runtime.SubMonitor) HashMap(java.util.HashMap) ITmfSourceLookup(org.eclipse.tracecompass.tmf.core.event.lookup.ITmfSourceLookup) Table(org.eclipse.swt.widgets.Table) Multimap(com.google.common.collect.Multimap) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) Event(org.eclipse.swt.widgets.Event) SegmentStoreContentProvider(org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table.SegmentStoreContentProvider) Level(java.util.logging.Level) NonNullUtils(org.eclipse.tracecompass.common.core.NonNullUtils) TraceCompassLogUtils(org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils) TmfDataModelSelectedSignal(org.eclipse.tracecompass.tmf.core.signal.TmfDataModelSelectedSignal) TmfSimpleTableViewer(org.eclipse.tracecompass.tmf.ui.viewers.table.TmfSimpleTableViewer) ISegmentStoreProvider(org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider) Messages(org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table.Messages) Listener(org.eclipse.swt.widgets.Listener) IAnalysisModule(org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule) TraceCompassFilter(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filters.TraceCompassFilter) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) IAnalysisProgressListener(org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener) Job(org.eclipse.core.runtime.jobs.Job) IFilterStrings(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filter.parser.IFilterStrings) IElementResolver(org.eclipse.tracecompass.tmf.core.model.timegraph.IElementResolver) DecimalFormat(java.text.DecimalFormat) FilterCu(org.eclipse.tracecompass.internal.provisional.tmf.core.model.filter.parser.FilterCu) Action(org.eclipse.jface.action.Action) OpenSourceCodeAction(org.eclipse.tracecompass.tmf.ui.actions.OpenSourceCodeAction) IMenuManager(org.eclipse.jface.action.IMenuManager) IContributionItem(org.eclipse.jface.action.IContributionItem) SelectionEvent(org.eclipse.swt.events.SelectionEvent) VisibleForTesting(com.google.common.annotations.VisibleForTesting) ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) CoreFilterProperty(org.eclipse.tracecompass.tmf.core.model.CoreFilterProperty) Collections(java.util.Collections) IStatus(org.eclipse.core.runtime.IStatus) SubMonitor(org.eclipse.core.runtime.SubMonitor) ISegmentStore(org.eclipse.tracecompass.segmentstore.core.ISegmentStore) Predicate(java.util.function.Predicate) HashMultimap(com.google.common.collect.HashMultimap) Multimap(com.google.common.collect.Multimap) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) Entry(java.util.Map.Entry) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) NonNull(org.eclipse.jdt.annotation.NonNull) IAnalysisModule(org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule) ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) Job(org.eclipse.core.runtime.jobs.Job) ScopeLog(org.eclipse.tracecompass.common.core.log.TraceCompassLogUtils.ScopeLog)

Example 23 with ISegment

use of org.eclipse.tracecompass.segmentstore.core.ISegment in project tracecompass by tracecompass.

the class SegmentStoreContentProvider method setSortOrder.

@Override
public void setSortOrder(@Nullable Comparator<?> comparator) {
    SegmentStoreWithRange<?> store = fStore;
    final TableViewer tableViewer = fTableViewer;
    if (comparator == null || store == null || tableViewer == null) {
        return;
    }
    @SuppressWarnings("unchecked") Comparator<ISegment> comp = (Comparator<ISegment>) comparator;
    fComparator = comp;
    store.setComparator(comp);
    tableViewer.refresh();
}
Also used : ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) TableViewer(org.eclipse.jface.viewers.TableViewer) Comparator(java.util.Comparator)

Example 24 with ISegment

use of org.eclipse.tracecompass.segmentstore.core.ISegment in project tracecompass by tracecompass.

the class SegmentStoreContentProvider method updateElement.

@Override
public void updateElement(int index) {
    final TableViewer tableViewer = fTableViewer;
    SegmentStoreWithRange<?> store = fStore;
    if (tableViewer == null || store == null) {
        return;
    }
    ISegment element = store.getElement(index);
    if (element != null) {
        tableViewer.replace(element, index);
    }
}
Also used : ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) TableViewer(org.eclipse.jface.viewers.TableViewer)

Example 25 with ISegment

use of org.eclipse.tracecompass.segmentstore.core.ISegment in project tracecompass by tracecompass.

the class AbstractTestSegmentStore method testContains.

/**
 * Test the contains() method.
 */
@Test
public void testContains() {
    ISegment otherSegment = new BasicSegment(0, 20);
    assertTrue(fSegmentStore.contains(SEGMENT_2_6));
    assertTrue(fSegmentStore.contains(SEGMENT_4_8));
    assertFalse(fSegmentStore.contains(otherSegment));
}
Also used : BasicSegment(org.eclipse.tracecompass.segmentstore.core.BasicSegment) ISegment(org.eclipse.tracecompass.segmentstore.core.ISegment) Test(org.junit.Test)

Aggregations

ISegment (org.eclipse.tracecompass.segmentstore.core.ISegment)51 Test (org.junit.Test)22 NonNull (org.eclipse.jdt.annotation.NonNull)7 Nullable (org.eclipse.jdt.annotation.Nullable)7 SWTBotTable (org.eclipse.swtbot.swt.finder.widgets.SWTBotTable)7 ISegmentStoreProvider (org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider)7 ArrayList (java.util.ArrayList)6 HashMap (java.util.HashMap)6 IAnalysisModule (org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule)6 ITmfTrace (org.eclipse.tracecompass.tmf.core.trace.ITmfTrace)5 Map (java.util.Map)4 Predicate (java.util.function.Predicate)4 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)4 IStatistics (org.eclipse.tracecompass.analysis.timing.core.statistics.IStatistics)4 BasicSegment (org.eclipse.tracecompass.segmentstore.core.BasicSegment)4 ISegmentStore (org.eclipse.tracecompass.segmentstore.core.ISegmentStore)4 Objects (java.util.Objects)3 TableViewer (org.eclipse.jface.viewers.TableViewer)3 Performance (org.eclipse.test.performance.Performance)3 PerformanceMeter (org.eclipse.test.performance.PerformanceMeter)3