import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
private static final String BOOKMARKS_HIDDEN_FILE = ".bookmarks"; //$NON-NLS-1$
+ /* Direct child elements */
private TmfViewsElement fViewsElement = null;
+ private TmfOnDemandAnalysesElement fOnDemandAnalysesElement = null;
+ private TmfReportsElement fReportsElement = null;
/** This trace type ID as defined in plugin.xml */
private String fTraceTypeId = null;
}
// ------------------------------------------------------------------------
- // TmfProjectModelElement
+ // ITmfProjectModelElement
// ------------------------------------------------------------------------
+ /**
+ * @since 2.3
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ TmfSignalManager.deregister(this);
+ }
+
/**
* @since 2.0
*/
protected void refreshChildren() {
/* Get the base path to put the resource to */
IPath tracePath = getResource().getFullPath();
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+ if (this.getParent() instanceof TmfExperimentElement) {
+ return;
+ }
if (fViewsElement == null) {
/* Add the "Views" node */
- IFolder viewsNodeRes = ResourcesPlugin.getWorkspace().getRoot().getFolder(tracePath.append(TmfViewsElement.PATH_ELEMENT));
+ IFolder viewsNodeRes = root.getFolder(tracePath.append(TmfViewsElement.PATH_ELEMENT));
fViewsElement = new TmfViewsElement(viewsNodeRes, this);
addChild(fViewsElement);
}
fViewsElement.refreshChildren();
+
+ if (fOnDemandAnalysesElement == null) {
+ /* Add the "On-demand Analyses" node */
+ IFolder analysesNodeRes = root.getFolder(tracePath.append(TmfOnDemandAnalysesElement.PATH_ELEMENT));
+ fOnDemandAnalysesElement = new TmfOnDemandAnalysesElement(analysesNodeRes, this);
+ addChild(fOnDemandAnalysesElement);
+ }
+ fOnDemandAnalysesElement.refreshChildren();
+
+ if (fReportsElement == null) {
+ /* Add the "Reports" node */
+ IFolder reportsNodeRes = root.getFolder(tracePath.append(TmfReportsElement.PATH_ELEMENT));
+ fReportsElement = new TmfReportsElement(reportsNodeRes, this);
+ addChild(fReportsElement);
+ }
+ fReportsElement.refreshChildren();
}
/**
return fViewsElement;
}
+ /**
+ * Get the child element "Reports".
+ *
+ * @return The Reports child element
+ * @since 2.0
+ */
+ public TmfReportsElement getChildElementReports() {
+ return fReportsElement;
+ }
+
/**
* Returns the trace type ID.
*
*/
public ITmfTrace getTrace() {
for (ITmfTrace trace : TmfTraceManager.getInstance().getOpenedTraces()) {
- if (trace.getResource().equals(getResource())) {
- return trace;
+ for (ITmfTrace t : TmfTraceManager.getTraceSetWithExperiment(trace)) {
+ if (getResource().equals(t.getResource())) {
+ return t;
+ }
}
}
return null;
*
* @return Array of analysis elements
*/
- public List<TmfAnalysisElement> getAvailableAnalysis() {
+ public List<@NonNull TmfAnalysisElement> getAvailableAnalysis() {
return getChildElementViews().getChildren().stream()
.map(elem -> (TmfAnalysisElement) elem)
.collect(Collectors.toList());
}
+ /**
+ * @since 3.0
+ * @return list of children analysis elements
+ */
+ public List<TmfAnalysisElement> getAvailableChildrenAnalyses() {
+ return Collections.EMPTY_LIST;
+ }
+
// ------------------------------------------------------------------------
// Supplementary files operations
// ------------------------------------------------------------------------