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;
15
import org.eclipse.linuxtools.tmf.ui.views.colors.ColorSetting;
16
import org.eclipse.linuxtools.tmf.ui.views.colors.ColorSettingsManager;
17
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;
18
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
19
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
20
import org.eclipse.swt.SWT;
21
import org.eclipse.swt.graphics.Color;
22
import org.eclipse.swt.graphics.GC;
23
import org.eclipse.swt.graphics.Rectangle;
24
import org.eclipse.swt.widgets.Display;
27
* Provider for a time chart analysis view
30
* @author Patrick Tasse
32
public class TimeChartAnalysisProvider extends TimeGraphPresentationProvider {
34
private static final Color BOOKMARK_INNER_COLOR = new Color(Display.getDefault(), 115, 165, 224);
35
private static final Color BOOKMARK_OUTER_COLOR = new Color(Display.getDefault(), 2, 70, 140);
36
private static final Color SEARCH_MATCH_COLOR = new Color(Display.getDefault(), 177, 118, 14);
38
private int lastX = Integer.MIN_VALUE;
39
private int currX = Integer.MIN_VALUE;
40
private int lastPriority;
41
private int lastBookmarkX = Integer.MIN_VALUE;
44
public StateItem[] getStateTable() {
46
ColorSetting[] settings = ColorSettingsManager.getColorSettings();
47
StateItem[] stateItems = new StateItem[settings.length];
48
for (int i = 0; i < settings.length; i++) {
49
stateItems[i] = new StateItem(settings[i].getTickColorRGB());
55
public int getStateTableIndex(ITimeEvent event) {
56
int priority = ((TimeChartEvent) event).getColorSettingPriority();
58
priority = Math.min(priority, lastPriority);
60
lastPriority = priority;
65
public void postDrawEvent(ITimeEvent event, Rectangle rect, GC gc) {
66
if (! ((TimeChartEvent) event).isVisible()) {
71
if (lastBookmarkX == rect.x || ((TimeChartEvent) event).isBookmarked()) {
72
drawBookmark(rect, gc);
73
lastBookmarkX = rect.x;
74
} else if (lastBookmarkX == rect.x - 1) {
75
Rectangle r = new Rectangle(lastBookmarkX, rect.y, rect.width, rect.height);
78
lastBookmarkX = Integer.MIN_VALUE;
80
if (((TimeChartEvent) event).isSearchMatch()) {
81
drawSearchMatch(rect, gc);
85
private void drawBookmark(Rectangle r, GC gc) {
86
gc.setForeground(BOOKMARK_OUTER_COLOR);
87
gc.drawLine(r.x - 1, r.y - 2, r.x - 1, r.y + 2);
88
gc.drawLine(r.x + 1, r.y - 2, r.x + 1, r.y + 2);
89
gc.drawPoint(r.x, r.y - 2);
90
gc.setForeground(BOOKMARK_INNER_COLOR);
91
gc.drawLine(r.x, r.y - 1, r.x, r.y + 1);
92
gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
93
gc.drawPoint(r.x - 1, r.y + 3);
94
gc.drawPoint(r.x, r.y + 2);
95
gc.drawPoint(r.x + 1, r.y + 3);
98
private void drawSearchMatch(Rectangle r, GC gc) {
99
gc.setForeground(SEARCH_MATCH_COLOR);
100
gc.drawPoint(r.x, r.y + r.height);
101
gc.drawLine(r.x - 1, r.y + r.height + 1, r.x + 1, r.y + r.height + 1);
102
gc.drawLine(r.x - 2, r.y + r.height + 2, r.x + 2, r.y + r.height + 2);
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;
15
import org.eclipse.linuxtools.tmf.ui.views.colors.ColorSetting;
16
import org.eclipse.linuxtools.tmf.ui.views.colors.ColorSettingsManager;
17
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;
18
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
19
import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
20
import org.eclipse.swt.SWT;
21
import org.eclipse.swt.graphics.Color;
22
import org.eclipse.swt.graphics.GC;
23
import org.eclipse.swt.graphics.Rectangle;
24
import org.eclipse.swt.widgets.Display;
27
* Provider for a time chart analysis view
30
* @author Patrick Tasse
32
public class TimeChartAnalysisProvider extends TimeGraphPresentationProvider {
34
private static final Color BOOKMARK_INNER_COLOR = new Color(Display.getDefault(), 115, 165, 224);
35
private static final Color BOOKMARK_OUTER_COLOR = new Color(Display.getDefault(), 2, 70, 140);
36
private static final Color SEARCH_MATCH_COLOR = new Color(Display.getDefault(), 177, 118, 14);
38
private int lastX = Integer.MIN_VALUE;
39
private int currX = Integer.MIN_VALUE;
40
private int lastPriority;
41
private int lastBookmarkX = Integer.MIN_VALUE;
44
public StateItem[] getStateTable() {
46
ColorSetting[] settings = ColorSettingsManager.getColorSettings();
47
StateItem[] stateItems = new StateItem[settings.length];
48
for (int i = 0; i < settings.length; i++) {
49
stateItems[i] = new StateItem(settings[i].getTickColorRGB());
55
public int getStateTableIndex(ITimeEvent event) {
56
int priority = ((TimeChartEvent) event).getColorSettingPriority();
58
priority = Math.min(priority, lastPriority);
60
lastPriority = priority;
65
public void postDrawEvent(ITimeEvent event, Rectangle rect, GC gc) {
66
if (! ((TimeChartEvent) event).isVisible()) {
71
if (lastBookmarkX == rect.x || ((TimeChartEvent) event).isBookmarked()) {
72
drawBookmark(rect, gc);
73
lastBookmarkX = rect.x;
74
} else if (lastBookmarkX == rect.x - 1) {
75
Rectangle r = new Rectangle(lastBookmarkX, rect.y, rect.width, rect.height);
78
lastBookmarkX = Integer.MIN_VALUE;
80
if (((TimeChartEvent) event).isSearchMatch()) {
81
drawSearchMatch(rect, gc);
85
private static void drawBookmark(Rectangle r, GC gc) {
86
gc.setForeground(BOOKMARK_OUTER_COLOR);
87
gc.drawLine(r.x - 1, r.y - 2, r.x - 1, r.y + 2);
88
gc.drawLine(r.x + 1, r.y - 2, r.x + 1, r.y + 2);
89
gc.drawPoint(r.x, r.y - 2);
90
gc.setForeground(BOOKMARK_INNER_COLOR);
91
gc.drawLine(r.x, r.y - 1, r.x, r.y + 1);
92
gc.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
93
gc.drawPoint(r.x - 1, r.y + 3);
94
gc.drawPoint(r.x, r.y + 2);
95
gc.drawPoint(r.x + 1, r.y + 3);
98
private static void drawSearchMatch(Rectangle r, GC gc) {
99
gc.setForeground(SEARCH_MATCH_COLOR);
100
gc.drawPoint(r.x, r.y + r.height);
101
gc.drawLine(r.x - 1, r.y + r.height + 1, r.x + 1, r.y + r.height + 1);
102
gc.drawLine(r.x - 2, r.y + r.height + 2, r.x + 2, r.y + r.height + 2);