1 /**********************************************************************
2 * Copyright (c) 2013, 2014 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 * Bernd Hufmann - Initial API and implementation
11 **********************************************************************/
12 package org
.eclipse
.tracecompass
.tmf
.ui
.viewers
.xycharts
;
14 import org
.swtchart
.Chart
;
15 import org
.swtchart
.IAxis
;
18 * Base class for any provider such as tool tip, zoom and selection providers.
20 * @author Bernd Hufmann
22 abstract public class TmfBaseProvider
{
24 // ------------------------------------------------------------------------
26 // ------------------------------------------------------------------------
27 /** Reference to the chart viewer */
28 private final ITmfChartTimeProvider fChartViewer
;
30 // ------------------------------------------------------------------------
32 // ------------------------------------------------------------------------
35 * Standard constructor.
37 * @param tmfChartViewer
38 * The parent histogram object
40 public TmfBaseProvider(ITmfChartTimeProvider tmfChartViewer
) {
41 fChartViewer
= tmfChartViewer
;
44 // ------------------------------------------------------------------------
46 // ------------------------------------------------------------------------
48 * Returns the chart viewer reference.
49 * @return the chart viewer reference
51 public ITmfChartTimeProvider
getChartViewer() {
56 * Returns the SWT chart reference
58 * @return SWT chart reference.
60 protected Chart
getChart() {
61 return (Chart
) fChartViewer
.getControl();
65 * Limits x data coordinate to window start and window end range
69 * @return x if x >= begin && x <= end
73 protected long limitXDataCoordinate(double x
) {
74 ITmfChartTimeProvider viewer
= getChartViewer();
75 long windowStartTime
= viewer
.getWindowStartTime() - viewer
.getTimeOffset();
76 long windowEndTime
= viewer
.getWindowEndTime() - viewer
.getTimeOffset();
78 if (x
< windowStartTime
) {
79 return windowStartTime
;
82 if (x
> windowEndTime
) {
90 * Limits x pixel coordinate to window start and window end range
96 * @return x if x >= begin && x <= end
100 protected int limitXPixelCoordinate(int axisIndex
, int x
) {
101 ITmfChartTimeProvider viewer
= getChartViewer();
102 long windowStartTime
= viewer
.getWindowStartTime() - viewer
.getTimeOffset();
103 long windowEndTime
= viewer
.getWindowEndTime() - viewer
.getTimeOffset();
105 IAxis xAxis
= getChart().getAxisSet().getXAxis(0);
106 int startX
= xAxis
.getPixelCoordinate(windowStartTime
);
111 int endX
= xAxis
.getPixelCoordinate(windowEndTime
);
119 // ------------------------------------------------------------------------
121 // ------------------------------------------------------------------------
123 * Method deregisters provider from chart viewer. Subclasses may override this method
124 * to dispose any resources.
126 public void dispose() {
131 * Method to refresh the viewer. It will redraw the viewer.
133 public void refresh() {
134 if (!TmfXYChartViewer
.getDisplay().isDisposed()) {
135 TmfXYChartViewer
.getDisplay().asyncExec(new Runnable() {
145 * Method to register the provider to chart viewer.
147 protected abstract void register();
150 * Method to deregister the provider from chart viewer.
152 protected abstract void deregister();