From af10fe0675db85fe9fda12d0d8df438b0e1c865d Mon Sep 17 00:00:00 2001 From: Patrick Tasse Date: Tue, 26 Feb 2013 14:14:39 -0500 Subject: [PATCH] Use transparent color for unknown states in ControlFlow/Resources view The TRANSPARENT value is used for unknown states (states embedded by the view in between actual states due to the sampling). When many states occur in the same pixel range, the pixel now takes the color of one of the states within the pixel range. The selected state color for a pixel can change with regards to the current widget size and time range. The tool tip information may be computed for a transparent state which does not match the visible color under the cursor. In that case the state name "(multiple)" is displayed. Change-Id: If9185f67826bdab450cecf6f70c8b25f9beda33d Signed-off-by: Patrick Tasse Reviewed-on: https://git.eclipse.org/r/10187 Reviewed-by: Bernd Hufmann IP-Clean: Bernd Hufmann Tested-by: Bernd Hufmann Tested-by: Hudson CI --- .../linuxtools/internal/lttng2/kernel/ui/Messages.java | 2 ++ .../internal/lttng2/kernel/ui/messages.properties | 2 ++ .../kernel/ui/views/controlflow/ControlFlowEvent.java | 7 ++++++- .../controlflow/ControlFlowPresentationProvider.java | 6 +++--- .../kernel/ui/views/controlflow/ControlFlowView.java | 4 ++-- .../lttng2/kernel/ui/views/resources/ResourcesEvent.java | 7 ++++++- .../views/resources/ResourcesPresentationProvider.java | 9 ++++----- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/Messages.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/Messages.java index 7c222d1a30..6ccddb13c7 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/Messages.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/Messages.java @@ -13,6 +13,7 @@ public class Messages extends NLS { public static String ControlFlowView_traceColumn; public static String ControlFlowView_stateTypeName; + public static String ControlFlowView_multipleStates; public static String ControlFlowView_nextProcessActionNameText; public static String ControlFlowView_nextProcessActionToolTipText; public static String ControlFlowView_previousProcessActionNameText; @@ -22,6 +23,7 @@ public class Messages extends NLS { public static String ControlFlowView_attributeCpuName; public static String ResourcesView_stateTypeName; + public static String ResourcesView_multipleStates; public static String ResourcesView_nextResourceActionNameText; public static String ResourcesView_nextResourceActionToolTipText; public static String ResourcesView_previousResourceActionNameText; diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/messages.properties b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/messages.properties index 5313c99b93..695a92186c 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/messages.properties +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/messages.properties @@ -5,6 +5,7 @@ ControlFlowView_processColumn=Process ControlFlowView_traceColumn=Trace ControlFlowView_stateTypeName=Process +ControlFlowView_multipleStates=(multiple) ControlFlowView_nextProcessActionNameText=Next Process ControlFlowView_nextProcessActionToolTipText=Select Next Process ControlFlowView_previousProcessActionNameText=Previous Process @@ -14,6 +15,7 @@ ControlFlowView_attributeSyscallName=System Call ControlFlowView_attributeCpuName=CPU ResourcesView_stateTypeName=Resource +ResourcesView_multipleStates=(multiple) ResourcesView_nextResourceActionNameText=Next Resource ResourcesView_nextResourceActionToolTipText=Select Next Resource ResourcesView_previousResourceActionNameText=Previous Resource diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEvent.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEvent.java index 5651b1ca5a..b84f5dd03d 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEvent.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowEvent.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Ericsson + * Copyright (c) 2012, 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 @@ -48,4 +48,9 @@ public class ControlFlowEvent extends TimeEvent { public int getStatus() { return fStatus; } + + @Override + public String toString() { + return "ControlFlowEvent start=" + fTime + " end=" + (fTime + fDuration) + " duration=" + fDuration + " status=" + fStatus; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + } } diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java index b1e0d99c0a..a7e5b754db 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Ericsson + * Copyright (c) 2012, 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 @@ -77,7 +77,7 @@ public class ControlFlowPresentationProvider extends TimeGraphPresentationProvid int status = ((ControlFlowEvent) event).getStatus(); return getMatchingState(status).ordinal(); } - return State.UNKNOWN.ordinal(); + return TRANSPARENT; } @Override @@ -86,7 +86,7 @@ public class ControlFlowPresentationProvider extends TimeGraphPresentationProvid int status = ((ControlFlowEvent) event).getStatus(); return getMatchingState(status).toString(); } - return State.UNKNOWN.toString(); + return Messages.ControlFlowView_multipleStates; } private static State getMatchingState(int status) { diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java index e4a6735316..7a9933fdc6 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Ericsson + * Copyright (c) 2012, 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 @@ -787,7 +787,7 @@ public class ControlFlowView extends TmfView { e.printStackTrace(); } if (lastEndTime != time && lastEndTime != -1) { - eventList.add(new ControlFlowEvent(entry, lastEndTime, time - lastEndTime, 0)); + eventList.add(new TimeEvent(entry, lastEndTime, time - lastEndTime)); } eventList.add(new ControlFlowEvent(entry, time, duration, status)); lastEndTime = time + duration; diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesEvent.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesEvent.java index ab7361d1e4..d8acb7d0d3 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesEvent.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesEvent.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Ericsson + * Copyright (c) 2012, 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 @@ -76,4 +76,9 @@ public class ResourcesEvent extends TimeEvent { public Type getType() { return fType; } + + @Override + public String toString() { + return "ResourcesEvent start=" + fTime + " end=" + (fTime + fDuration) + " duration=" + fDuration + " type=" + fType + " value=" + fValue; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + } } diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java index 4182a68c11..77fa8fbd7e 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012 Ericsson + * Copyright (c) 2012, 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 @@ -53,7 +53,6 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider private long fLastThreadId = -1; // used to draw the process name label only once per thread id private enum State { - UNKNOWN (new RGB(100, 100, 100)), IDLE (new RGB(200, 200, 200)), USERMODE (new RGB(0, 200, 0)), SYSCALL (new RGB(0, 0, 200)), @@ -121,10 +120,10 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider } return State.SOFT_IRQ_ACTIVE.ordinal(); } else { - return -1; // NULL + return INVISIBLE; // NULL } } - return State.UNKNOWN.ordinal(); + return TRANSPARENT; } @Override @@ -156,7 +155,7 @@ public class ResourcesPresentationProvider extends TimeGraphPresentationProvider return null; } } - return State.UNKNOWN.toString(); + return Messages.ResourcesView_multipleStates; } @Override -- 2.34.1