【问题标题】:E4 NatTable dynamic context menuE4 NatTable 动态上下文菜单
【发布时间】:2018-07-02 02:20:23
【问题描述】:

我希望根据所选行更改 natTable 的上下文菜单项。我怎样才能做到这一点?

更新:到目前为止,这有效,我在偶数/不偶数线上显示了 A 和 B。我的下一个问题是:这是否意味着我必须为每个菜单项组调用这些方法?

myPopupMenuBuilder.withMenuItemProvider("A", new IMenuItemProvider() {
        @Override
        public void addMenuItem(NatTable paramNatTable, Menu paramMenu) {
            MenuItem row = new MenuItem(paramMenu, SWT.PUSH);
            row.setText("A");
        }
    }).withMenuItemProvider("B", new IMenuItemProvider() {
        @Override
        public void addMenuItem(NatTable paramNatTable, Menu paramMenu) {
            MenuItem row = new MenuItem(paramMenu, SWT.PUSH);
            row.setText("B");
        }
    }).withVisibleState("A", new IMenuItemState() {
        @Override
        public boolean isActive(NatEventData paramNatEventData) {
            return paramNatEventData.getRowPosition() % 2 == 0;
        }
    }).withVisibleState("B", new IMenuItemState() {
        @Override
        public boolean isActive(NatEventData paramNatEventData) {
            return paramNatEventData.getRowPosition() % 2 == 1;
        }
    });

【问题讨论】:

    标签: java eclipse-rcp rcp e4 nattable


    【解决方案1】:

    这取决于您如何实现上下文菜单。如果您使用 NatTable 注册上下文菜单的方式(我通常建议),您可以使用 PopupMenuBuilder#withEnabledState()PopupMenuBuilder#withVisibleState()。在IMenuItemState 的实现中,您可以获得执行点击的位置,然后可以使用该位置获取基础数据。

    有关该主题的更多信息可以在我的博客文章中找到:NatTable context menus with Eclipse menus

    如果你想使用 E4 菜单,你将不得不实现一些额外的逻辑来从点击中提取关于 NatTable 的必要信息。

    【讨论】:

    • 感谢您的回答。请检查我的更新状态。
    • 您需要为每个要处理的菜单项执行此操作,并通过 NatTable api 添加。不确定您的其他问题是关于什么的。
    • 抱歉回复晚了。到目前为止它工作正常,谢谢!另外,你知道是否有关于 PopupMenuBuilder 方法的文档吗?
    • 目前还没有这方面的文档。如果答案解决了您的问题,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 2016-04-17
    • 2012-09-01
    • 1970-01-01
    • 2017-04-27
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多