tmf: Allow refreshing manually all ITmfTraceEditors and traces under experiment
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tue, 6 Oct 2015 21:55:14 +0000 (17:55 -0400)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Thu, 8 Oct 2015 17:25:50 +0000 (13:25 -0400)
This is a follow-up to the comments in https://git.eclipse.org/r/#/c/57465

Change-Id: Ia6e8ecc056a5c662255c35f029f72bbe1cc2785a
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/57559
Reviewed-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
tmf/org.eclipse.tracecompass.tmf.ui/plugin.xml
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/handlers/EditorInputPropertyTester.java [new file with mode: 0644]
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/handlers/RefreshTraceContentHandler.java

index b45d65a141e2304aaac05ddfd2b23e50d9caf43e..530a99bb73facca02fb7e7c7adf02cafb897fb7b 100644 (file)
                   <iterate
                         ifEmpty="false"
                         operator="and">
-                     <or>
-                        <and>
-                           <instanceof
-                                 value="org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement">
-                           </instanceof>
-                           <not>
-                              <test
-                                    forcePluginActivation="true"
-                                    property="org.eclipse.linuxtools.tmf.ui.isExperimentTrace">
-                              </test>
-                           </not>
-                        </and>
-                     </or>
-                  </iterate>
-                  <with
-                      variable="activePart">
                      <instanceof
-                           value="org.eclipse.tracecompass.tmf.ui.editors.TmfEventsEditor">
+                           value="org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement">
                      </instanceof>
-                  </with>
+                  </iterate>
+                  <and>
+                     <with
+                         variable="activePart">
+                        <instanceof
+                              value="org.eclipse.tracecompass.tmf.ui.editors.ITmfTraceEditor">
+                        </instanceof>
+                     </with>
+                     <not>
+                        <with
+                            variable="activeEditorInput">
+                           <test
+                                 property="org.eclipse.tracecompass.tmf.ui.isExperimentEditorInput">
+                           </test>
+                        </with>
+                     </not>
+                  </and>
                </or>
            </visibleWhen>
         </command>
                <iterate
                      ifEmpty="false"
                      operator="and">
-                  <or>
-                     <and>
-                        <instanceof
-                              value="org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement">
-                        </instanceof>
-                        <not>
-                           <test
-                                 forcePluginActivation="true"
-                                 property="org.eclipse.linuxtools.tmf.ui.isExperimentTrace">
-                           </test>
-                        </not>
-                     </and>
-                  </or>
-               </iterate>
-               <with
-                   variable="activePart">
                   <instanceof
-                        value="org.eclipse.tracecompass.tmf.ui.editors.TmfEventsEditor">
+                        value="org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement">
                   </instanceof>
-               </with>
+               </iterate>
+               <and>
+                  <with
+                      variable="activePart">
+                     <instanceof
+                           value="org.eclipse.tracecompass.tmf.ui.editors.ITmfTraceEditor">
+                     </instanceof>
+                  </with>
+                  <not>
+                     <with
+                         variable="activeEditorInput">
+                        <test
+                              property="org.eclipse.tracecompass.tmf.ui.isExperimentEditorInput">
+                        </test>
+                     </with>
+                  </not>
+               </and>
             </or>
          </activeWhen>
       </handler>
             properties="isExperimentTrace,hasSupplementaryFiles,traceType"
             type="org.eclipse.tracecompass.tmf.ui.project.model.TmfProjectModelElement">
       </propertyTester>
+      <propertyTester
+            class="org.eclipse.tracecompass.internal.tmf.ui.project.handlers.EditorInputPropertyTester"
+            id="org.eclipse.tracecompass.tmf.ui.editorInputPropertyTester"
+            namespace="org.eclipse.tracecompass.tmf.ui"
+            properties="isExperimentEditorInput"
+            type="org.eclipse.ui.IEditorInput">
+      </propertyTester>
    </extension>
    <extension
          point="org.eclipse.ui.navigator.linkHelper">
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/handlers/EditorInputPropertyTester.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/internal/tmf/ui/project/handlers/EditorInputPropertyTester.java
new file mode 100644 (file)
index 0000000..c063a87
--- /dev/null
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Ericsson.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.internal.tmf.ui.project.handlers;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.tracecompass.internal.tmf.ui.editors.ITmfEventsEditorConstants;
+import org.eclipse.tracecompass.tmf.core.TmfCommonConstants;
+import org.eclipse.ui.IFileEditorInput;
+
+/**
+ * Property tester for editor inputs
+ */
+public class EditorInputPropertyTester extends PropertyTester {
+
+    private static final String IS_EXPERIMENT_EDITOR_INPUT = "isExperimentEditorInput"; //$NON-NLS-1$
+
+    @Override
+    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+
+        if (IS_EXPERIMENT_EDITOR_INPUT.equals(property)) {
+            if (receiver instanceof IFileEditorInput) {
+                IFileEditorInput editorInput = (IFileEditorInput) receiver;
+                IFile file = editorInput.getFile();
+                if (file != null) {
+                    try {
+                        final String traceTypeId = file.getPersistentProperty(TmfCommonConstants.TRACETYPE);
+                        if (traceTypeId != null && ITmfEventsEditorConstants.EXPERIMENT_INPUT_TYPE_CONSTANTS.contains(traceTypeId)) {
+                            return true;
+                        }
+                    } catch (CoreException e) {
+                        // Ignore
+                    }
+                }
+            }
+        }
+        return false;
+    }
+}
index d0725f94063a9a45359efb54d57e27f4f9cc12e2..6db2b9550d2e76c9c27f013a0ffb5d6813c19c47 100644 (file)
@@ -18,13 +18,13 @@ import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
 import org.eclipse.tracecompass.tmf.core.signal.TmfTraceRangeUpdatedSignal;
 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+import org.eclipse.tracecompass.tmf.ui.editors.ITmfTraceEditor;
 import org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceElement;
-import org.eclipse.tracecompass.tmf.ui.project.model.TmfTraceFolder;
+import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 /**
@@ -41,30 +41,35 @@ public class RefreshTraceContentHandler extends AbstractHandler {
             return null;
         }
         final Iterator<Object> iterator = ((IStructuredSelection) selection).iterator();
-
+        boolean refreshed = false;
         while (iterator.hasNext()) {
             Object element = iterator.next();
             if (element instanceof TmfTraceElement) {
                 TmfTraceElement trace = (TmfTraceElement) element;
                 refreshTrace(trace);
-
-            } else if (element instanceof TmfTraceFolder) {
-                TmfTraceFolder tmfTraceFolder = (TmfTraceFolder) element;
-                for (TmfTraceElement e : tmfTraceFolder.getTraces()) {
-                    refreshTrace(e);
-                }
-            } else if (element instanceof ITmfEvent) {
-                ITmfEvent iTmfEvent = (ITmfEvent) element;
-                refreshTrace(iTmfEvent.getTrace());
+                refreshed = true;
             }
         }
+
+        if (refreshed) {
+            return null;
+        }
+
+        IEditorPart activeEditor = HandlerUtil.getActiveEditorChecked(event);
+        if (activeEditor instanceof ITmfTraceEditor) {
+            ITmfTrace trace = ((ITmfTraceEditor) activeEditor).getTrace();
+            refreshTrace(trace);
+        }
+
         return null;
     }
 
     private static void refreshTrace(TmfTraceElement t) {
         final TmfTraceElement traceElement = t.getElementUnderTraceFolder();
         ITmfTrace trace = traceElement.getTrace();
-        refreshTrace(trace);
+        if (trace != null) {
+            refreshTrace(trace);
+        }
     }
 
     private static void refreshTrace(ITmfTrace trace) {
This page took 0.042378 seconds and 5 git commands to generate.