ss: Move plugins to Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / model / TmfAnalysisElement.java
index 0493aa1c20afa6c11696246cbd4a782836ea892a..0b479a33df930634339326caaa34297089784674 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013 École Polytechnique de Montréal
+ * Copyright (c) 2013, 2014 École Polytechnique de Montréal
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,6 +8,7 @@
  *
  * Contributors:
  *   Geneviève Bastien - Initial API and implementation
+ *   Patrick Tasse - Add support for folder elements
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.ui.project.model;
@@ -21,11 +22,13 @@ import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.viewers.StyledString.Styler;
 import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisModule;
 import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisModuleHelper;
 import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisOutput;
 import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisManager;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
+import org.eclipse.swt.graphics.TextStyle;
 import org.osgi.framework.Bundle;
 
 /**
@@ -34,9 +37,17 @@ import org.osgi.framework.Bundle;
  * @author Geneviève Bastien
  * @since 3.0
  */
-public class TmfAnalysisElement extends TmfProjectModelElement {
+public class TmfAnalysisElement extends TmfProjectModelElement implements ITmfStyledProjectModelElement {
+
+    private static final Styler ANALYSIS_CANT_EXECUTE_STYLER = new Styler() {
+        @Override
+        public void applyStyles(TextStyle textStyle) {
+            textStyle.strikeout = true;
+        }
+    };
 
     private final String fAnalysisId;
+    private boolean fCanExecute = true;
 
     /**
      * Constructor
@@ -62,6 +73,8 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
 
     @Override
     void refreshChildren() {
+        fCanExecute = true;
+
         /* Refresh the outputs of this analysis */
         Map<String, TmfAnalysisOutputElement> childrenMap = new HashMap<>();
         for (TmfAnalysisOutputElement output : getAvailableOutputs()) {
@@ -85,8 +98,8 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
          * instantiated when the trace is opened
          */
         ITmfProjectModelElement parent = getParent();
-        if (parent instanceof TmfTraceElement) {
-            ITmfTrace trace = ((TmfTraceElement) parent).getTrace();
+        if (parent instanceof TmfCommonProjectElement) {
+            ITmfTrace trace = ((TmfCommonProjectElement) parent).getTrace();
             if (trace == null) {
                 deleteOutputs();
                 return;
@@ -95,6 +108,11 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
             IAnalysisModule module = trace.getAnalysisModule(fAnalysisId);
             if (module == null) {
                 deleteOutputs();
+                /*
+                 * Trace is opened, but the analysis is null, so it does not
+                 * apply
+                 */
+                fCanExecute = false;
                 return;
             }
 
@@ -106,6 +124,7 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
                 }
                 outputElement.refreshChildren();
             }
+
         }
         /* Remove outputs that are not children of this analysis anymore */
         for (TmfAnalysisOutputElement output : childrenMap.values()) {
@@ -113,6 +132,18 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
         }
     }
 
+    // ------------------------------------------------------------------------
+    // TmfProjectModelElement
+    // ------------------------------------------------------------------------
+
+    @Override
+    public Styler getStyler() {
+        if (!fCanExecute) {
+            return ANALYSIS_CANT_EXECUTE_STYLER;
+        }
+        return null;
+    }
+
     // ------------------------------------------------------------------------
     // Operations
     // ------------------------------------------------------------------------
@@ -133,11 +164,6 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
         return outputs;
     }
 
-    @Override
-    public TmfProjectElement getProject() {
-        return getParent().getProject();
-    }
-
     /**
      * Gets the analysis id of this module
      *
@@ -155,12 +181,15 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
     public String getHelpMessage() {
         ITmfProjectModelElement parent = getParent();
 
+        ITmfTrace trace = null;
         if (parent instanceof TmfTraceElement) {
             TmfTraceElement traceElement = (TmfTraceElement) parent;
-            ITmfTrace trace = traceElement.getTrace();
+            trace = traceElement.getTrace();
             if (trace != null) {
                 IAnalysisModule module = trace.getAnalysisModule(fAnalysisId);
-                return module.getHelpText();
+                if (module != null) {
+                    return module.getHelpText(trace);
+                }
             }
         }
 
@@ -169,6 +198,10 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
             return new String();
         }
 
+        if (trace != null) {
+            return helper.getHelpText(trace);
+        }
+
         return helper.getHelpText();
     }
 
@@ -217,4 +250,5 @@ public class TmfAnalysisElement extends TmfProjectModelElement {
             TmfOpenTraceHelper.openTraceFromElement(traceElement);
         }
     }
+
 }
This page took 0.026503 seconds and 5 git commands to generate.