package ca.uvic.chisel.tours.overlayshell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.part.ViewPart;
import ca.uvic.chisel.tours.overlayshell.widget.LineShell;
public class OverlayDrawView extends ViewPart {
private final class DrawListener implements MouseListener, MouseMoveListener {
boolean armed = false;
Point start = null;
@Override
public void mouseUp(MouseEvent e) {
armed = false;
lineShell.setVisible(false);
}
@Override
public void mouseDown(MouseEvent e) {
Control control = (Control)e.widget;
if (!armed) {
start = control.toDisplay(e.x, e.y);
lineShell.setRegion(start.y, start.x, start.y, start.x);
lineShell.setVisible(true);
armed = true;
} else {
}
}
@Override
public void mouseDoubleClick(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMove(MouseEvent e) {
Control control = (Control)e.widget;
if (armed) {
Point end = control.toDisplay(e.x, e.y);
lineShell.setRegion(start.y, start.x, end.y, end.x);
}
}
}
private LineShell lineShell;
public OverlayDrawView() {
// TODO Auto-generated constructor stub
}
@Override
public void createPartControl(Composite parent) {
Canvas c = new Canvas(parent, SWT.NONE);
lineShell = new LineShell(parent.getDisplay());
c.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
DrawListener listener = new DrawListener();
c.addMouseListener(listener);
c.addMouseMoveListener(listener);
}
@Override
public void dispose() {
lineShell.dispose();
}
@Override
public void setFocus() {
System.out.println("focus");
}
}