如果视图已分离,则活动透视图为空
Active perspective is null if a view is detached
如果我右键单击并分离视图,modelService.getActivePerspective(window)
开始返回 null。这意味着重置透视图无法正常工作。
如果视图未分离,它可以正常工作。我在想,当一个新的 window 打开时,它正在传递一个不包含透视图的不同 window。
例子
public class ResetPerspectiveHandler {
@Execute
public static void resetPerspective(final MApplication app, final EPartService partService,
final EModelService modelService, final MWindow window) {
// Prints null
System.out.println(modelService.getActivePerspective(window));
PerspectiveSnippetsCopier.resetPerspective(modelService, partService, app, window,
modelService.getActivePerspective(window).getElementId());
}
}
这可能是什么原因造成的?
getActivePerspective
的代码是:
public MPerspective getActivePerspective(MWindow window) {
List<MPerspectiveStack> pStacks = findElements(window, null, MPerspectiveStack.class);
if (pStacks.size() == 1) {
MPerspective perspective = pStacks.get(0).getSelectedElement();
return perspective;
}
return null;
}
所以它希望在给定的window中找到一个MPerspectiveStack
,大概是分离的window没有这个。
您可以尝试在应用程序中找到主要的 window,而不是使用当前的 window。
MWindow mainWindow = (MWindow)modelService.find("main window id", app);
如果我右键单击并分离视图,modelService.getActivePerspective(window)
开始返回 null。这意味着重置透视图无法正常工作。
如果视图未分离,它可以正常工作。我在想,当一个新的 window 打开时,它正在传递一个不包含透视图的不同 window。
例子
public class ResetPerspectiveHandler {
@Execute
public static void resetPerspective(final MApplication app, final EPartService partService,
final EModelService modelService, final MWindow window) {
// Prints null
System.out.println(modelService.getActivePerspective(window));
PerspectiveSnippetsCopier.resetPerspective(modelService, partService, app, window,
modelService.getActivePerspective(window).getElementId());
}
}
这可能是什么原因造成的?
getActivePerspective
的代码是:
public MPerspective getActivePerspective(MWindow window) {
List<MPerspectiveStack> pStacks = findElements(window, null, MPerspectiveStack.class);
if (pStacks.size() == 1) {
MPerspective perspective = pStacks.get(0).getSelectedElement();
return perspective;
}
return null;
}
所以它希望在给定的window中找到一个MPerspectiveStack
,大概是分离的window没有这个。
您可以尝试在应用程序中找到主要的 window,而不是使用当前的 window。
MWindow mainWindow = (MWindow)modelService.find("main window id", app);