tmf: Update copyright headers in tmf.ui
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / editors / TmfEventsEditor.java
index bb2d1e2e13057435031e960041da895874581fc9..d1e10d09486f2ed419b7c1f4bab4226a09902c8d 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010 Ericsson
+ * Copyright (c) 2010, 2013 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -49,6 +49,7 @@ import org.eclipse.linuxtools.tmf.core.signal.TmfTimestampFormatUpdateSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceClosedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceOpenedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceSelectedSignal;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
 import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
@@ -93,6 +94,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
     private ITmfTrace fTrace;
     private Composite fParent;
     private ListenerList fSelectionChangedListeners = new ListenerList();
+    private boolean fTraceSelected;
 
     @Override
     public void doSave(final IProgressMonitor monitor) {
@@ -139,7 +141,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                             int cacheSize = Integer.MAX_VALUE;
                             final ITmfTrace[] traces = new ITmfTrace[nbTraces];
                             for (int i = 0; i < nbTraces; i++) {
-                                final TmfTraceElement traceElement = traceEntries.get(i);
+                                final TmfTraceElement traceElement = traceEntries.get(i).getElementUnderTraceFolder();
                                 final ITmfTrace trace = traceElement.instantiateTrace();
                                 final ITmfEvent traceEvent = traceElement.instantiateEvent();
                                 if ((trace == null) || (traceEvent == null)) {
@@ -151,12 +153,12 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                                 try {
                                     trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());
                                 } catch (final TmfTraceException e) {
-                                    throw new PartInitException(Messages.OpenTraceHandler_NoTrace, e);
+                                    throw new PartInitException(Messages.OpenTraceHandler_InitError, e);
                                 }
                                 cacheSize = Math.min(cacheSize, trace.getCacheSize());
                                 traces[i] = trace;
                             }
-                            final TmfExperiment experiment = new TmfExperiment(ITmfEvent.class, experimentElement.getName(), traces, cacheSize);
+                            final TmfExperiment experiment = new TmfExperiment(ITmfEvent.class, experimentElement.getName(), traces, cacheSize, experimentElement.getResource());
                             experiment.setBookmarksFile(fFile);
                             fTrace = experiment;
                             break;
@@ -180,7 +182,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                             try {
                                 trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());
                             } catch (final TmfTraceException e) {
-                                throw new PartInitException(Messages.OpenTraceHandler_NoTrace, e);
+                                throw new PartInitException(Messages.OpenTraceHandler_InitError, e);
                             }
                             fTrace = trace;
                             break;
@@ -202,7 +204,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                             try {
                                 trace.initTrace(traceElement.getResource(), traceElement.getLocation().getPath(), traceEvent.getClass());
                             } catch (final TmfTraceException e) {
-                                throw new PartInitException(Messages.OpenTraceHandler_NoTrace, e);
+                                throw new PartInitException(Messages.OpenTraceHandler_InitError, e);
                             }
                             fTrace = trace;
                             break;
@@ -256,6 +258,12 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                 fEventsTable.addSelectionChangedListener(this);
                 fEventsTable.setTrace(fTrace, true);
                 fEventsTable.refreshBookmarks(fFile);
+
+                /* ensure start time is set */
+                final ITmfContext context = fTrace.seekEvent(0);
+                fTrace.getNext(context);
+                context.dispose();
+
                 broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile));
             } else {
                 fEventsTable = new TmfEventsTable(fParent, 0);
@@ -274,6 +282,12 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
             fEventsTable.addSelectionChangedListener(this);
             fEventsTable.setTrace(fTrace, true);
             fEventsTable.refreshBookmarks(fFile);
+
+            /* ensure start time is set */
+            final ITmfContext context = fTrace.seekEvent(0);
+            fTrace.getNext(context);
+            context.dispose();
+
             broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile));
         } else {
             setPartName(getEditorInput().getName());
@@ -611,6 +625,10 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
     @Override
     public void partActivated(IWorkbenchPart part) {
         if (part == this && fTrace != null) {
+            if (fTraceSelected) {
+                return;
+            }
+            fTraceSelected = true;
             broadcast(new TmfTraceSelectedSignal(this, fTrace));
         }
     }
@@ -624,6 +642,13 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
      */
     @Override
     public void partBroughtToTop(IWorkbenchPart part) {
+        if (part == this && fTrace != null) {
+            if (fTraceSelected) {
+                return;
+            }
+            fTraceSelected = true;
+            broadcast(new TmfTraceSelectedSignal(this, fTrace));
+        }
     }
 
     /*
@@ -682,8 +707,12 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
      */
     @TmfSignalHandler
     public void traceSelected(final TmfTraceSelectedSignal signal) {
-        if ((signal.getSource() != this) && signal.getTrace().equals(fTrace)) {
-            getSite().getPage().bringToTop(this);
+        if ((signal.getSource() != this)) {
+            if (signal.getTrace().equals(fTrace)) {
+                getSite().getPage().bringToTop(this);
+            } else {
+                fTraceSelected = false;
+            }
         }
     }
 
This page took 0.025756 seconds and 5 git commands to generate.