gpt4 book ai didi

java - 如何停止在 Eclipse RCP 中打开 View 部分?

转载 作者:太空宇宙 更新时间:2023-11-04 13:07:26 27 4
gpt4 key购买 nike

我正在使用 eclipse RCP。我的表中有一个项目,当我双击该项目时,它会打开一个 View 。如果用户无权访问该 View ,则用户无法打开该 View 。

因此,我检查了用户对该项目的访问权限,然后关闭了透视图。

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 方法仍然会被调用,并且用户能够立即看到 View 打开和关闭。是什么原因导致这个问题以及如何解决它?

最佳答案

IWorkbenchPage 上应该有一个方法可用于打开如下 View :

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

你应该在 if 条件下调用这个方法

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

关于java - 如何停止在 Eclipse RCP 中打开 View 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34289706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com