tmf: Remove deprecated TimeGraphCombo
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / project / model / TmfTraceElement.java
index 68170634a7ee3fd72e326a325860c4995d8dc7b2..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,7 +35,9 @@ 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;
@@ -55,6 +57,7 @@ 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.TmfTraceManager;
@@ -197,6 +200,8 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     // ------------------------------------------------------------------------
 
     private FileInfo fFileInfo;
+    private ITmfTimestamp fStartTime = null;
+    private ITmfTimestamp fEndTime = null;
 
     // ------------------------------------------------------------------------
     // Constructors
@@ -371,7 +376,11 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
     public IFile createBookmarksFile() throws CoreException {
         IFile file = getBookmarksFile();
         if (getResource() instanceof IFolder) {
-            return createBookmarksFile(getProject().getTracesFolder().getResource(), ITmfEventsEditorConstants.TRACE_EDITOR_INPUT_TYPE);
+            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;
     }
@@ -409,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;
+                    }
                 }
             }
         }
@@ -664,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;
+                        }
                     }
                 }
             }
@@ -704,18 +718,19 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
                 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();
 
@@ -729,4 +744,69 @@ public class TmfTraceElement extends TmfCommonProjectElement implements IActionF
         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.032347 seconds and 5 git commands to generate.