diff --git a/tmf/org.eclipse.tracecompass.tmf.core/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.core/META-INF/MANIFEST.MF index c5da23c203..276091daa4 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/META-INF/MANIFEST.MF +++ b/tmf/org.eclipse.tracecompass.tmf.core/META-INF/MANIFEST.MF @@ -109,6 +109,7 @@ Export-Package: org.eclipse.tracecompass.internal.provisional.tmf.core.model, org.eclipse.tracecompass.tmf.core.model.annotations, org.eclipse.tracecompass.tmf.core.model.filters, org.eclipse.tracecompass.tmf.core.model.genericxy, + org.eclipse.tracecompass.tmf.core.model.object, org.eclipse.tracecompass.tmf.core.model.timegraph, org.eclipse.tracecompass.tmf.core.model.tree, org.eclipse.tracecompass.tmf.core.model.xy, diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderCapabilities.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderCapabilities.java index 4919c50c35..7e108b07cb 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderCapabilities.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderCapabilities.java @@ -15,14 +15,18 @@ /** * Interface to implement to indicate capabilities of a data provider, such as * "canCreate" and "canDelete" capability. - * + *
* "canCreate" indicates that a given data provider can create a derived data * provider. "canDelete" indicates that a given data provider can be deleted. - * + *
* Call method {@link IDataProviderFactory#getAdapter(Class)} with class * {@link ITmfDataProviderConfigurator} to obtain an instance of * {@link ITmfDataProviderConfigurator}, which implements the "canCreate" and * "canDelete" capabilities. + *
+ * "selectionRange" indicates that a given data provider can use the selection
+ * range to compute its data. Clients should include the selection range in
+ * query parameters and refresh the data when the selection range changes.
*
* @since 9.6
* @author Bernd Hufmann
@@ -43,4 +47,15 @@ public interface IDataProviderCapabilities {
* {@code false}
*/
boolean canDelete();
+
+ /**
+ * Whether the data provider uses the selection range.
+ *
+ * @return {@code true} if this data provider uses the selection range, else
+ * {@code false}
+ * @since 10.2
+ */
+ default boolean selectionRange() {
+ return false;
+ }
}
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderDescriptor.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderDescriptor.java
index 080f701989..64aa328b7c 100644
--- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderDescriptor.java
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/dataprovider/IDataProviderDescriptor.java
@@ -78,7 +78,12 @@ public enum ProviderType {
* A provider for generic xy charts with a time-less x-axis
* @since 10.1
*/
- TREE_GENERIC_XY
+ TREE_GENERIC_XY,
+ /**
+ * A provider of generic data objects
+ * @since 10.2
+ */
+ DATA
}
/**
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/DataProviderCapabilities.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/DataProviderCapabilities.java
index 80079b49e9..e332ed5857 100644
--- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/DataProviderCapabilities.java
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/DataProviderCapabilities.java
@@ -29,6 +29,7 @@ public class DataProviderCapabilities implements IDataProviderCapabilities {
private final boolean canCreate;
private final boolean canDelete;
+ private final boolean selectionRange;
/**
* Constructor
@@ -39,6 +40,7 @@ public class DataProviderCapabilities implements IDataProviderCapabilities {
public DataProviderCapabilities(Builder builder) {
canCreate = builder.canCreate;
canDelete = builder.canDelete;
+ selectionRange = builder.selectionRange;
}
@Override
@@ -51,6 +53,11 @@ public boolean canDelete() {
return canDelete;
}
+ @Override
+ public boolean selectionRange() {
+ return selectionRange;
+ }
+
@Override
@SuppressWarnings("nls")
public String toString() {
@@ -84,6 +91,7 @@ public boolean equals(@Nullable Object obj) {
public static class Builder {
private boolean canCreate = false;
private boolean canDelete = false;
+ private boolean selectionRange = false;
/**
* Sets canCreate flag
@@ -111,6 +119,20 @@ public Builder setCanDelete(boolean canDelete) {
return this;
}
+ /**
+ * Sets selectionRange flag
+ *
+ * @param selectionRange
+ * {@code true} if this data provider uses the selection
+ * range, else {@code false}
+ * @return the builder instance.
+ * @since 10.2
+ */
+ public Builder setSelectionRange(boolean selectionRange) {
+ this.selectionRange = selectionRange;
+ return this;
+ }
+
/**
* The method to construct an instance of
* {@link IDataProviderCapabilities}
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/object/IObjectDataProvider.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/object/IObjectDataProvider.java
new file mode 100644
index 0000000000..adc26f1209
--- /dev/null
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/object/IObjectDataProvider.java
@@ -0,0 +1,29 @@
+package org.eclipse.tracecompass.tmf.core.model.object;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.tracecompass.tmf.core.model.ITmfDataProvider;
+import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
+
+/**
+ * Interface for a data provider that returns a generic object as model
+ *
+ * @since 10.2
+ */
+public interface IObjectDataProvider extends ITmfDataProvider {
+
+ /**
+ * This method computes a generic object model. Then, it returns a
+ * {@link TmfModelResponse} that contains the model.
+ *
+ * @param fetchParameters
+ * Map of parameters that can be used to compute result object
+ * @param monitor
+ * A ProgressMonitor to cancel task
+ * @return A {@link TmfModelResponse} instance
+ */
+ public TmfModelResponse
+ * If the object is a partial subdivision of the full object, then the optional
+ * next and previous navigation parameter objects can be set, and later returned
+ * as query parameters to get the following or preceding subdivision.
+ *
+ * @since 10.2
+ */
+public class ObjectModel {
+
+ private final Object fObject;
+ private @Nullable Object fNext;
+ private @Nullable Object fPrevious;
+
+ /**
+ * Constructor
+ *
+ * @param object
+ * the generic object represented by this model
+ */
+ public ObjectModel(Object object) {
+ fObject = object;
+ }
+
+ /**
+ * Get the generic object represented by this model
+ *
+ * @return the object
+ */
+ public Object getObject() {
+ return fObject;
+ }
+
+ /**
+ * Get the next navigation parameter object
+ *
+ * @return the next navigation parameter object
+ */
+ public @Nullable Object getNext() {
+ return fNext;
+ }
+
+ /**
+ * Get the previous navigation parameter object
+ *
+ * @return the previous navigation parameter object
+ */
+ public @Nullable Object getPrevious() {
+ return fPrevious;
+ }
+
+ /**
+ * Set the next navigation parameter object
+ *
+ * @param next
+ * the next navigation parameter object
+ */
+ public void setNext(Object next) {
+ fNext = next;
+ }
+
+ /**
+ * Set the previous navigation parameter object
+ *
+ * @param previous
+ * the previous navigation parameter object
+ */
+ public void setPrevious(Object previous) {
+ fPrevious = previous;
+ }
+}
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/object/package-info.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/object/package-info.java
new file mode 100644
index 0000000000..136938f044
--- /dev/null
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/object/package-info.java
@@ -0,0 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2025 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License 2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+
+@org.eclipse.jdt.annotation.NonNullByDefault
+package org.eclipse.tracecompass.tmf.core.model.object;