/*****************************************************************************
- * Copyright (c) 2007, 2013 Intel Corporation, Ericsson.
+ * Copyright (c) 2007, 2014 Intel Corporation, Ericsson
+ *
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* Intel Corporation - Initial API and implementation
* Ruslan A. Scherbakov, Intel - Initial API and implementation
* Alvaro Sanchez-Leon - Updated for TMF
- * Patrick Tasse - Refactoring
+ * Geneviève Bastien - Added methods to save a time range selection
+ * Patrick Tasse - Refactoring, support for range selection
*****************************************************************************/
package org.eclipse.linuxtools.tmf.ui.widgets.timegraph.widgets;
public interface ITimeDataProvider {
/**
- * @return The selected time
+ * Updates the selection begin and end time and notifies any registered
+ * listeners about the new time range (if necessary)
+ *
+ * @param beginTime the selection begin time
+ * @param endTime the selection end time
+ * @since 3.0
+ */
+ void setSelectionRangeNotify(long beginTime, long endTime);
+
+ /**
+ * Updates the selection begin and end time
*
- * @deprecated As of 2.1, replaced by {@link ITimeDataProvider2#getSelectionBegin()} and {@link ITimeDataProvider2#getSelectionEnd()}
+ * @param beginTime the selection begin time
+ * @param endTime the selection end time
+ * @since 3.0
+ */
+ void setSelectionRange(long beginTime, long endTime);
+
+ /**
+ * @return The begin time of the current selection
+ * @since 3.0
+ */
+ long getSelectionBegin();
+
+ /**
+ * @return The end time of the current selection
+ * @since 3.0
*/
- @Deprecated
- long getSelectedTime();
+ long getSelectionEnd();
/**
* @return The beginning time
}
}
- @SuppressWarnings("deprecation")
@Override
public ISelection getSelection() {
TimeGraphSelection sel = new TimeGraphSelection();
ITimeGraphEntry trace = getSelectedTrace();
if (null != trace && null != fTimeProvider) {
- long selectedTime;
- if (fTimeProvider instanceof ITimeDataProvider2) {
- selectedTime = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- } else {
- selectedTime = fTimeProvider.getSelectedTime();
- }
+ long selectedTime = fTimeProvider.getSelectionBegin();
ITimeEvent event = Utils.findEvent(trace, selectedTime, 0);
if (event != null) {
sel.add(event);
if (trace == null) {
return;
}
- long selectedTime;
- if (fTimeProvider instanceof ITimeDataProvider2) {
- selectedTime = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- } else {
- @SuppressWarnings("deprecation")
- long time = fTimeProvider.getSelectedTime();
- selectedTime = time;
- }
+ long selectedTime = fTimeProvider.getSelectionBegin();
long endTime = fTimeProvider.getEndTime();
ITimeEvent nextEvent;
if (-1 == n && selectedTime > endTime) {
if (prevRange == 0) {
return;
}
- long selTime;
- if (fTimeProvider instanceof ITimeDataProvider2) {
- ITimeDataProvider2 provider = ((ITimeDataProvider2) fTimeProvider);
- selTime = (provider.getSelectionEnd() + provider.getSelectionBegin()) / 2;
- } else {
- @SuppressWarnings("deprecation")
- long selectedTime = fTimeProvider.getSelectedTime();
- selTime = selectedTime;
- }
+ ITimeDataProvider provider = fTimeProvider;
+ long selTime = (provider.getSelectionEnd() + provider.getSelectionBegin()) / 2;
if (selTime <= prevTime0 || selTime >= prevTime1) {
selTime = (prevTime0 + prevTime1) / 2;
}
public void zoomOut() {
long prevTime0 = fTimeProvider.getTime0();
long prevTime1 = fTimeProvider.getTime1();
- long selTime;
- if (fTimeProvider instanceof ITimeDataProvider2) {
- ITimeDataProvider2 provider = ((ITimeDataProvider2) fTimeProvider);
- selTime = (provider.getSelectionEnd() + provider.getSelectionBegin()) / 2;
- } else {
- @SuppressWarnings("deprecation")
- long selectedTime = fTimeProvider.getSelectedTime();
- selTime = selectedTime;
- }
+ ITimeDataProvider provider = fTimeProvider;
+ long selTime = (provider.getSelectionEnd() + provider.getSelectionBegin()) / 2;
if (selTime <= prevTime0 || selTime >= prevTime1) {
selTime = (prevTime0 + prevTime1) / 2;
}
if (trace == null) {
return;
}
- long selectedTime = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
+ long selectedTime = fTimeProvider.getSelectionBegin();
for (ILinkEvent link : fItemData.fLinks) {
if (link.getEntry() == trace && link.getTime() == selectedTime) {
selectItem(link.getDestinationEntry(), false);
if (trace == null) {
return;
}
- long selectedTime = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
+ long selectedTime = fTimeProvider.getSelectionBegin();
for (ILinkEvent link : fItemData.fLinks) {
if (link.getDestinationEntry() == trace && link.getTime() + link.getDuration() == selectedTime) {
selectItem(link.getEntry(), false);
long time0 = fTimeProvider.getTime0();
long time1 = fTimeProvider.getTime1();
- long selectionBegin;
- long selectionEnd;
- if (fTimeProvider instanceof ITimeDataProvider2) {
- selectionBegin = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- selectionEnd = ((ITimeDataProvider2) fTimeProvider).getSelectionEnd();
- } else {
- @SuppressWarnings("deprecation")
- long selectedTime = fTimeProvider.getSelectedTime();
- selectionBegin = selectedTime;
- selectionEnd = selectedTime;
- }
+ long selectionBegin = fTimeProvider.getSelectionBegin();
+ long selectionEnd = fTimeProvider.getSelectionEnd();
double pixelsPerNanoSec = (bounds.width - nameSpace <= RIGHT_MARGIN) ? 0 : (double) (bounds.width - nameSpace - RIGHT_MARGIN) / (time1 - time0);
int x0 = bounds.x + nameSpace + (int) ((selectionBegin - time0) * pixelsPerNanoSec);
int x1 = bounds.x + nameSpace + (int) ((selectionEnd - time0) * pixelsPerNanoSec);
ITimeGraphEntry entry = item.fTrace;
long time0 = timeProvider.getTime0();
long time1 = timeProvider.getTime1();
- long selectedTime;
- if (fTimeProvider instanceof ITimeDataProvider2) {
- selectedTime = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- } else {
- @SuppressWarnings("deprecation")
- long time = fTimeProvider.getSelectedTime();
- selectedTime = time;
- }
+ long selectedTime = fTimeProvider.getSelectionBegin();
Rectangle nameRect = getNameRect(bounds, i, nameSpace);
if (nameRect.y >= bounds.y + bounds.height) {
cursor = fDragCursor;
} else if ((stateMask & SWT.MODIFIER_MASK) == SWT.SHIFT) {
cursor = fResizeCursor;
- } else {
- if (!isOverSplitLine(x) &&fTimeProvider instanceof ITimeDataProvider2) {
- long selectionBegin = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- long selectionEnd = ((ITimeDataProvider2) fTimeProvider).getSelectionEnd();
- int xBegin = getXForTime(selectionBegin);
- int xEnd = getXForTime(selectionEnd);
- if (Math.abs(x - xBegin) < SNAP_WIDTH || Math.abs(x - xEnd) < SNAP_WIDTH) {
- cursor = fResizeCursor;
- }
+ } else if (!isOverSplitLine(x)) {
+ long selectionBegin = fTimeProvider.getSelectionBegin();
+ long selectionEnd = fTimeProvider.getSelectionEnd();
+ int xBegin = getXForTime(selectionBegin);
+ int xEnd = getXForTime(selectionEnd);
+ if (Math.abs(x - xBegin) < SNAP_WIDTH || Math.abs(x - xEnd) < SNAP_WIDTH) {
+ cursor = fResizeCursor;
}
}
if (getCursor() != cursor) {
message.append("T: "); //$NON-NLS-1$
message.append(new TmfNanoTimestamp(time).toString());
message.append(" T1: "); //$NON-NLS-1$
- if (fTimeProvider instanceof ITimeDataProvider2) {
- long selectionBegin = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- long selectionEnd = ((ITimeDataProvider2) fTimeProvider).getSelectionEnd();
- message.append(new TmfNanoTimestamp(Math.min(selectionBegin, selectionEnd)).toString());
- if (selectionBegin != selectionEnd) {
- message.append(" T2: "); //$NON-NLS-1$
- message.append(new TmfNanoTimestamp(Math.max(selectionBegin, selectionEnd)).toString());
- message.append(" \u0394: "); //$NON-NLS-1$
- message.append(new TmfTimestampDelta(Math.abs(selectionBegin - selectionEnd), ITmfTimestamp.NANOSECOND_SCALE));
- }
- } else {
- @SuppressWarnings("deprecation")
- long selectedTime = fTimeProvider.getSelectedTime();
- message.append(new TmfNanoTimestamp(selectedTime));
+ long selectionBegin = fTimeProvider.getSelectionBegin();
+ long selectionEnd = fTimeProvider.getSelectionEnd();
+ message.append(new TmfNanoTimestamp(Math.min(selectionBegin, selectionEnd)).toString());
+ if (selectionBegin != selectionEnd) {
+ message.append(" T2: "); //$NON-NLS-1$
+ message.append(new TmfNanoTimestamp(Math.max(selectionBegin, selectionEnd)).toString());
+ message.append(" \u0394: "); //$NON-NLS-1$
+ message.append(new TmfTimestampDelta(Math.abs(selectionBegin - selectionEnd), ITmfTimestamp.NANOSECOND_SCALE));
}
}
} else if (fDragState == DRAG_SELECTION || fDragState == DRAG_ZOOM) {
fDragX = e.x;
fTimeProvider.setNameSpace(e.x);
} else if (DRAG_SELECTION == fDragState) {
- if (fTimeProvider instanceof ITimeDataProvider2) {
- fDragX = Math.min(Math.max(e.x, fTimeProvider.getNameSpace()), size.x - RIGHT_MARGIN);
- redraw();
- fTimeGraphScale.setDragRange(fDragX0, fDragX);
- }
+ fDragX = Math.min(Math.max(e.x, fTimeProvider.getNameSpace()), size.x - RIGHT_MARGIN);
+ redraw();
+ fTimeGraphScale.setDragRange(fDragX0, fDragX);
} else if (DRAG_ZOOM == fDragState) {
fDragX = Math.min(Math.max(e.x, fTimeProvider.getNameSpace()), size.x - RIGHT_MARGIN);
redraw();
fDragX = e.x;
fDragX0 = fDragX;
fDragTime0 = getTimeAtX(fDragX0);
- if (fTimeProvider instanceof ITimeDataProvider2) {
- long selectionBegin = ((ITimeDataProvider2) fTimeProvider).getSelectionBegin();
- long selectionEnd = ((ITimeDataProvider2) fTimeProvider).getSelectionEnd();
- int xBegin = getXForTime(selectionBegin);
- int xEnd = getXForTime(selectionEnd);
- if ((e.stateMask & SWT.MODIFIER_MASK) == SWT.SHIFT) {
- long time = getTimeAtX(e.x);
- if (Math.abs(time - selectionBegin) < Math.abs(time - selectionEnd)) {
- fDragX0 = xEnd;
- fDragTime0 = selectionEnd;
- } else {
- fDragX0 = xBegin;
- fDragTime0 = selectionBegin;
- }
+ long selectionBegin = fTimeProvider.getSelectionBegin();
+ long selectionEnd = fTimeProvider.getSelectionEnd();
+ int xBegin = getXForTime(selectionBegin);
+ int xEnd = getXForTime(selectionEnd);
+ if ((e.stateMask & SWT.MODIFIER_MASK) == SWT.SHIFT) {
+ long time = getTimeAtX(e.x);
+ if (Math.abs(time - selectionBegin) < Math.abs(time - selectionEnd)) {
+ fDragX0 = xEnd;
+ fDragTime0 = selectionEnd;
} else {
- long time = getTimeAtX(e.x);
- if (Math.abs(e.x - xBegin) < SNAP_WIDTH && Math.abs(time - selectionBegin) <= Math.abs(time - selectionEnd)) {
- fDragX0 = xEnd;
- fDragTime0 = selectionEnd;
- } else if (Math.abs(e.x - xEnd) < SNAP_WIDTH && Math.abs(time - selectionEnd) <= Math.abs(time - selectionBegin)) {
- fDragX0 = xBegin;
- fDragTime0 = selectionBegin;
- }
+ fDragX0 = xBegin;
+ fDragTime0 = selectionBegin;
+ }
+ } else {
+ long time = getTimeAtX(e.x);
+ if (Math.abs(e.x - xBegin) < SNAP_WIDTH && Math.abs(time - selectionBegin) <= Math.abs(time - selectionEnd)) {
+ fDragX0 = xEnd;
+ fDragTime0 = selectionEnd;
+ } else if (Math.abs(e.x - xEnd) < SNAP_WIDTH && Math.abs(time - selectionEnd) <= Math.abs(time - selectionBegin)) {
+ fDragX0 = xBegin;
+ fDragTime0 = selectionBegin;
}
}
fTime0bak = fTimeProvider.getTime0();
long time0 = fDragTime0;
long time1 = getTimeAtX(fDragX);
if (time0 <= time1) {
- ((ITimeDataProvider2) fTimeProvider).setSelectionRangeNotify(time0, time1);
+ fTimeProvider.setSelectionRangeNotify(time0, time1);
} else {
- ((ITimeDataProvider2) fTimeProvider).setSelectionRangeNotify(time1, time0);
+ fTimeProvider.setSelectionRangeNotify(time1, time0);
}
}
fDragState = DRAG_NONE;