问题:如何在一个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(e.x, e.y));
}
});
// 注册此事件提供者。
this.getSite().setSelectionProvider(this);
}

本文介绍了如何实现在RCP应用程序中,当用户在SWT Canvas上点击时,将点击位置信息传递给JFace ViewPart进行处理并显示。通过让Canvas的父ViewPart实现ISelectionProvider接口,并注册到RCP事件系统,同时让目标ViewPart实现ISelectionListener,监听并响应点击事件。

3402

被折叠的 条评论
为什么被折叠?



