我正在爲Eclipse插件執行導入嚮導。允許嚮導僅從現有項目運行
只有在選擇是IProject並且顯示錯誤(並關閉本身)時才應該允許。
你這樣做是可行的嗎?
我嘗試使用getShell().close()
和getContainer().getShell().close()
從我OwnWizard.init(...)
方法,如果選擇不是一個IProject
,但我得到一個關於NullPointerException
getShell()
(看來這還不是有效)。
我試着用這個片段:
public class GetPackWizard extends Wizard implements IImportWizard {
private IProject project = null;
// ...
@Override
public void addPages() {
logger.trace("Adding pages.");
addPage(new SelectPackagesWizardPage(project));
versionsPage = new SelectVersionsWizardPage(project);
addPage(versionsPage);
}
//...
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
project = null;
if (selection.size() > 0) {
Object obj = selection.getFirstElement();
if (obj instanceof IResource) {
IResource resource = (IResource)obj;
if (obj instanceof IProject)
project = (IProject)obj;
else
project = resource.getProject();
}
}
if (project == null) {
MessageDialog.openError(
getShell(),
"GetPack Wizard",
"You must run this wizard from a project."
);
performCancel();
}
}
雖然嚮導關閉,該addPages()
方法仍稱,從而導致一些NullPointerException
(因爲project
字段爲空)。
有沒有辦法阻止這種情況發生?這可能是巨大的,如果我沒有重新實現createControls()
嚮導方法:)
感謝您的幫助,
最好的問候,
格雷格*。
是的,我做:)我已經添加了一些細節。 – Greg 2011-05-05 15:28:30
@Greg:檢查我的更新答案。 – Favonius 2011-05-05 16:36:35
謝謝它效果很好:) 其實我甚至不使用'flag',因爲它是'true'當'project!= null'的時候。 – Greg 2011-05-06 08:09:56