IStructuredSelection:在2个不同的视图中使用相同的选择

时间:2019-01-27 12:30:27

标签: java e4 perspective treeviewer

我正在使用带有客户列表的TreeViewer。我在TreeViewer中添加了DoubleClickListener。

this.treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection thisSelection = (IStructuredSelection) event
                    .getSelection();
            Object selectedNode = thisSelection.getFirstElement();

            if (selectedNode instanceof ICustomer) {
                ICustomer customer = (ICustomer) selectedNode;
                selectionService.setSelection(customer);

                perspective = (MPerspective) modelService
                        .find("de.checkpoint.rinteln.carlofon.perspective.customer",
                                app);
            }

            if (perspective != null) {
                partService.switchPerspective(perspective);
            }
        }
    });

在Customer-Perspective中,我有2个View,它们使用选定的客户从数据库加载其数据(订单和提醒)。

在客户视图中,一切正常。但是一旦我移到下一个视图(提醒或订单),选择列表为Null,我没有得到。

@Inject
void setSelection(
        @Optional @Named(IServiceConstants.ACTIVE_SELECTION) ICustomer customer) {

    if (customer != null) {
        idText.setText("" + customer.getCustomerId());
        customerNameText
                .setText(customer.getFirstname() + " " + customer.getLastname());
        steetText.setText(customer.getStreet());
        cityText.setText(customer.getCity());
        steetCodeText.setText("" + customer.getCityCode());

    } else {
        // TODO Clear View!
    }
}

在“提醒”视图(与“客户”视图相同的角度)中,所选“客户”为空

@Inject
void setSelection(
        @Optional @Named(IServiceConstants.ACTIVE_SELECTION) ICustomer customer) {

    if (customer != null) {
        super.treeViewer.setInput(service.loadAll());
    } else {
        // TODO Clear View!
    }
}

哪个导致了我的问题,我想念什么吗?我不应该在不同的视图中使用相同的选择吗?

我必须补充,两个视图都扩展了在其中实现IDoubleClickListener的AbstractView。

0 个答案:

没有答案