Eclipse RCP 如何获取复合父级



我想在RCP中创建表查看器,但我不知道如何获得"复合父级"。我有这个代码:

@PostConstruct
public void createComposite(Composite parent) {
Books.generateBooks();
Map<String, Books> allBooks = Books.returnAllBooks();
List<String> booksList = new ArrayList<String>(allBooks.keySet());
tableViewer = new TableViewer(parent);
for(int i=0; i<booksList.size(); i++) {
tableViewer.add(booksList.get(i));
}
tableViewer.addDoubleClickListener(new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
if (selection.isEmpty()) return;
BibliotekaSzczegolyPart.createComposite(selection.getFirstElement().toString());
}
});
tableViewer.getTable().setLayoutData(new GridData(GridData.FILL));
}

它在我的部分创建表视图,并在表位置添加 DoubleClickListener。现在我想在另一个类中创建函数createComposite 我想在双击后激活,但随后我没有"复合父级",因为它没有@PostConstruct。如何获得它?

执行此操作的最佳方法是使用事件代理发送另一部分可以侦听的事件。这样,您就不需要引用其他部分。

要发送事件:

@Inject
IEventBroker eventBroker;
String value = .... value you want to send (doesn't have to be a string)
eventBroker.post("/my/topic", value);

要侦听事件,请在要侦听的类中包含如下方法(假设该类是通过注入创建的(:

@Inject
@Optional
public void event(@UIEventTopic("/my/topic") final String value)
{
if (value != null) {
// TODO Handle value
}
}

在初始化部件时,您可能会收到对该方法的调用,value设置为null,因此请检查这一点。

方法名称可以是你喜欢的任何名称。

@UIEventTopic强制事件到达 UI 线程。如果您不关心线程,请使用@EventTopic

主题名称可以是您选择的任何名称,但它必须包含/分隔符,如下所示。

本教程中的更多详细信息。

最新更新