问题:如何在一个SWT Canvas控件里面发送事件消息给JFace ViewPart 控件。
实现的功能:在Canva内点击鼠标时,能将点击位置发送给ViewPart控件,供其处理后显示。
解决方案:
使用一个ViewPart作为Canvas的父控件,:
public class CanvasViewPart extends ViewPart implements ISelectionProvider {
private Canvas canvas;
private ListenerList selectionChangeListeners = new ListenerList();
@Override
public void createPartControl(Composite parent) {
parent.setLayout(new FillLayout(SWT.HORIZONTAL));
canvas = new Canvas(parent, SWT.NONE);
canvas.addMouseListener(new MouseListener() {
@Override
public void mouseUp(MouseEvent e) {
}
@Override
public void mouseDown(MouseEvent e) {
}
@Override
public void mouseDoubleClick(MouseEvent e) {
System.out.println("Double click!");
setSelection(new Point2D(