<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">
--- /dev/null
+/*******************************************************************************
+ * 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;
+ }
+}
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;
/**
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) {