trace/traceanalyser/com.nokia.s60tools.traceanalyser/src/com/nokia/s60tools/traceanalyser/ui/editors/HistoryGraph.java
author Matti Laitinen <matti.t.laitinen@nokia.com>
Wed, 23 Jun 2010 13:57:56 +0300
changeset 9 14dc2103a631
permissions -rw-r--r--
TraceAnalyser 1.0.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
* Contributors:
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
* Description: 
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*/
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
package com.nokia.s60tools.traceanalyser.ui.editors;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
import java.text.SimpleDateFormat;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
import java.util.ArrayList;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
import java.util.Date;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
import org.eclipse.swt.SWT;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
import org.eclipse.swt.events.MouseEvent;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
import org.eclipse.swt.events.MouseMoveListener;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
import org.eclipse.swt.events.PaintEvent;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
import org.eclipse.swt.events.PaintListener;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
import org.eclipse.swt.graphics.Color;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
import org.eclipse.swt.graphics.GC;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
import org.eclipse.swt.graphics.Point;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
import org.eclipse.swt.layout.GridData;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
import org.eclipse.swt.widgets.Canvas;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
import org.eclipse.swt.widgets.Composite;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
import org.eclipse.swt.widgets.Display;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
import org.eclipse.ui.PlatformUI;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
import com.nokia.s60tools.traceanalyser.containers.RuleInformation;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
import com.nokia.s60tools.traceanalyser.export.RuleEvent;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
import com.nokia.s60tools.traceanalyser.export.TraceAnalyserRule;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
import com.nokia.s60tools.traceanalyser.model.Engine;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
import com.nokia.s60tools.traceanalyser.plugin.TraceAnalyserPlugin;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
 * HistoryGraph.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
 * Graph UI-component for Trace Analyser
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
public class HistoryGraph implements MouseMoveListener {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
	// Margins for each border
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
	private static final int MARGIN_LEFT = 100;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
	private static final int MARGIN_OTHERS = 40;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
	private static final int GRAPHMARGIN = 10;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
	/* RuleInformation that is drawn to screen */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
	private RuleInformation information;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
	/* TraceAnalyser engine */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
	Engine engine;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
	/* UI components */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
	private Composite composite;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
	private Canvas canvas;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
	 * HistoryGraph.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
	 * @param composite composite where components are placed.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
	 * @param information information which is drawn to screen.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
	HistoryGraph(Composite composite, RuleInformation information){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
		this.composite = composite;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
		this.information = information;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
		this.engine = TraceAnalyserPlugin.getEngine();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
	 * drawGraph.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
	 * Draws graph to screen.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
	void drawGraph(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
		if(canvas != null){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
			canvas.dispose();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
		canvas = new Canvas(composite, SWT.BORDER);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
		canvas.setLayoutData(new GridData(GridData.FILL_BOTH));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
		// Add mouse mouse listener.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
		canvas.addMouseMoveListener(this);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
		// Add paint listener
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
		canvas.addPaintListener(new PaintListener() {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
			public void paintControl(PaintEvent e) {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
				GC gc = e.gc;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
				drawBox(gc);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
				drawLimits(gc);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
				drawEvents(gc);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
			}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
		});
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
	 * redraw.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
	 * Redraws screen.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
	public void redraw(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
		canvas.redraw();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
	 * getCanvasSize.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
	 * @return size or the canvas.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
	private Point getCanvasSize(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
		Point point = canvas.getSize();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
		point.x -= 5;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
		point.y -= 5;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
		return point;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
	 * drawBox.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
	 * Draws box for graph into graphics content.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
	 * @param gc graphics content where content is drawn
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
	private void drawBox(GC gc){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
		gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
		// count start points of box
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
		int startPointX = MARGIN_LEFT - GRAPHMARGIN;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
		int startPointY = MARGIN_OTHERS - GRAPHMARGIN;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
		// Count width and height of box
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
		Point canvasSize = getCanvasSize();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
		int width = canvasSize.x - (MARGIN_LEFT + MARGIN_OTHERS - GRAPHMARGIN*2);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
		int height = canvasSize.y - (MARGIN_OTHERS*2 - GRAPHMARGIN*2);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
		// draw and fill rectangle.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
		gc.fillRectangle(startPointX, startPointY, width, height);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
		gc.drawRectangle(startPointX, startPointY, width, height);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
	 * drawEvents.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
	 * Draws all history events to screen.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
	 * @param gc graphics content where content is drawn
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
	private void drawEvents(GC gc){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
		ArrayList<RuleEvent> events = information.getEvents();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
		Point canvasSize = getCanvasSize();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
		// Count start points
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
		double sizeY = canvasSize.y - MARGIN_OTHERS * 2;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
		double sizeX = canvasSize.x - (MARGIN_LEFT + MARGIN_OTHERS);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
		int[] minAndMax = getMinAndMax();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
		int min = minAndMax[0];
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
		int max = minAndMax[1];
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
		// get difference between min and max value.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
		int difference = max - min;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
		// get multiplier for Y values from that difference.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
		double yMultiplier = sizeY / difference;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
		// get multiplier for X values from canvas size and smount of events.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
		double xMultiplier = sizeX / (events.size() - 1);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
		gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
		int[] previousValues = new int[2]; 
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
		int i = 0;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
		while(i < events.size()){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
			gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   192
			// count x-value based on what event is drawn to screen
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   193
			int xValue = (int)(i * xMultiplier);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   194
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   195
			// count y-value based on what event value is.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   196
			double yValueDouble = events.get(i).getValue() - min;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   197
			yValueDouble *= yMultiplier;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   198
			int yValue = (int)(sizeY - yValueDouble);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   199
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   200
			// add margins
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   201
			xValue += MARGIN_LEFT;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   202
			yValue += MARGIN_OTHERS;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   203
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   204
			// Draw mark on one event(currently disabled)
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   205
			//			drawMark(gc, xValue, yValue);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   206
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   207
			gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   208
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   209
			// Draw line between this and previous event.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   210
			if(i > 0 ){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   211
				gc.drawLine(xValue, yValue, previousValues[0], previousValues[1]);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   212
			}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   213
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   214
			// save value to previous value variable
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   215
			previousValues[0] = xValue;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   216
			previousValues[1] = yValue;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   217
				
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   218
			i++;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   219
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   220
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   221
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   222
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   223
	 * drawMark.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   224
	 * Draws mark of one event into given coordinate
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   225
	 * @param gc graphics content where content is drawn
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   226
	 * @param xValue x-coordinate
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   227
	 * @param yValue y-coordinate
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   228
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   229
	@SuppressWarnings("unused")
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   230
	private void drawMark(GC gc, int xValue, int yValue){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   231
		gc.fillOval(xValue - 3, yValue - 3, 6, 6);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   232
		gc.drawOval(xValue - 3, yValue - 3, 6, 6);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   233
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   234
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   235
	/*
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   236
	 * (non-Javadoc)
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   237
	 * @see org.eclipse.swt.events.MouseMoveListener#mouseMove(org.eclipse.swt.events.MouseEvent)
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   238
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   239
	public void mouseMove(MouseEvent event) {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   240
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   241
		// sets tooltip based on what is x-coordinate of mouse.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   242
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   243
		Point canvasSize = getCanvasSize();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   244
		int drawingAreaSize = canvasSize.x - (MARGIN_LEFT + MARGIN_OTHERS) ;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   245
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   246
		// Count divider for x-coordinate
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   247
		double unit = (double)drawingAreaSize / ((double)information.getEvents().size() - 1);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   248
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   249
		// If mouse pointer is over graph area
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   250
		if(event.x < (canvasSize.x - (MARGIN_OTHERS-GRAPHMARGIN)) && 
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   251
		   event.x > (MARGIN_LEFT - GRAPHMARGIN) &&
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   252
		   event.y > (MARGIN_OTHERS - GRAPHMARGIN) &&
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   253
		   event.y < (canvasSize.y - (MARGIN_OTHERS-GRAPHMARGIN)) )
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   254
		{
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   255
			// Count item's index based on x-coordinate
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   256
			double indexDouble = (event.x - MARGIN_LEFT) / unit;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   257
			indexDouble += 0.5;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   258
			int index = (int)indexDouble;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   259
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   260
			if(index > information.getEvents().size()){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   261
				index = information.getEvents().size()-1;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   262
			}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   263
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   264
			// Get time and measured value from object and set tooltip
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   265
			Date date = information.getEvents().get(index).getTime();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   266
			SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss:SSS");
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   267
			canvas.setToolTipText("Time:" + formatter.format(date) + " Value:" + Integer.toString(information.getEvents().get(index).getValue()));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   268
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   269
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   270
		else{
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   271
			canvas.setToolTipText(null);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   272
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   273
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   274
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   275
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   276
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   277
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   278
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   279
	 * dispose.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   280
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   281
	public void dispose(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   282
		canvas.dispose();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   283
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   284
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   285
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   286
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   287
	 * drawLimits.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   288
	 * Draws y-axis max and min values + 3 values between those into given graphics content.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   289
	 * @param gc graphics content where content is drawn
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   290
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   291
	private void drawLimits(GC gc) {
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   292
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   293
		// Left margin before texts
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   294
		int numberMargin = 20;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   295
		int letterSize = 12;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   296
		Point canvasSize = getCanvasSize();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   297
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   298
		int min = 0;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   299
		int max = 0;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   300
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   301
		int[] minAndMax = getMinAndMax();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   302
		min = minAndMax[0];
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   303
		max = minAndMax[1];
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   304
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   305
		// get difference between min and max value.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   306
		double difference = max - min;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   307
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   308
		// get multiplier for Y values from that difference.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   309
		double yMultiplier = (canvasSize.y - MARGIN_OTHERS * 2) / difference;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   310
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   311
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   312
		double xCoordDifference = ((double)(canvasSize.y - MARGIN_OTHERS * 2)) / 4;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   313
		double valueDifference = ((double)(difference)) / 4;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   314
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   315
		// Set colors
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   316
		gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   317
		gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   318
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   319
		// Get start values
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   320
		double yCoord = (double)MARGIN_OTHERS;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   321
		double value = (double)max;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   322
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   323
		int i = 0;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   324
		while(i < 5){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   325
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   326
			// draw value
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   327
			String printedValueText = Integer.toString((int)(value + 0.5)) + information.getRule().getUnit();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   328
			gc.drawText(printedValueText, numberMargin, (int) yCoord - letterSize);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   329
			
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   330
			// draw text
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   331
			drawLine(gc, (int)yCoord, numberMargin, Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   332
			yCoord += xCoordDifference;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   333
			value -= valueDifference;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   334
			i++;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   335
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   336
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   337
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   338
		// draw "Time ->" text into x-axis.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   339
		Point timeText = new Point(canvasSize.x / 2, canvasSize.y - MARGIN_OTHERS + 12); 
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   340
		gc.drawText("Time ->", timeText.x, timeText.y);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   341
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   342
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   343
		// draw limits into graph
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   344
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   345
		TraceAnalyserRule rule = engine.getRule(this.information.getRule().getName());
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   346
		int[] limits = rule.getLimits();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   347
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   348
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   349
		for(int item : limits){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   350
			int yValue = (int)((item - min) * yMultiplier);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   351
			yCoord = canvasSize.y - MARGIN_OTHERS - yValue;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   352
			drawLine(gc, (int)yCoord, numberMargin, Display.getCurrent().getSystemColor(SWT.COLOR_RED));
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   353
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   354
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   355
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   356
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   357
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   358
	 * drawLine.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   359
	 * Draws straight line into given y-coordinate.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   360
	 * @param gc graphics content where content is drawn
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   361
	 * @param yCoord y-coordinate
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   362
	 * @param numbeMargin margin in front of line.
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   363
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   364
	private void drawLine(GC gc, int yCoord, int numberMargin, Color color){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   365
		Color previousColor = gc.getForeground();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   366
		gc.setForeground(color);	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   367
		gc.drawLine(numberMargin, yCoord,getCanvasSize().x-(MARGIN_OTHERS-GRAPHMARGIN), yCoord );
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   368
		gc.setForeground(previousColor);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   369
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   370
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   371
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   372
	
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   373
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   374
	 * Returnns min and max value from one rule's history
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   375
	 * @return
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   376
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   377
	private int[] getMinAndMax(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   378
		TraceAnalyserRule rule = engine.getRule(this.information.getRule().getName());
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   379
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   380
		int[] limits = rule.getLimits();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   381
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   382
		int min = information.getMin();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   383
		int max = information.getMax();
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   384
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   385
		for(int item : limits){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   386
			if(item > max){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   387
				max = item;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   388
			}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   389
			else if(item < min){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   390
				min = item;
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   391
			}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   392
		}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   393
		
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   394
		return new int[]{min,max};
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   395
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   396
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   397
	/**
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   398
	 * sets context sensitive helps
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   399
	 */
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   400
	public void setHelps(){
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   401
		PlatformUI.getWorkbench().getHelpSystem().setHelp( canvas, com.nokia.s60tools.traceanalyser.resources.HelpContextIDs.TRACE_ANALYSER_HISTORY_VIEW);
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   402
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   403
	}
14dc2103a631 TraceAnalyser 1.0.5
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   404
}