首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从IPartListener2.partOPEN的内部API实现迁移

从IPartListener2.partOPEN的内部API实现迁移
EN

Stack Overflow用户
提问于 2015-03-28 02:53:22
回答 1查看 82关注 0票数 1

我正在开发一个3.7版本的RCP应用程序,我们正在迁移到4.4版本,并决定使用兼容层。我们有一个实现IPartListener2接口的类,并且我们提供了partOpened方法的实现,代码如下:

代码语言:javascript
复制
public void partOpened(IWorkbenchPartReference partRef) {
    if (partRef instanceof IEditorReference) {
        //force editor area visible
        partRef.getPage().setEditorAreaVisible(true);
        // if the editors are currently minimimized and we try to maximize them, 
             then we'll cause a bug.
        if (partRef.getPage().getPartState(partRef) == 
                                 IWorkbenchPage.STATE_MINIMIZED) {
            return; // so exit here
        }
        //get preferences from local method not included in example
        final boolean maximized = 
            getMaximizedValue(PreferenceConstants.P_BOOL_MAXIMIZED_EDITORS);
        if (maximized) {
            partRef.getPage().setPartState(partRef, IWorkbenchPage.STATE_MAXIMIZED);
        }
    }
}

当我调试对此方法的调用时,partRef的实例是org.eclipse.ui.internal.EditorReference类型。此外,partRef.getPage().setPartState(partRef, IWorkbenchPage.STATE_MAXIMIZED)本身也会调用内部工作台方法。我的问题是,如何将引用的内部调用/对象替换为相应的Eclipse4等效项?

EN

回答 1

Stack Overflow用户

发布于 2015-03-28 03:04:56

只要您只使用IEditorReference接口来访问它,那么partRef的实际类是什么并不重要。Eclipse传递给您的值通常都有一个内部实现类。只要您只使用这些类实现的公共接口,您就是在遵循规则。

类似地,setPartState调用是IWorkbenchPage接口的一部分。同样,实现IWorkbenchPage的实际类通常是内部的。

所以在这段代码中没有任何问题。只要您坚持使用接口,那么Eclipse使用什么来实现接口并不重要。

快速检查一下源文件的导入,如果它导入了包名中包含internal的任何内容,那么肯定有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29308164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档