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
23 abstract public class TmfBaseProvider
{
25 // ------------------------------------------------------------------------
27 // ------------------------------------------------------------------------
28 /** Reference to the chart viewer */
29 private final ITmfChartTimeProvider fChartViewer
;
31 // ------------------------------------------------------------------------
33 // ------------------------------------------------------------------------
36 * Standard constructor.
38 * @param tmfChartViewer
39 * The parent histogram object
41 public TmfBaseProvider(ITmfChartTimeProvider tmfChartViewer
) {
42 fChartViewer
= tmfChartViewer
;
45 // ------------------------------------------------------------------------
47 // ------------------------------------------------------------------------
49 * Returns the chart viewer reference.
50 * @return the chart viewer reference
52 public ITmfChartTimeProvider
getChartViewer() {
57 * Returns the SWT chart reference
59 * @return SWT chart reference.
61 protected Chart
getChart() {
62 return (Chart
) fChartViewer
.getControl();
66 * Limits x data coordinate to window start and window end range
70 * @return x if x >= begin && x <= end
74 protected long limitXDataCoordinate(double x
) {
75 ITmfChartTimeProvider viewer
= getChartViewer();
76 long windowStartTime
= viewer
.getWindowStartTime() - viewer
.getTimeOffset();
77 long windowEndTime
= viewer
.getWindowEndTime() - viewer
.getTimeOffset();
79 if (x
< windowStartTime
) {
80 return windowStartTime
;
83 if (x
> windowEndTime
) {
91 * Limits x pixel coordinate to window start and window end range
97 * @return x if x >= begin && x <= end
101 protected int limitXPixelCoordinate(int axisIndex
, int x
) {
102 ITmfChartTimeProvider viewer
= getChartViewer();
103 long windowStartTime
= viewer
.getWindowStartTime() - viewer
.getTimeOffset();
104 long windowEndTime
= viewer
.getWindowEndTime() - viewer
.getTimeOffset();
106 IAxis xAxis
= getChart().getAxisSet().getXAxis(0);
107 int startX
= xAxis
.getPixelCoordinate(windowStartTime
);
112 int endX
= xAxis
.getPixelCoordinate(windowEndTime
);
120 // ------------------------------------------------------------------------
122 // ------------------------------------------------------------------------
124 * Method deregisters provider from chart viewer. Subclasses may override this method
125 * to dispose any resources.
127 public void dispose() {
132 * Method to refresh the viewer. It will redraw the viewer.
134 public void refresh() {
135 if (!TmfXYChartViewer
.getDisplay().isDisposed()) {
136 TmfXYChartViewer
.getDisplay().asyncExec(new Runnable() {
146 * Method to register the provider to chart viewer.
148 protected abstract void register();
151 * Method to deregister the provider from chart viewer.
153 protected abstract void deregister();