blob: a0099819004a543193ff0b687c0e713d553a8c01 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 Exyte
*
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Yuri Strot - initial API and Implementation
*******************************************************************************/
package org.eclipse.ui.glance.internal.panels;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
/**
* @author Yuri Strot
*
*/
public class MoveTracker implements Listener {
public MoveTracker(Control control) {
this.control = control;
cursor = new Cursor(control.getDisplay(), SWT.CURSOR_SIZEALL);
control.setCursor(cursor);
control.addListener(SWT.MouseDown, this);
control.addListener(SWT.Dispose, this);
}
public void handleEvent(Event event) {
if (control != null && !control.isDisposed()) {
switch (event.type) {
case SWT.MouseDown:
Point point = control.getDisplay().getCursorLocation();
handleClick(point.x, point.y);
break;
case SWT.MouseMove:
point = control.getDisplay().getCursorLocation();
handleDrag(point.x - iLocation.x, point.y - iLocation.y);
break;
case SWT.Dispose:
cursor.dispose();
cursor = null;
case SWT.MouseUp:
control.getDisplay().removeFilter(SWT.MouseMove, this);
control.getDisplay().removeFilter(SWT.MouseUp, this);
}
}
}
protected void handleClick(int x, int y) {
iLocation = new Point(x, y);
control.getDisplay().addFilter(SWT.MouseMove, this);
control.getDisplay().addFilter(SWT.MouseUp, this);
}
protected void handleDrag(int dx, int dy) {
}
private Cursor cursor;
private Point iLocation;
private Control control;
}