Fix latest batch of null warnings
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / editors / TmfEventsEditor.java
index fba8ceb4e3e0f602357ca894cb6df8fd15c9478a..0a662bbd08395a0412665ad60ebd53bd6f0978b9 100644 (file)
@@ -15,7 +15,9 @@ package org.eclipse.tracecompass.tmf.ui.editors;
 
 import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
@@ -202,7 +204,6 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
                 TmfTraceColumnManager.saveColumnOrder(fTrace.getTraceTypeId(), fEventsTable.getColumnOrder());
             }
             fEventsTable.dispose();
-            fTraceSelected = false;
             fFile = ((TmfEditorInput) getEditorInput()).getFile();
             fTrace = ((TmfEditorInput) getEditorInput()).getTrace();
             /* change the input to a FileEditorInput to allow open handlers to find this editor */
@@ -240,10 +241,6 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
             fEventsTable.addSelectionChangedListener(this);
             fEventsTable.setTrace(fTrace, true);
             fEventsTable.refreshBookmarks(fFile);
-            if (fPendingGotoMarker != null) {
-                fEventsTable.gotoMarker(fPendingGotoMarker);
-                fPendingGotoMarker = null;
-            }
 
             /* ensure start time is set */
             final ITmfContext context = fTrace.seekEvent(0);
@@ -251,6 +248,15 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
             context.dispose();
 
             broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile));
+            if (fTraceSelected) {
+                broadcast(new TmfTraceSelectedSignal(this, fTrace));
+            }
+
+            /* go to marker after trace opened */
+            if (fPendingGotoMarker != null) {
+                fEventsTable.gotoMarker(fPendingGotoMarker);
+                fPendingGotoMarker = null;
+            }
         } else {
             fEventsTable = new TmfEventsTable(fParent, 0);
             fEventsTable.addSelectionChangedListener(this);
@@ -442,26 +448,38 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
 
     @Override
     public void resourceChanged(final IResourceChangeEvent event) {
+        final Set<@NonNull IMarker> added = new HashSet<>();
+        final Set<@NonNull IMarker> removed = new HashSet<>();
+        boolean deltaFound = false;
         for (final IMarkerDelta delta : event.findMarkerDeltas(IMarker.BOOKMARK, false)) {
             if (delta.getResource().equals(fFile)) {
                 if (delta.getKind() == IResourceDelta.REMOVED) {
-                    final IMarker bookmark = delta.getMarker();
-                    Display.getDefault().asyncExec(new Runnable() {
-                        @Override
-                        public void run() {
-                            fEventsTable.removeBookmark(bookmark);
-                        }
-                    });
-                } else if (delta.getKind() == IResourceDelta.CHANGED) {
-                    Display.getDefault().asyncExec(new Runnable() {
-                        @Override
-                        public void run() {
-                            fEventsTable.getTable().refresh();
-                        }
-                    });
+                    removed.add(delta.getMarker());
+                } else if (delta.getKind() == IResourceDelta.ADDED) {
+                    added.add(delta.getMarker());
                 }
+                /* this also covers IResourceDelta.CHANGED */
+                deltaFound = true;
             }
         }
+        if (!deltaFound) {
+            return;
+        }
+        Display.getDefault().asyncExec(new Runnable() {
+            @Override
+            public void run() {
+                if (removed.isEmpty() && added.isEmpty()) {
+                    fEventsTable.getTable().refresh();
+                } else {
+                    if (!removed.isEmpty()) {
+                        fEventsTable.removeBookmark(Iterables.toArray(removed, IMarker.class));
+                    }
+                    if (!added.isEmpty()) {
+                        fEventsTable.addBookmark(Iterables.toArray(added, IMarker.class));
+                    }
+                }
+            }
+        });
     }
 
     // ------------------------------------------------------------------------
@@ -527,22 +545,22 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
 
     @Override
     public void partActivated(IWorkbenchPart part) {
-        if (part == this && fTrace != null) {
-            if (fTraceSelected) {
+        if (part == this && !fTraceSelected) {
+            fTraceSelected = true;
+            if (fTrace == null) {
                 return;
             }
-            fTraceSelected = true;
             broadcast(new TmfTraceSelectedSignal(this, fTrace));
         }
     }
 
     @Override
     public void partBroughtToTop(IWorkbenchPart part) {
-        if (part == this && fTrace != null) {
-            if (fTraceSelected) {
+        if (part == this && !fTraceSelected) {
+            fTraceSelected = true;
+            if (fTrace == null) {
                 return;
             }
-            fTraceSelected = true;
             broadcast(new TmfTraceSelectedSignal(this, fTrace));
         }
     }
This page took 0.13439 seconds and 5 git commands to generate.