Bug 378401: Implementation of time graph widget.
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / timechart / TimeChartView.java
index 9348bfb60ffba4d1f9198b879435421310ef3e1b..77d7f0b1f1133ccdf0e3af908f49ac58a184bddc 100644 (file)
@@ -17,49 +17,48 @@ import java.util.HashMap;
 import java.util.Iterator;\r
 import java.util.Map;\r
 \r
+import org.eclipse.core.resources.IFile;\r
 import org.eclipse.core.resources.IMarker;\r
 import org.eclipse.core.resources.IMarkerDelta;\r
-import org.eclipse.core.resources.IResource;\r
 import org.eclipse.core.resources.IResourceChangeEvent;\r
 import org.eclipse.core.resources.IResourceChangeListener;\r
 import org.eclipse.core.resources.IResourceDelta;\r
 import org.eclipse.core.resources.ResourcesPlugin;\r
-import org.eclipse.linuxtools.tmf.core.event.TmfEvent;\r
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;\r
 import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;\r
-import org.eclipse.linuxtools.tmf.core.experiment.TmfExperiment;\r
 import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceSelectedSignal;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceUpdatedSignal;\r
+import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;\r
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;\r
-import org.eclipse.linuxtools.tmf.core.trace.TmfContext;\r
 import org.eclipse.linuxtools.tmf.ui.editors.ITmfTraceEditor;\r
 import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceClosedSignal;\r
 import org.eclipse.linuxtools.tmf.ui.signal.TmfTraceOpenedSignal;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.TmfViewerFactory;\r
 import org.eclipse.linuxtools.tmf.ui.viewers.events.ITmfEventsFilterListener;\r
 import org.eclipse.linuxtools.tmf.ui.viewers.events.ITmfEventsFilterProvider;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITimeAnalysisViewer;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITmfTimeScaleSelectionListener;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.ITmfTimeSelectionListener;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeScaleSelectionEvent;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeSelectionEvent;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITimeEvent;\r
-import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITmfTimeAnalysisEntry;\r
 import org.eclipse.linuxtools.tmf.ui.views.TmfView;\r
 import org.eclipse.linuxtools.tmf.ui.views.colors.ColorSetting;\r
 import org.eclipse.linuxtools.tmf.ui.views.colors.ColorSettingsManager;\r
 import org.eclipse.linuxtools.tmf.ui.views.colors.IColorSettingsListener;\r
 import org.eclipse.linuxtools.tmf.ui.views.timechart.TimeChartEvent.RankRange;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphRangeListener;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphSelectionListener;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphTimeListener;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphRangeUpdateEvent;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphSelectionEvent;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphTimeEvent;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphViewer;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.layout.GridLayout;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.ui.IEditorPart;\r
 import org.eclipse.ui.IEditorReference;\r
 \r
-public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionListener, ITmfTimeSelectionListener, IColorSettingsListener,\r
+public class TimeChartView extends TmfView implements ITimeGraphRangeListener, ITimeGraphSelectionListener, ITimeGraphTimeListener, IColorSettingsListener,\r
         IResourceChangeListener, ITmfEventsFilterListener {\r
 \r
     public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.timechart"; //$NON-NLS-1$\r
@@ -67,8 +66,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
     private static final int TIMESTAMP_SCALE = -9;\r
 \r
     private final int fDisplayWidth;\r
-    private Composite fComposite;\r
-    private ITimeAnalysisViewer fViewer;\r
+    private TimeGraphViewer fViewer;\r
     private final ArrayList<TimeChartAnalysisEntry> fTimeAnalysisEntries = new ArrayList<TimeChartAnalysisEntry>();\r
     private final Map<ITmfTrace<?>, TimeChartDecorationProvider> fDecorationProviders = new HashMap<ITmfTrace<?>, TimeChartDecorationProvider>();\r
     private ArrayList<DecorateThread> fDecorateThreads;\r
@@ -85,18 +83,11 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
 \r
     @Override\r
     public void createPartControl(Composite parent) {\r
-        fComposite = new Composite(parent, SWT.NONE);\r
-        GridLayout gl = new GridLayout();\r
-        gl.marginWidth = 0;\r
-        gl.marginHeight = 0;\r
-        fComposite.setLayout(gl);\r
-\r
-        fViewer = TmfViewerFactory.createViewer(fComposite, new TimeChartAnalysisProvider());\r
-        fViewer.groupTraces(false);\r
+        fViewer = new TimeGraphViewer(parent, SWT.NONE);\r
+        fViewer.setTimeGraphProvider(new TimeChartAnalysisProvider());\r
         fViewer.setTimeCalendarFormat(true);\r
-        fViewer.setAcceptSelectionAPIcalls(true);\r
-        fViewer.addWidgetTimeScaleSelectionListner(this);\r
-        fViewer.addWidgetSelectionListner(this);\r
+        fViewer.addRangeListener(this);\r
+        fViewer.addSelectionListener(this);\r
         fViewer.setMinimumItemWidth(1);\r
 \r
         IEditorReference[] editorReferences = getSite().getPage().getEditorReferences();\r
@@ -105,16 +96,16 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
             if (editor instanceof ITmfTraceEditor) {\r
                 ITmfTrace<?> trace = ((ITmfTraceEditor) editor).getTrace();\r
                 if (trace != null) {\r
-                    IResource resource = ((ITmfTraceEditor) editor).getResource();\r
+                    IFile bookmarksFile = ((ITmfTraceEditor) editor).getBookmarksFile();\r
                     TimeChartAnalysisEntry timeAnalysisEntry = new TimeChartAnalysisEntry(trace, fDisplayWidth * 2);\r
                     fTimeAnalysisEntries.add(timeAnalysisEntry);\r
-                    fDecorationProviders.put(trace, new TimeChartDecorationProvider(resource));\r
+                    fDecorationProviders.put(trace, new TimeChartDecorationProvider(bookmarksFile));\r
                     Thread thread = new ProcessTraceThread(timeAnalysisEntry);\r
                     thread.start();\r
                 }\r
             }\r
         }\r
-        fViewer.display(fTimeAnalysisEntries.toArray(new TimeChartAnalysisEntry[0]));\r
+        fViewer.setInput(fTimeAnalysisEntries.toArray(new TimeChartAnalysisEntry[0]));\r
 \r
         fDecorateThreads = new ArrayList<DecorateThread>();\r
         ColorSettingsManager.addColorSettingsListener(this);\r
@@ -133,7 +124,6 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
 \r
     @Override\r
     public void setFocus() {\r
-        super.setFocus();\r
         fViewer.setFocus();\r
     }\r
 \r
@@ -158,7 +148,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         if (decorationProvider == null) {\r
             return; // the trace has been closed\r
         }\r
-        TmfContext context = null;\r
+        ITmfContext context = null;\r
         // TmfTimestamp lastTimestamp = null;\r
         boolean done = false;\r
         while (!done) {\r
@@ -180,7 +170,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
                 }\r
                 while (true) {\r
                     long rank = context.getRank();\r
-                    TmfEvent event = trace.getNextEvent(context);\r
+                    ITmfEvent event = trace.readNextEvent(context);\r
                     if (event == null) {\r
                         done = true;\r
                         break;\r
@@ -214,9 +204,6 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
     }\r
 \r
     private void refreshViewer(boolean resetTimeIntervals) {\r
-        if (fComposite == null) {\r
-            return;\r
-        }\r
         synchronized (fSyncObj) {\r
             if (fRefreshBusy) {\r
                 fRefreshPending = true;\r
@@ -230,9 +217,9 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         Display.getDefault().asyncExec(new Runnable() {\r
             @Override\r
             public void run() {\r
-                if (fComposite.isDisposed())\r
+                if (fViewer.getControl().isDisposed())\r
                     return;\r
-                fViewer.display(fTimeAnalysisEntries.toArray(new TimeChartAnalysisEntry[0]));\r
+                fViewer.setInput(fTimeAnalysisEntries.toArray(new TimeChartAnalysisEntry[0]));\r
                 if (reset) {\r
                     fViewer.resetStartFinishTime();\r
                 }\r
@@ -275,7 +262,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         }\r
 \r
         public void itemizeTraceEntry(TimeChartAnalysisEntry timeAnalysisEntry) {\r
-            Iterator<ITimeEvent> iterator = timeAnalysisEntry.getTraceEventsIterator();\r
+            Iterator<ITimeEvent> iterator = timeAnalysisEntry.getTimeEventsIterator();\r
             TimeChartEvent event = null;\r
             boolean hasNext = true;\r
             while (hasNext) {\r
@@ -340,7 +327,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         private volatile boolean interrupted = false;\r
         private final TimeChartAnalysisEntry fTimeAnalysisEntry;\r
         private final TimeChartDecorationProvider fDecorationProvider;\r
-        private TmfContext fContext;\r
+        private ITmfContext fContext;\r
         private int fCount = 0;\r
 \r
         private DecorateThread(TimeChartAnalysisEntry timeAnalysisEntry) {\r
@@ -364,7 +351,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         }\r
 \r
         public void resetTraceEntry(TimeChartAnalysisEntry timeAnalysisEntry) {\r
-            Iterator<ITimeEvent> iterator = timeAnalysisEntry.getTraceEventsIterator();\r
+            Iterator<ITimeEvent> iterator = timeAnalysisEntry.getTimeEventsIterator();\r
             TimeChartEvent event = null;\r
             boolean hasNext = true;\r
             while (!interrupted && hasNext) {\r
@@ -387,7 +374,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         public void decorateTraceEntry(TimeChartAnalysisEntry timeAnalysisEntry, TimeChartEvent parentEvent) {\r
             // Set max duration high to ensure iterator does not consider\r
             // itemized events\r
-            Iterator<ITimeEvent> iterator = timeAnalysisEntry.getTraceEventsIterator(0, Long.MAX_VALUE, Long.MAX_VALUE);\r
+            Iterator<ITimeEvent> iterator = timeAnalysisEntry.getTimeEventsIterator(0, Long.MAX_VALUE, Long.MAX_VALUE);\r
             TimeChartEvent event = null;\r
             int entryPriority = ColorSettingsManager.PRIORITY_NONE;\r
             boolean entryIsBookmarked = false;\r
@@ -448,7 +435,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
                         if (interrupted)\r
                             return;\r
                         long rank = fContext.getRank();\r
-                        TmfEvent event = trace.getNextEvent(fContext);\r
+                        ITmfEvent event = trace.readNextEvent(fContext);\r
                         if (event == null) {\r
                             break;\r
                         }\r
@@ -481,15 +468,15 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
     // ------------------------------------------------------------------------\r
 \r
     @Override\r
-    public void tsfTmProcessTimeScaleEvent(TmfTimeScaleSelectionEvent event) {\r
-        fStartTime = event.getTime0();\r
-        fStopTime = event.getTime1();\r
+    public void timeRangeUpdated(TimeGraphRangeUpdateEvent event) {\r
+        fStartTime = event.getStartTime();\r
+        fStopTime = event.getEndTime();\r
         itemize(fStartTime, fStopTime);\r
     }\r
 \r
     @Override\r
-    public void tsfTmProcessSelEvent(TmfTimeSelectionEvent event) {\r
-        ITmfTimeAnalysisEntry timeAnalysisEntry = null;\r
+    public void selectionChanged(TimeGraphSelectionEvent event) {\r
+        ITimeGraphEntry timeAnalysisEntry = null;\r
         if (event.getSelection() instanceof TimeChartAnalysisEntry) {\r
             timeAnalysisEntry = (TimeChartAnalysisEntry) event.getSelection();\r
         } else if (event.getSelection() instanceof TimeChartEvent) {\r
@@ -498,7 +485,11 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         if (timeAnalysisEntry instanceof TimeChartAnalysisEntry) {\r
             broadcast(new TmfTraceSelectedSignal(this, ((TimeChartAnalysisEntry) timeAnalysisEntry).getTrace()));\r
         }\r
-        broadcast(new TmfTimeSynchSignal(this, new TmfTimestamp(event.getSelectedTime(), TIMESTAMP_SCALE)));\r
+    }\r
+\r
+    @Override\r
+    public void timeSelected(TimeGraphTimeEvent event) {\r
+        broadcast(new TmfTimeSynchSignal(this, new TmfTimestamp(event.getTime(), TIMESTAMP_SCALE)));\r
     }\r
 \r
     @Override\r
@@ -510,7 +501,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
     public void resourceChanged(IResourceChangeEvent event) {\r
         for (IMarkerDelta delta : event.findMarkerDeltas(IMarker.BOOKMARK, false)) {\r
             for (TimeChartDecorationProvider provider : fDecorationProviders.values()) {\r
-                if (delta.getResource().equals(provider.getResource())) {\r
+                if (delta.getResource().equals(provider.getBookmarksFile())) {\r
                     if (delta.getKind() == IResourceDelta.CHANGED && delta.getMarker().getAttribute(IMarker.LOCATION, -1) != -1) {\r
                         provider.refreshBookmarks();\r
                     } else if (delta.getKind() == IResourceDelta.REMOVED) {\r
@@ -545,7 +536,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         if (fTimeAnalysisEntries == null)\r
             return;\r
         final ITmfTrace<?> trace = signal.getTrace();\r
-        final IResource resource = signal.getResource();\r
+        final IFile bookmarksFile = signal.getBookmarksFile();\r
         final ITmfEventsFilterProvider eventsFilterProvider = signal.getEventsFilterProvider();\r
         TimeChartAnalysisEntry timeAnalysisEntry = null;\r
         for (int i = 0; i < fTimeAnalysisEntries.size(); i++) {\r
@@ -557,7 +548,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
         if (timeAnalysisEntry == null) {\r
             timeAnalysisEntry = new TimeChartAnalysisEntry(trace, fDisplayWidth * 2);\r
             fTimeAnalysisEntries.add(timeAnalysisEntry);\r
-            fDecorationProviders.put(trace, new TimeChartDecorationProvider(resource));\r
+            fDecorationProviders.put(trace, new TimeChartDecorationProvider(bookmarksFile));\r
             Thread thread = new ProcessTraceThread(timeAnalysisEntry);\r
             thread.start();\r
         }\r
@@ -588,7 +579,7 @@ public class TimeChartView extends TmfView implements ITmfTimeScaleSelectionList
             ITmfTrace<?> trace = signal.getTrace();\r
             for (int i = 0; i < fTimeAnalysisEntries.size(); i++) {\r
                 if (fTimeAnalysisEntries.get(i).getTrace().equals(trace)) {\r
-                    fViewer.setSelectedTrace(fTimeAnalysisEntries.get(i));\r
+                    fViewer.setSelection(fTimeAnalysisEntries.get(i));\r
                     break;\r
                 }\r
             }\r
This page took 0.029874 seconds and 5 git commands to generate.