From 568928280c5c0d5711e791418c92e57ff30bf5f8 Mon Sep 17 00:00:00 2001 From: Patrick Tasse Date: Thu, 22 Nov 2012 16:02:49 -0500 Subject: Save and restore current time and range when switching traces - ITmfTrace augmented with methods to return current time and current range. - TmfTrace implements the new interface. - TmfTrace provides a method to return the default initial range offset that can be overridden. - TmfTrace initializes the time range when the first event is parsed. - TmfTrace updates the current time and range on time and range synch signals. The current time and range are only updated if they intersect with the trace range. - ControlFlowView uses the trace's current time and range when a trace is selected. - ResourcesView uses the trace's current time and range when a trace is selected. - HistogramView uses the trace's current time and range when a trace is selected. - TmfStatisticsViewer uses the trace's current range when a trace is selected. - TmfUml2SDSyncLoader uses the trace's current range when moving to a new page. - TimeChartView uses the trace's current time when a trace is selected. - Reading of the first event to initialize the start time if moved from TmfTrace.traceOpened() to TmfEventsEditor.createPartControl(), to ensure that this always occurs before any signal handler is called regardless of the order in which TmfTraceOpenedSignal is broadcast. Change-Id: I82b5222521842fcbda28892f6e07c68a05dd8e2f Reviewed-on: https://git.eclipse.org/r/8802 Tested-by: Hudson CI Reviewed-by: Alexandre Montplaisir IP-Clean: Alexandre Montplaisir Tested-by: Alexandre Montplaisir Reviewed-by: Bernd Hufmann IP-Clean: Bernd Hufmann Tested-by: Bernd Hufmann Reviewed-by: Patrick Tasse Tested-by: Patrick Tasse --- .../ui/views/controlflow/ControlFlowView.java | 27 ++++++++++------------ .../kernel/ui/views/resources/ResourcesView.java | 26 ++++++++++----------- 2 files changed, 24 insertions(+), 29 deletions(-) (limited to 'lttng/org.eclipse.linuxtools.lttng2.kernel.ui') diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java index e1b8c25a05..07867a0d55 100644 --- a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java +++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java @@ -86,11 +86,6 @@ public class ControlFlowView extends TmfView { */ public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.ui.views.controlflow"; //$NON-NLS-1$ - /** - * Initial time range - */ - private static final long INITIAL_WINDOW_OFFSET = (1L * 100 * 1000 * 1000); // .1sec - private static final String PROCESS_COLUMN = Messages.ControlFlowView_processColumn; private static final String TID_COLUMN = Messages.ControlFlowView_tidColumn; private static final String PTID_COLUMN = Messages.ControlFlowView_ptidColumn; @@ -454,7 +449,7 @@ public class ControlFlowView extends TmfView { } else { fStartTime = fTrace.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); fEndTime = fTrace.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); - refresh(INITIAL_WINDOW_OFFSET); + refresh(); } } } @@ -482,7 +477,7 @@ public class ControlFlowView extends TmfView { if (fZoomThread != null) { fZoomThread.cancel(); } - refresh(INITIAL_WINDOW_OFFSET); + refresh(); } } @@ -692,7 +687,7 @@ public class ControlFlowView extends TmfView { fEntryListMap.put(trace, (ArrayList) rootList.clone()); } if (trace == fTrace) { - refresh(INITIAL_WINDOW_OFFSET); + refresh(); } } for (ControlFlowEntry entry : rootList) { @@ -788,7 +783,7 @@ public class ControlFlowView extends TmfView { return eventList; } - private void refresh(final long windowRange) { + private void refresh() { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { @@ -807,17 +802,19 @@ public class ControlFlowView extends TmfView { fTimeGraphCombo.setInput(entries); fTimeGraphCombo.getTimeGraphViewer().setTimeBounds(fStartTime, fEndTime); - long endTime = fStartTime + windowRange; + long timestamp = fTrace == null ? 0 : fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); + long startTime = fTrace == null ? 0 : fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); + long endTime = fTrace == null ? 0 : fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); + startTime = Math.max(startTime, fStartTime); + endTime = Math.min(endTime, fEndTime); + fTimeGraphCombo.getTimeGraphViewer().setSelectedTime(timestamp, false); + fTimeGraphCombo.getTimeGraphViewer().setStartFinishTime(startTime, endTime); - if (fEndTime < endTime) { - endTime = fEndTime; - } - fTimeGraphCombo.getTimeGraphViewer().setStartFinishTime(fStartTime, endTime); for (TreeColumn column : fTimeGraphCombo.getTreeViewer().getTree().getColumns()) { column.pack(); } - startZoomThread(fStartTime, endTime); + startZoomThread(startTime, endTime); } }); } diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java index ac6fd5932d..031c6b73c8 100644 --- a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java +++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java @@ -75,9 +75,6 @@ public class ResourcesView extends TmfView { /** View ID. */ public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.ui.views.resources"; //$NON-NLS-1$ - /** Initial time range */ - private static final long INITIAL_WINDOW_OFFSET = (1L * 100 * 1000 * 1000); // .1sec - /** * Redraw state enum */ @@ -393,7 +390,7 @@ public class ResourcesView extends TmfView { } else { fStartTime = fTrace.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); fEndTime = fTrace.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); - refresh(INITIAL_WINDOW_OFFSET); + refresh(); } } } @@ -421,7 +418,7 @@ public class ResourcesView extends TmfView { if (fZoomThread != null) { fZoomThread.cancel(); } - refresh(INITIAL_WINDOW_OFFSET); + refresh(); } } @@ -540,7 +537,7 @@ public class ResourcesView extends TmfView { fEntryListMap.put(trace, (ArrayList) entryList.clone()); } if (trace == fTrace) { - refresh(INITIAL_WINDOW_OFFSET); + refresh(); } for (TraceEntry traceEntry : entryList) { if (monitor.isCanceled()) { @@ -659,7 +656,7 @@ public class ResourcesView extends TmfView { return eventList; } - private void refresh(final long windowRange) { + private void refresh() { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { @@ -679,14 +676,15 @@ public class ResourcesView extends TmfView { fTimeGraphViewer.setInput(entries); fTimeGraphViewer.setTimeBounds(fStartTime, fEndTime); - long endTime = fStartTime + windowRange; - - if (fEndTime < endTime) { - endTime = fEndTime; - } - fTimeGraphViewer.setStartFinishTime(fStartTime, endTime); + long timestamp = fTrace == null ? 0 : fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); + long startTime = fTrace == null ? 0 : fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); + long endTime = fTrace == null ? 0 : fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(); + startTime = Math.max(startTime, fStartTime); + endTime = Math.min(endTime, fEndTime); + fTimeGraphViewer.setSelectedTime(timestamp, false); + fTimeGraphViewer.setStartFinishTime(startTime, endTime); - startZoomThread(fStartTime, endTime); + startZoomThread(startTime, endTime); } } }); -- cgit v1.2.3