我正在使用3.7 RCP应用程序,我们正在迁移到4.4并决定使用兼容性层。我们有一个实现IPartListener2
接口的类,我们提供了partOpened
方法的实现,如下所示:
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)
本身会调用内部工作台方法。我的问题是如何用适当的Eclipse 4等效替换引用的内部调用/对象?
答案 0 :(得分:0)
只要您只使用partRef
接口来访问它,IEditorReference
的实际类是什么并不重要。 Eclipse传递给您的值通常具有内部的实现类。只要您只使用这些类实现的公共接口,您就遵循规则。
同样,setPartState
调用是IWorkbenchPage
接口的一部分。同样,实现IWorkbenchPage
的实际类通常是内部的。
因此,此代码中没有任何问题。只要您坚持使用该接口,Eclipse用于实现接口并不重要。
快速查看源文件的导入,如果它导入包名称中包含internal
的任何内容,则肯定存在问题。