in src/application/org.openjdk.jmc.flightrecorder.ui/src/main/java/org/openjdk/jmc/flightrecorder/ui/common/JComponentNavigator.java [137:257]
private void addListeners() {
addMouseListener(new MouseListener() {
@Override
public void mouseUp(MouseEvent e) {
if (dragHandles == null) {
updateCursor(e.x, e.y);
} else {
DragHandles handles = dragHandles;
if (dragHandles.left < 0) {
handles = comapareAndCreateRange(getStartPosition(), dragHandles.right);
} else if (dragHandles.right < 0) {
handles = comapareAndCreateRange(dragHandles.left, getEndPosition());
}
IQuantity start = selectedRange.getStart();
IQuantity end = selectedRange.getEnd();
if (handles.left != getStartPosition()) {
start = axis.getQuantityAtPixel(handles.left);
}
if (handles.right != getEndPosition()) {
end = axis.getQuantityAtPixel(handles.right + 1);
}
if (start.compareTo(selectedRange.getStart()) != 0 || end.compareTo(selectedRange.getEnd()) != 0) {
setCurrentRange(QuantityRange.createWithEnd(start, end));
}
dragHandles = null;
}
}
@Override
public void mouseDown(MouseEvent e) {
// NOTE: Skip for CTRL+click on OS X
if ((e.button != 1) || ((e.stateMask & SWT.MOD4) != 0)) {
return;
}
int startPosition = getStartPosition();
int endPosition = getEndPosition();
if (hitTest(startPosition, e.x, e.y)) {
dragHandles = new DragHandles(startPosition, -1);
} else if (hitTest(endPosition, e.x, e.y)) {
dragHandles = new DragHandles(-1, endPosition);
} else if (e.x > startPosition && e.x < endPosition) {
dragHandles = new DragHandles(startPosition, endPosition);
}
lastDragPosition = e.x;
}
@Override
public void mouseDoubleClick(MouseEvent e) {
if (restorableRange == null) {
setCurrentRange(axis);
} else {
setCurrentRange(restorableRange);
}
}
});
addMouseMoveListener(new MouseMoveListener() {
@Override
public void mouseMove(MouseEvent e) {
if (dragHandles == null) {
updateCursor(e.x, e.y);
} else {
dragHandles.move(e.x - lastDragPosition);
lastDragPosition = e.x;
redraw();
}
}
});
addMouseTrackListener(new MouseTrackAdapter() {
@Override
public void mouseExit(MouseEvent e) {
setShowGrabbers(false);
}
@Override
public void mouseEnter(MouseEvent e) {
setShowGrabbers(true);
}
});
addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
Rectangle clientArea = getClientArea();
if (isChartImagesInvalid(clientArea)) {
redrawChartImages(e, clientArea);
}
DragHandles handles = dragHandles;
if (handles == null) {
handles = new DragHandles(getStartPosition(), getEndPosition());
} else if (handles.left < 0) {
handles = comapareAndCreateRange(getStartPosition(), handles.right);
} else if (handles.right < 0) {
handles = comapareAndCreateRange(handles.left, getEndPosition());
}
drawBackground(e.gc, clientArea, handles.left, handles.right);
drawSlider(e.gc, clientArea, handles.left, handles.right);
}
});
addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
disposeResources();
}
});
addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e) {
Rectangle clientArea = getClientArea();
if (axis != null) {
setAxis(axis, clientArea.width);
}
height = clientArea.height;
}
});
}