View 将一个视图添加到两个透视图中,这两个透视图中都可见一个视图在一个透视图中打开

View 将一个视图添加到两个透视图中,这两个透视图中都可见一个视图在一个透视图中打开,view,rcp,perspective,View,Rcp,Perspective,我在应用程序中遇到了一个问题,我需要显示一个给定的视图,该视图添加到两个透视图中的两个不同透视图中,如果在任何透视图中打开一次,并且在视图中具有相同的内容。这意味着,如果我在任何一个透视图中打开视图,那么当我们切换透视图时,它应该为另一个透视图打开。您描述的行为在某种程度上违反了Eclipse UI准则和Eclipse UI隐喻的思想。但是,您可以通过以下代码实现所需的行为: 公共类MyViewPart扩展了ViewPart{ 公共最终静态字符串ID=foo.bar.perspectivesyn

我在应用程序中遇到了一个问题,我需要显示一个给定的视图,该视图添加到两个透视图中的两个不同透视图中,如果在任何透视图中打开一次,并且在视图中具有相同的内容。这意味着,如果我在任何一个透视图中打开视图,那么当我们切换透视图时,它应该为另一个透视图打开。

您描述的行为在某种程度上违反了Eclipse UI准则和Eclipse UI隐喻的思想。但是,您可以通过以下代码实现所需的行为:

公共类MyViewPart扩展了ViewPart{ 公共最终静态字符串ID=foo.bar.perspectivesync.view; 私有最终类PerspectiveListener4的实现{ 最终设置透视图\u id=新的HashSetArrays.asListfoo.bar.perspectivesync.p1, foo.bar.perspectivesync.p2; @凌驾 public void透视激活最终iWorkbench页面,最终IPerspectiveDescriptor透视{ 如果透视图\u id.containsperspective.getId{ 如果!viewsalreadyinpagemyviewpart.ID,第页{ 试一试{ page.showViewMyViewPart.ID; } 捕获部分异常{ //TODO日志异常是否正确 e、 打印跟踪; } } } } 私有布尔视图IsalReadyPage最终字符串id,最终IWorkbenchPage页面{ 布尔结果=假; IViewReference[]viewReferences=page.getViewReferences; 对于IViewReference ref:viewReferences{ 如果id.equalsref.getId{ 结果=真; } } 返回结果; } //@格式化程序:关闭 @重写公共void透视图变更最终IWorkbenchPage页面,最终IPerspectiveDescriptor透视图,最终字符串变更ID{} @重写公共void透视图更改最终IWorkbenchPage页面,最终IPerspectiveDescriptor透视图,最终IWorkbenchPartReference partRef,最终字符串更改ID{} @重写公共void perspectiveSavedAsfinal IWorkbenchPage页,最终IPerspectiveDescriptor oldPerspective,最终IPerspectiveDescriptor newPerspective{} @重写公共void透视图OpenedFinal IWorkbenchPage页面,最终IPerspectiveDescriptor透视图{} @重写公共void透视停用最终IWorkbenchPage页面,最终IPerspectiveDescriptor透视{} @重写公共void透视图关闭最终IWorkbenchPage页面,最终IPerspectiveDescriptor透视图{} @重写公共void透视图PreDeactivateFinal IWorkbenchPage页面,最终IPerspectiveDescriptor透视图{} //@格式化程序:打开 } 私有最终IPerspectiveListener 4 perspectiveListener=新的perspectiveListener实现; @凌驾 公共void initfinal IViewSite站点引发PartInItemException{ super.initsite; site.getWorkbenchWindow.addPerspectiveListener PerspectiveListener; } @凌驾 公共空间处置{ getSite.getWorkbenchWindow.RemovePerspectiveListener PerspectiveListener; 超级处理; } //@格式化程序:关闭 @重写公共void createPartControlfinal复合父项{} @重写公共void setFocus{} //@formatter:on }