簡體   English   中英

如何停止在Eclipse RCP中打開viewpart?

[英]How to stop opening a viewpart in eclipse RCP?

我正在使用Eclipse RCP。 我在表中有一個項目,當我雙擊該項目時,它將打開一個視圖。 如果用戶無權訪問該視圖,則該用戶無法打開該視圖。

因此,我檢查了用戶對該項目的訪問權限,然后關閉了透視圖。

if (!user.hasReadAccess())
    final IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();

for (int w = 0; w < windows.length; w++)
{
    final IWorkbenchPage[] pages = windows[w].getPages();
    for (int p = 0; p < pages.length; p++)
    {
        final IWorkbenchPage page = pages[p];
        //  page.hideView(page.findView(MYViewID));
        final IViewReference[] viewRefs = page.getViewReferences();
        for (int v = 0; v < viewRefs.length; v++)
        {
            for (IPerspectiveDescriptor ipd : page.getOpenPerspectives())
            {
                if (ipd.getId().equalsIgnoreCase(PERSPECTIVE_ID))
                {

                    page.closePerspective(page.getPerspective(), true, true);
                    break;
                }
            }
        }
    }
}

它隱藏了透視圖,但始終會打開並立即關閉透視圖。

換句話說,即使在調用closePerspective()之后,仍然會調用ViewPartCreatePartControl方法,並且用戶能夠看到該視圖立即被打開和關閉。 是什么導致此問題,我該如何解決?

在IWorkbenchPage上應該有一個方法可以用來打開如下視圖:

public IViewPart showView(String viewId, String secondaryId, int mode)
            throws PartInitException;

您應該在if條件中調用此方法

if ( userHasReadAccess ) {
    page.showView(viewId, secondaryId, IworkbenchPage.VIEW_ACTIVATE );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM