1 /*******************************************************************************
2 * Copyright (c) 2010 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.ui
.views
.timechart
;
17 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.colors
.ColorSettingsManager
;
18 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.TimeGraphProvider
;
19 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeEvent
;
20 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeGraphEntry
;
21 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.widgets
.TimeGraphColorScheme
;
22 import org
.eclipse
.swt
.SWT
;
23 import org
.eclipse
.swt
.graphics
.Color
;
24 import org
.eclipse
.swt
.graphics
.GC
;
25 import org
.eclipse
.swt
.graphics
.Rectangle
;
26 import org
.eclipse
.swt
.widgets
.Display
;
28 public class TimeChartAnalysisProvider
extends TimeGraphProvider
{
30 private static final Color BOOKMARK_INNER_COLOR
= new Color(Display
.getDefault(), 115, 165, 224);
31 private static final Color BOOKMARK_OUTER_COLOR
= new Color(Display
.getDefault(), 2, 70, 140);
32 private static final Color SEARCH_MATCH_COLOR
= new Color(Display
.getDefault(), 177, 118, 14);
34 private int lastX
= Integer
.MIN_VALUE
;
35 private int currX
= Integer
.MIN_VALUE
;
36 private int lastPriority
;
37 private int lastBookmarkX
= Integer
.MIN_VALUE
;
40 public StateColor
getEventColor(ITimeEvent event
) {
41 return StateColor
.BLACK
;
45 public int getEventColorVal(ITimeEvent event
) {
46 int priority
= ((TimeChartEvent
) event
).getColorSettingPriority();
48 priority
= Math
.min(priority
, lastPriority
);
50 lastPriority
= priority
;
51 return ColorSettingsManager
.getColorSetting(priority
).getTickColorIndex();
55 public String
getTraceClassName(ITimeGraphEntry entry
) {
60 public String
getEventName(ITimeEvent event
, boolean upper
, boolean extInfo
) {
65 public Map
<String
, String
> getEventHoverToolTipInfo(ITimeEvent event
) {
70 public String
getStateName(StateColor color
) {
75 public void drawState(TimeGraphColorScheme colors
, ITimeEvent event
, Rectangle rect
, GC gc
, boolean selected
, boolean rectBound
, boolean timeSelected
) {
76 if (! ((TimeChartEvent
) event
).isVisible()) {
81 super.drawState(colors
, event
, rect
, gc
, selected
, rectBound
, timeSelected
);
82 if (lastBookmarkX
== rect
.x
|| ((TimeChartEvent
) event
).isBookmarked()) {
83 drawBookmark(rect
, gc
);
84 lastBookmarkX
= rect
.x
;
85 } else if (lastBookmarkX
== rect
.x
- 1) {
86 Rectangle r
= new Rectangle(lastBookmarkX
, rect
.y
, rect
.width
, rect
.height
);
89 lastBookmarkX
= Integer
.MIN_VALUE
;
91 if (((TimeChartEvent
) event
).isSearchMatch()) {
92 drawSearchMatch(rect
, gc
);
96 private void drawBookmark(Rectangle r
, GC gc
) {
97 gc
.setForeground(BOOKMARK_OUTER_COLOR
);
98 gc
.drawLine(r
.x
- 1, r
.y
- 2, r
.x
- 1, r
.y
+ 2);
99 gc
.drawLine(r
.x
+ 1, r
.y
- 2, r
.x
+ 1, r
.y
+ 2);
100 gc
.drawPoint(r
.x
, r
.y
- 2);
101 gc
.setForeground(BOOKMARK_INNER_COLOR
);
102 gc
.drawLine(r
.x
, r
.y
- 1, r
.x
, r
.y
+ 1);
103 gc
.setForeground(Display
.getDefault().getSystemColor(SWT
.COLOR_WHITE
));
104 gc
.drawPoint(r
.x
- 1, r
.y
+ 3);
105 gc
.drawPoint(r
.x
, r
.y
+ 2);
106 gc
.drawPoint(r
.x
+ 1, r
.y
+ 3);
109 private void drawSearchMatch(Rectangle r
, GC gc
) {
110 gc
.setForeground(SEARCH_MATCH_COLOR
);
111 gc
.drawPoint(r
.x
, r
.y
+ r
.height
);
112 gc
.drawLine(r
.x
- 1, r
.y
+ r
.height
+ 1, r
.x
+ 1, r
.y
+ r
.height
+ 1);
113 gc
.drawLine(r
.x
- 2, r
.y
+ r
.height
+ 2, r
.x
+ 2, r
.y
+ r
.height
+ 2);