我正在开发一个基于 RCP 的应用程序。最近,我已将其移至 RAP。之前,我在 RCP 中使用了一些无类型的事件来传递一些必要的数据以用于不同的目的。例如,我有一个名为“获取数据”的按钮来从服务器获取数据。我有一些 tableviewer 来保存从服务器接收到的数据。当用户单击此按钮时,我想引发一个事件,并且在每个表中都会监听该事件。我做了如下:
//Part 1
Button btgetData=new Button(compositeLabels,SWT.PUSH);
btgetData.setText("Get Data");
btgetData.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
//raise event here
Event event =new Event();
event.detail=12345;
getRoot().getShell().notifyListeners(MYEVENTCONST, event);
}
});
//Part 2:
//In each composite that hold TableViewer , listen event
getShell().addListener(MYEVENTCONST, new Listener()
public void handleEvent(Event event) {
if(event.detail==12345)
doProcessing();
});
在 RCP 中,每次用户单击“获取数据”按钮时,每个 TableViewer 都会正常监听该事件。但它在 RAP 上不起作用,我不知道 RAP 是否已经支持这种无类型事件。永远不会调用函数 doProcessing() :(。
我不想在传递数据时改变方式。请让我知道我是否可以继续以旧方式前进。我非常感谢您的任何评论。