【发布时间】:2015-12-16 00:42:24
【问题描述】:
我正在使用 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() 之后,仍然会调用ViewPart 的CreatePartControl 方法,并且用户可以看到视图立即打开和关闭。是什么导致了这个问题,我该如何解决?
【问题讨论】:
-
我不明白打开视图与关闭某个视角有何关系。顺便说一句,您能以合理的方式重新格式化代码吗?
标签: java eclipse-plugin swt eclipse-rcp