Я хочу клонировать перспективу и сохранить эту клонированную. Однако вызов PerspectiveRegistry.clonePerspective(...)
возвращает значение null, и у меня заканчиваются идеи, что может быть не так со значениями моих параметров.
public void savePerspectiveAs(String label) {
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IPerspectiveDescriptor perspectiveDescriptor = perspectiveRegistry
.findPerspectiveWithLabel(label);
// if the perspective doesn't exist, create a new one
// by cloning the current perspective
if (perspectiveDescriptor == null) {
IPerspectiveDescriptor currentPerspectiveDescriptor =
perspectiveRegistry.findPerspectiveWithId(currentPerspective);
// after this line, perspectiveDescriptor is still null
perspectiveDescriptor = perspectiveRegistry
.clonePerspective(currentPerspective + "."
+ label.replaceAll(" ", "_"), label,
currentPerspectiveDescriptor);
// hence I get a NullPointerException here...
connectedPerspectives.add(perspectiveDescriptor.getId());
}
page.savePerspectiveAs(perspectiveDescriptor);
}
Все остальные значения вроде в порядке. currentPerspectiveDescriptor
является допустимым объектом, так же как и perspectiveRegistry
.
label
это что-то вроде "Connected Perspective 2"
. И его еще нет, как и моего созданного идентификатора перспективы.
Есть идеи? Что может пойти не так, если clonePerspective(...)
вернет null?