ViewPart中的onShow和onHide监听器 - Java Eclipse RCP

时间:2016-02-29 20:38:18

标签: java eclipse rcp

我想在隐藏ViewPart时触发方法(隐藏==它开始不可见)并且它正在打开(打开==它开始可见)。类似的东西:

void onHide(){removeAllListeners();}
void onShow(){refreshView();}

我试图使用:

getSite().getPage().addSelectionListener(new ISelectionListener() {
        @Override
        public void selectionChanged(final IWorkbenchPart workbenchPart, final ISelection selection) {
            System.out.println("TEST");
        }});

但它仅在ViewPart变为不可见时才起作用,并且在变为可见时不会被触发

2 个答案:

答案 0 :(得分:1)

这与选择被更改无关。使用IPartListener2

答案 1 :(得分:1)

您可以使用IPartListener2(或较旧的IPartListener)来收听所有部分状态的更改。

getSite().getPage().addPartListener(new IPartListener2() ....

您可能想要对'partHidden'和'partVisible'方法做出反应。在这些方法中,您需要检查事件是否适合您:

IViewPart myViewPart = ... your view part


@Override
public void partHidden(IWorkbenchPartReference ref) {
    IWorkbenchPart part = ref.getPart(false);

    if (part == myViewPart) {
        // Event is for your view
    }
}

@Override
public void partVisible(IWorkbenchPartReference ref) {
    IWorkbenchPart part = ref.getPart(false);

    if (part == myViewPart) {
        // Event is for your view
    }
}