private int fBorderWidth = 0;
private int fHeaderHeight = 0;
+ /** Feature toggle switch */
+ private boolean fPrevEventEnabled = true;
+ private boolean fNextEventEnabled = true;
+ private boolean fGrabAndPanEnabled = true;
+ private boolean fSelectionZoomEnabled = true;
+ private boolean fHorizontalZoomEnabled = true;
+ private boolean fHorizontalScrollEnabled = true;
+ private boolean fTimeRangeSelectionEnabled = true;
+
+ /** Toggle switch for pinned behavior */
+ private boolean fUsePinnedSelectionColor = false;
+
/**
* Standard constructor
*
* @since 1.0
*/
public void selectNextEvent(boolean extend) {
+ if (!fNextEventEnabled) {
+ return;
+ }
selectEvent(1, extend);
// Notify if visible time window has been adjusted
fTimeProvider.setStartFinishTimeNotify(fTimeProvider.getTime0(), fTimeProvider.getTime1());
* @since 1.0
*/
public void selectPrevEvent(boolean extend) {
+ if (!fPrevEventEnabled) {
+ return;
+ }
selectEvent(-1, extend);
// Notify if visible time window has been adjusted
fTimeProvider.setStartFinishTimeNotify(fTimeProvider.getTime0(), fTimeProvider.getTime1());
* true to scroll left, false to scroll right
*/
public void horizontalScroll(boolean left) {
+ if (fHorizontalScrollEnabled) {
+ return;
+ }
long time0 = fTimeProvider.getTime0();
long time1 = fTimeProvider.getTime1();
long timeMin = fTimeProvider.getMinTime();
* @param zoomIn true to zoom in, false to zoom out
*/
public void zoom(boolean zoomIn) {
+ if (!fHorizontalZoomEnabled) {
+ return;
+ }
+
int globalX = getDisplay().getCursorLocation().x;
Point p = toControl(globalX, 0);
int nameSpace = fTimeProvider.getNameSpace();
// draw selection lines
if (fDragState != DRAG_SELECTION) {
- gc.setForeground(getColorScheme().getColor(TimeGraphColorScheme.SELECTED_TIME));
+ int color = TimeGraphColorScheme.SELECTED_TIME;
+
+ if (fUsePinnedSelectionColor) {
+ color = TimeGraphColorScheme.SELECTED_TIME_PINNED;
+ }
+
+ gc.setForeground(getColorScheme().getColor(color));
+
if (x0 >= nameSpace && x0 < bounds.x + bounds.width) {
gc.drawLine(x0, bounds.y, x0, bounds.y + bounds.height);
}
selectItem(idx, false); // clear selection
fireSelectionChanged();
}
+
+ if (!fTimeRangeSelectionEnabled) {
+ return;
+ }
+
+ /* Time range Selection */
long hitTime = getTimeAtX(e.x);
if (hitTime >= 0) {
setCapture(true);
updateCursor(e.x, e.stateMask);
fTimeGraphScale.setDragRange(fDragX0, fDragX);
}
- } else if (2 == e.button || (1 == e.button && (e.stateMask & SWT.MODIFIER_MASK) == SWT.CTRL)) {
+
+ } else if ((2 == e.button || (1 == e.button && (e.stateMask & SWT.MODIFIER_MASK) == SWT.CTRL)) && fGrabAndPanEnabled) {
long hitTime = getTimeAtX(e.x);
if (hitTime > 0) {
setCapture(true);
fTime1bak = fTimeProvider.getTime1();
updateCursor(e.x, e.stateMask);
}
- } else if (3 == e.button) {
+ } else if (3 == e.button && fSelectionZoomEnabled) {
if (e.x >= fTimeProvider.getNameSpace()) {
setCapture(true);
fDragX = Math.min(Math.max(e.x, fTimeProvider.getNameSpace()), getSize().x - RIGHT_MARGIN);
private boolean isInDragZoomMargin() {
return (Math.abs(fDragX - fDragX0) < DRAG_MARGIN);
}
+
+ /**
+ * Set the pin state
+ *
+ * @param pined
+ * The pin state
+ * @since 2.2
+ */
+ @Override
+ public synchronized void setPinned(boolean pined) {
+ super.setPinned(pined);
+
+ fUsePinnedSelectionColor = pined;
+
+ boolean enabled = !pined;
+
+ fPrevEventEnabled = enabled;
+ fNextEventEnabled = enabled;
+ fGrabAndPanEnabled = enabled;
+ fSelectionZoomEnabled = enabled;
+ fHorizontalZoomEnabled = enabled;
+ fHorizontalScrollEnabled = enabled;
+ fTimeRangeSelectionEnabled = enabled;
+ }
}