tmf: minor clean-ups for trace analysis under experiments feature
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / project / model / TmfCommonProjectElement.java
index fa86e7a705b3bb38d2ca422a6e29de4f6f3b47ac..a2818cba5b380a7edbab89707cf8f98d9ff23038 100644 (file)
@@ -21,6 +21,7 @@ import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
 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;
 
@@ -28,6 +29,7 @@ import org.eclipse.core.resources.IContainer;
 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;
@@ -71,7 +73,10 @@ public abstract class TmfCommonProjectElement extends TmfProjectModelElement {
 
     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;
@@ -97,9 +102,18 @@ public abstract class TmfCommonProjectElement extends TmfProjectModelElement {
     }
 
     // ------------------------------------------------------------------------
-    // TmfProjectModelElement
+    // ITmfProjectModelElement
     // ------------------------------------------------------------------------
 
+    /**
+     * @since 2.3
+     */
+    @Override
+    public void dispose() {
+        super.dispose();
+        TmfSignalManager.deregister(this);
+    }
+
     /**
      * @since 2.0
      */
@@ -107,14 +121,35 @@ public abstract class TmfCommonProjectElement extends TmfProjectModelElement {
     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();
     }
 
     /**
@@ -164,6 +199,16 @@ public abstract class TmfCommonProjectElement extends TmfProjectModelElement {
         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.
      *
@@ -241,8 +286,10 @@ public abstract class TmfCommonProjectElement extends TmfProjectModelElement {
      */
     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;
@@ -383,12 +430,20 @@ public abstract class TmfCommonProjectElement extends TmfProjectModelElement {
      *
      * @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
     // ------------------------------------------------------------------------
This page took 0.030082 seconds and 5 git commands to generate.