有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案