java只允许从现有项目运行向导
我正在为一个Eclipse插件做一个导入向导
仅当所选内容是IProject且显示错误(并自行关闭)时,才允许使用该选项
你知道这怎么可行吗
如果选择不是IProject
,我尝试从OwnWizard.init(...)
方法中使用getShell().close()
和getContainer().getShell().close()
,但我得到了一个关于getShell()
的NullPointerException
(它似乎还无效)
我尝试使用以下代码片段:
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()
向导方法,那就太好了:)
谢谢你的帮助
致以最良好的祝愿
格雷格*
共 (0) 个答案