tmf: Remove deprecated TimeGraphCombo
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / project / model / TmfTraceElement.java
index f4de2610b48d3b01438f24768272616cfb2db3ab..54c0f680551e5860167a37002ecefe8e1bd92a3c 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2015 Ericsson, École Polytechnique de Montréal
+ * Copyright (c) 2010, 2017 Ericsson, É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
@@ -35,9 +35,13 @@ import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.URIUtil;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.tracecompass.internal.tmf.ui.Activator;
 import org.eclipse.tracecompass.internal.tmf.ui.editors.ITmfEventsEditorConstants;
@@ -49,12 +53,13 @@ import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomTxtTraceDefinition
 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlEvent;
 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlTrace;
 import org.eclipse.tracecompass.tmf.core.parsers.custom.CustomXmlTraceDefinition;
+import org.eclipse.tracecompass.tmf.core.project.model.ITmfPropertiesProvider;
 import org.eclipse.tracecompass.tmf.core.project.model.TmfTraceType;
 import org.eclipse.tracecompass.tmf.core.project.model.TraceTypeHelper;
 import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory;
+import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestampFormat;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTraceProperties;
 import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
 import org.eclipse.tracecompass.tmf.ui.editors.TmfEventsEditor;
 import org.eclipse.tracecompass.tmf.ui.properties.ReadOnlyTextPropertyDescriptor;
@@ -95,6 +100,7 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     private static final String PATH = Messages.TmfTraceElement_Path;
     private static final String LOCATION = Messages.TmfTraceElement_Location;
     private static final String TRACE_TYPE = Messages.TmfTraceElement_EventType;
+    private static final String TRACE_TYPE_ID = Messages.TmfTraceElement_TraceTypeId;
     private static final String IS_LINKED_PROPERTY = Messages.TmfTraceElement_IsLinked;
     private static final String SOURCE_LOCATION = Messages.TmfTraceElement_SourceLocation;
     private static final String TIME_OFFSET = Messages.TmfTraceElement_TimeOffset;
@@ -106,6 +112,7 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     private static final ReadOnlyTextPropertyDescriptor PATH_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(PATH, PATH);
     private static final ReadOnlyTextPropertyDescriptor LOCATION_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(LOCATION, LOCATION);
     private static final ReadOnlyTextPropertyDescriptor TYPE_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(TRACE_TYPE, TRACE_TYPE);
+    private static final ReadOnlyTextPropertyDescriptor TYPE_ID_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(TRACE_TYPE_ID, TRACE_TYPE_ID);
     private static final ReadOnlyTextPropertyDescriptor IS_LINKED_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(IS_LINKED_PROPERTY, IS_LINKED_PROPERTY);
     private static final ReadOnlyTextPropertyDescriptor SOURCE_LOCATION_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(SOURCE_LOCATION, SOURCE_LOCATION);
     private static final ReadOnlyTextPropertyDescriptor TIME_OFFSET_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(TIME_OFFSET, TIME_OFFSET);
@@ -113,7 +120,7 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     private static final ReadOnlyTextPropertyDescriptor SIZE_DESCRIPTOR = new ReadOnlyTextPropertyDescriptor(SIZE, SIZE);
 
     private static final IPropertyDescriptor[] sfDescriptors = { NAME_DESCRIPTOR, PATH_DESCRIPTOR, LOCATION_DESCRIPTOR,
-            TYPE_DESCRIPTOR, IS_LINKED_DESCRIPTOR, SOURCE_LOCATION_DESCRIPTOR,
+            TYPE_DESCRIPTOR, TYPE_ID_DESCRIPTOR, IS_LINKED_DESCRIPTOR, SOURCE_LOCATION_DESCRIPTOR,
             TIME_OFFSET_DESCRIPTOR, LAST_MODIFIED_DESCRIPTOR, SIZE_DESCRIPTOR };
 
     static {
@@ -121,6 +128,7 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
         PATH_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
         LOCATION_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
         TYPE_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
+        TYPE_ID_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
         IS_LINKED_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
         SOURCE_LOCATION_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
         TIME_OFFSET_DESCRIPTOR.setCategory(RESOURCE_PROPERTIES_CATEGORY);
@@ -192,6 +200,8 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     // ------------------------------------------------------------------------
 
     private FileInfo fFileInfo;
+    private ITmfTimestamp fStartTime = null;
+    private ITmfTimestamp fEndTime = null;
 
     // ------------------------------------------------------------------------
     // Constructors
@@ -228,6 +238,26 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     // Operations
     // ------------------------------------------------------------------------
 
+    /**
+     * @since 2.0
+     */
+    @Override
+    public @NonNull Image getIcon() {
+        Image icon = super.getIcon();
+        return (icon == null ? TmfProjectModelIcons.DEFAULT_TRACE_ICON : icon);
+    }
+
+    /**
+     * @since 2.0
+     */
+    @Override
+    public String getLabelText() {
+        if (getParent() instanceof TmfExperimentElement) {
+            return getElementPath();
+        }
+        return getName();
+    }
+
     /**
      * Instantiate a <code>ITmfTrace</code> object based on the trace type and
      * the corresponding extension.
@@ -345,8 +375,12 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     @Override
     public IFile createBookmarksFile() throws CoreException {
         IFile file = getBookmarksFile();
-        if (fResource instanceof IFolder) {
-            return createBookmarksFile(getProject().getTracesFolder().getResource(), ITmfEventsEditorConstants.TRACE_EDITOR_INPUT_TYPE);
+        if (getResource() instanceof IFolder) {
+            TmfTraceFolder tracesFolder = getProject().getTracesFolder();
+            if (tracesFolder == null) {
+                throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.TmfProject_TracesFolderNotExists));
+            }
+            return createBookmarksFile(tracesFolder.getResource(), ITmfEventsEditorConstants.TRACE_EDITOR_INPUT_TYPE);
         }
         return file;
     }
@@ -360,10 +394,11 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     @Override
     public IFile getBookmarksFile() {
         IFile file = null;
-        if (fResource instanceof IFile) {
-            file = (IFile) fResource;
-        } else if (fResource instanceof IFolder) {
-            final IFolder folder = (IFolder) fResource;
+        IResource resource = getResource();
+        if (resource instanceof IFile) {
+            file = (IFile) resource;
+        } else if (resource instanceof IFolder) {
+            final IFolder folder = (IFolder) resource;
             file = folder.getFile(getName() + '_');
         }
         return file;
@@ -383,9 +418,12 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
         // If trace is under an experiment, return original trace from the
         // traces folder
         if (getParent() instanceof TmfExperimentElement) {
-            for (TmfTraceElement aTrace : getProject().getTracesFolder().getTraces()) {
-                if (aTrace.getElementPath().equals(getElementPath())) {
-                    return aTrace;
+            TmfTraceFolder tracesFolder = getProject().getTracesFolder();
+            if (tracesFolder != null) {
+                for (TmfTraceElement aTrace : tracesFolder.getTraces()) {
+                    if (aTrace.getElementPath().equals(getElementPath())) {
+                        return aTrace;
+                    }
                 }
             }
         }
@@ -430,9 +468,9 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
         for (ITmfTrace openedTrace : TmfTraceManager.getInstance().getOpenedTraces()) {
             for (ITmfTrace singleTrace : TmfTraceManager.getTraceSet(openedTrace)) {
                 if (getElementUnderTraceFolder().getResource().equals(singleTrace.getResource())) {
-                    if (singleTrace instanceof ITmfTraceProperties) {
-                        ITmfTraceProperties traceProperties = (ITmfTraceProperties) singleTrace;
-                        return traceProperties.getTraceProperties();
+                    if (singleTrace instanceof ITmfPropertiesProvider) {
+                        ITmfPropertiesProvider traceProperties = (ITmfPropertiesProvider) singleTrace;
+                        return traceProperties.getProperties();
                     }
                 }
             }
@@ -452,10 +490,7 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
                 propertyDescriptorArray[index] = descriptor;
                 index++;
             }
-            for (int i = 0; i < sfDescriptors.length; i++) {
-                propertyDescriptorArray[index] = sfDescriptors[i];
-                index++;
-            }
+            System.arraycopy(sfDescriptors, 0, propertyDescriptorArray, index, sfDescriptors.length);
             return propertyDescriptorArray;
         }
         return Arrays.copyOf(sfDescriptors, sfDescriptors.length);
@@ -527,6 +562,16 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
             return ""; //$NON-NLS-1$
         }
 
+        if (TRACE_TYPE_ID.equals(id)) {
+            if (getTraceType() != null) {
+                TraceTypeHelper helper = TmfTraceType.getTraceType(getTraceType());
+                if (helper != null) {
+                    return helper.getTraceTypeId();
+                }
+            }
+            return ""; //$NON-NLS-1$
+        }
+
         if (TIME_OFFSET.equals(id)) {
             long offset = TimestampTransformFactory.getTimestampTransform(getElementUnderTraceFolder().getResource()).transform(0);
             if (offset != 0) {
@@ -631,11 +676,13 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
         // Close experiments that contain the trace if open
         if (getParent() instanceof TmfTraceFolder) {
             TmfExperimentFolder experimentsFolder = getProject().getExperimentsFolder();
-            for (TmfExperimentElement experiment : experimentsFolder.getExperiments()) {
-                for (TmfTraceElement trace : experiment.getTraces()) {
-                    if (trace.getElementPath().equals(getElementPath())) {
-                        experiment.closeEditors();
-                        break;
+            if (experimentsFolder != null) {
+                for (TmfExperimentElement experiment : experimentsFolder.getExperiments()) {
+                    for (TmfTraceElement trace : experiment.getTraces()) {
+                        if (trace.getElementPath().equals(getElementPath())) {
+                            experiment.closeEditors();
+                            break;
+                        }
                     }
                 }
             }
@@ -665,24 +712,25 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
             }
         });
 
-        IPath path = fResource.getLocation();
+        IPath path = getResource().getLocation();
         if (path != null) {
             if (getParent() instanceof TmfTraceFolder) {
                 TmfExperimentFolder experimentFolder = getProject().getExperimentsFolder();
 
                 // Propagate the removal to traces
-                for (TmfExperimentElement experiment : experimentFolder.getExperiments()) {
-                    List<TmfTraceElement> toRemove = new LinkedList<>();
-                    for (TmfTraceElement trace : experiment.getTraces()) {
-                        if (trace.getElementPath().equals(getElementPath())) {
-                            toRemove.add(trace);
+                if (experimentFolder != null) {
+                    for (TmfExperimentElement experiment : experimentFolder.getExperiments()) {
+                        List<TmfTraceElement> toRemove = new LinkedList<>();
+                        for (TmfTraceElement trace : experiment.getTraces()) {
+                            if (trace.getElementPath().equals(getElementPath())) {
+                                toRemove.add(trace);
+                            }
+                        }
+                        for (TmfTraceElement child : toRemove) {
+                            experiment.removeTrace(child);
                         }
-                    }
-                    for (TmfTraceElement child : toRemove) {
-                        experiment.removeTrace(child);
                     }
                 }
-
                 // Delete supplementary files
                 deleteSupplementaryFolder();
 
@@ -693,7 +741,72 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
         }
 
         // Finally, delete the trace
-        fResource.delete(true, progressMonitor);
+        getResource().delete(true, progressMonitor);
+    }
+
+    /**
+     * Update the trace's start time
+     *
+     * @param startTime
+     *            updated start time for this trace
+     * @since 3.0
+     */
+    public void setStartTime(ITmfTimestamp startTime) {
+        fStartTime = startTime;
+    }
+
+    /**
+     * Getter for the trace start time
+     *
+     * @return the start time from the trace if available, or from self when
+     *         read in advance from supplementary files or from fast trace read.
+     *         Return null if completely unknown.
+     * @since 3.0
+     */
+    public ITmfTimestamp getStartTime() {
+        ITmfTrace trace = getTrace();
+        if (trace != null) {
+            setStartTime(trace.getStartTime());
+        }
+        return fStartTime;
+    }
+
+    /**
+     * Update the trace's end time
+     *
+     * @param end
+     *            updated end time for this trace
+     * @since 3.0
+     */
+    public void setEndTime(@NonNull ITmfTimestamp end) {
+        if (fEndTime == null || end.compareTo(fEndTime) > 0) {
+            fEndTime = end;
+        }
+    }
+
+    /**
+     * Getter for the trace end time
+     *
+     * @return the end time from the trace if available, or from self when read
+     *         in advance from supplementary files or from fast trace read.
+     *         Return null if completely unknown.
+     * @since 3.0
+     */
+    public ITmfTimestamp getEndTime() {
+        ITmfTrace trace = getTrace();
+        if (trace != null) {
+            setEndTime(trace.getEndTime());
+        }
+        return fEndTime;
+    }
+
+    @Override
+    public void deleteSupplementaryResources(IResource[] resources) {
+        /* Invalidate the cached trace bounds */
+        fStartTime = null;
+        fEndTime = null;
+
+        super.deleteSupplementaryResources(resources);
     }
 
 }
This page took 0.029599 seconds and 5 git commands to generate.