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
.StateItem
;
19 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.TimeGraphPresentationProvider
;
20 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeEvent
;
21 import org
.eclipse
.linuxtools
.tmf
.ui
.widgets
.timegraph
.model
.ITimeGraphEntry
;
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
.RGB
;
26 import org
.eclipse
.swt
.graphics
.Rectangle
;
27 import org
.eclipse
.swt
.widgets
.Display
;
28 import org
.eclipse
.ui
.themes
.ColorUtil
;
30 public class TimeChartAnalysisProvider
extends TimeGraphPresentationProvider
{
32 private static final Color BOOKMARK_INNER_COLOR
= new Color(Display
.getDefault(), 115, 165, 224);
33 private static final Color BOOKMARK_OUTER_COLOR
= new Color(Display
.getDefault(), 2, 70, 140);
34 private static final Color SEARCH_MATCH_COLOR
= new Color(Display
.getDefault(), 177, 118, 14);
36 private int lastX
= Integer
.MIN_VALUE
;
37 private int currX
= Integer
.MIN_VALUE
;
38 private int lastPriority
;
39 private int lastBookmarkX
= Integer
.MIN_VALUE
;
42 public StateItem
[] getStateTable() {
43 return new StateItem
[] {
44 new StateItem(new RGB(100, 100, 100)),
45 new StateItem(new RGB(174, 200, 124)),
46 new StateItem(ColorUtil
.blend(Display
.getDefault().getSystemColor(SWT
.COLOR_BLUE
).getRGB(), Display
.getDefault().getSystemColor(SWT
.COLOR_GRAY
).getRGB())),
47 new StateItem(new RGB(210, 150, 60)),
48 new StateItem(new RGB(242, 225, 168)),
49 new StateItem(ColorUtil
.blend(Display
.getDefault().getSystemColor(SWT
.COLOR_RED
).getRGB(), Display
.getDefault().getSystemColor(SWT
.COLOR_GRAY
).getRGB())),
50 new StateItem(new RGB(200, 200, 200)),
51 new StateItem(new RGB(35, 107, 42)),
52 new StateItem(new RGB(205,205,0)),
53 new StateItem(new RGB(205, 0, 205)),
54 new StateItem(new RGB(171, 130, 255)),
55 new StateItem(new RGB(255, 181, 197)),
56 new StateItem(new RGB(112, 219, 147)),
57 new StateItem(new RGB(198, 226, 255)),
58 new StateItem(new RGB(95, 158, 160)),
59 new StateItem(new RGB(107, 142, 35))
64 public int getEventTableIndex(ITimeEvent event
) {
65 int priority
= ((TimeChartEvent
) event
).getColorSettingPriority();
67 priority
= Math
.min(priority
, lastPriority
);
69 lastPriority
= priority
;
70 return ColorSettingsManager
.getColorSetting(priority
).getTickColorIndex();
74 public String
getTraceClassName(ITimeGraphEntry entry
) {
79 public String
getEventName(ITimeEvent event
) {
84 public Map
<String
, String
> getEventHoverToolTipInfo(ITimeEvent event
) {
89 public void postDrawEvent(ITimeEvent event
, Rectangle rect
, GC gc
) {
90 if (! ((TimeChartEvent
) event
).isVisible()) {
95 if (lastBookmarkX
== rect
.x
|| ((TimeChartEvent
) event
).isBookmarked()) {
96 drawBookmark(rect
, gc
);
97 lastBookmarkX
= rect
.x
;
98 } else if (lastBookmarkX
== rect
.x
- 1) {
99 Rectangle r
= new Rectangle(lastBookmarkX
, rect
.y
, rect
.width
, rect
.height
);
102 lastBookmarkX
= Integer
.MIN_VALUE
;
104 if (((TimeChartEvent
) event
).isSearchMatch()) {
105 drawSearchMatch(rect
, gc
);
109 private void drawBookmark(Rectangle r
, GC gc
) {
110 gc
.setForeground(BOOKMARK_OUTER_COLOR
);
111 gc
.drawLine(r
.x
- 1, r
.y
- 2, r
.x
- 1, r
.y
+ 2);
112 gc
.drawLine(r
.x
+ 1, r
.y
- 2, r
.x
+ 1, r
.y
+ 2);
113 gc
.drawPoint(r
.x
, r
.y
- 2);
114 gc
.setForeground(BOOKMARK_INNER_COLOR
);
115 gc
.drawLine(r
.x
, r
.y
- 1, r
.x
, r
.y
+ 1);
116 gc
.setForeground(Display
.getDefault().getSystemColor(SWT
.COLOR_WHITE
));
117 gc
.drawPoint(r
.x
- 1, r
.y
+ 3);
118 gc
.drawPoint(r
.x
, r
.y
+ 2);
119 gc
.drawPoint(r
.x
+ 1, r
.y
+ 3);
122 private void drawSearchMatch(Rectangle r
, GC gc
) {
123 gc
.setForeground(SEARCH_MATCH_COLOR
);
124 gc
.drawPoint(r
.x
, r
.y
+ r
.height
);
125 gc
.drawLine(r
.x
- 1, r
.y
+ r
.height
+ 1, r
.x
+ 1, r
.y
+ r
.height
+ 1);
126 gc
.drawLine(r
.x
- 2, r
.y
+ r
.height
+ 2, r
.x
+ 2, r
.y
+ r
.height
+ 2);