Eclipse 플러그인에 대한 가져 오기 마법사를 수행하고 있습니다.마법사가 기존 프로젝트에서만 실행되도록 허용
선택 사항이 IProject 인 경우에만 허용되어야하며 그렇지 않은 경우 오류를 표시하고 닫습니다.
어떻게 가능합니까?
나는 선택이IProject
없는 경우 내
OwnWizard.init(...)
방법에서
getShell().close()
및
getContainer().getShell().close()
를 사용하여 시도,하지만 난
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
필드가 null 이후)에지도라고합니다.
내가 그런 일을 막을 수있는 방법이 있습니까? 나는 createControls()
마법사 방법 : 당신의 도움에 대한
감사합니다,
안부를 구현할 필요가 없습니다 경우는 *,
그렉 큰 수 있습니다. 당신이 등등 shell
을 닫고 얘기 때문에
예 저는 이에 대해 몇 가지 세부 사항을 추가했습니다. – Greg
@Greg : 업데이트 된 답변을 확인하십시오. – Favonius
정말 고마워요 :) 실제로'project'는'true'의'flag'를 사용하지 않습니다. – Greg