Java 如何停止在eclipse RCP中打开viewpart?
我正在使用EclipseRCP。我在表中有一个项目,当我双击该项目时,它会打开一个视图。如果用户无权访问该视图,则用户无法打开该视图 因此,我检查了用户对该项目的访问权限,并关闭了透视图Java 如何停止在eclipse RCP中打开viewpart?,java,eclipse-plugin,swt,eclipse-rcp,Java,Eclipse Plugin,Swt,Eclipse Rcp,我正在使用EclipseRCP。我在表中有一个项目,当我双击该项目时,它会打开一个视图。如果用户无权访问该视图,则用户无法打开该视图 因此,我检查了用户对该项目的访问权限,并关闭了透视图 if (!user.hasReadAccess()) final IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows(); for (int w = 0; w < windows.length; w
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;
}
}
}
}
}
if(!user.hasReadAccess())
最终IWorkbenchWindow[]windows=PlatformUI.getWorkbench().getWorkbenchWindow();
对于(int w=0;w
它隐藏透视图,但总是打开透视图并立即关闭
换句话说,即使在调用了
closePerspective()
之后,ViewPart
的CreatePartControl
方法仍然被调用,并且用户能够看到视图立即被打开和关闭。是什么导致此问题?我如何解决此问题 在IWorkbenchPage上应该有一个方法可用于打开以下视图:
public IViewPart showView(String viewId, String secondaryId, int mode)
throws PartInitException;
您应该在if条件中调用此方法
if ( userHasReadAccess ) {
page.showView(viewId, secondaryId, IworkbenchPage.VIEW_ACTIVATE );
}
在IWorkbenchPage上应该有一个方法可用于打开以下视图:
public IViewPart showView(String viewId, String secondaryId, int mode)
throws PartInitException;
您应该在if条件中调用此方法
if ( userHasReadAccess ) {
page.showView(viewId, secondaryId, IworkbenchPage.VIEW_ACTIVATE );
}
我不明白打开视图与关闭某个人有什么关系。顺便说一句,你能以一种合理的方式重新格式化代码吗?我不明白打开视图与关闭某个个人有什么关系。顺便说一句,你能以合理的方式重新格式化代码吗?