下午睡了一觉,起来后阅读了New Java Class的部分的代码,对应的向导为org.eclipse.jdt.internal.ui.wizards.NewClassCreationWizard,从New Java Class的功能实现中,我们可以学习到诸如JDT,AST的很多巧妙实现,在后面的博文中,会将自己的阅读心得与大家进行分享,本文只关注于Choose Super Class,如下图用红色标出的功能实现.
功能代码位于org.eclipse.jdt.ui.wizards.NewTypeWizardPage类中,如下:
protected IType chooseSuperClass() {
IJavaProject project= getJavaProject();
if (project == null) {
return null;
}
IJavaElement[] elements= new IJavaElement[] { project };
//搜索范围
IJavaSearchScope scope= SearchEngine.createJavaSearchScope(elements);
//一如既往的使用了FilteredTypesSelectionDialog
FilteredTypesSelectionDialog dialog= new FilteredTypesSelectionDialog(getShell(), false,
getWizard().getContainer(), scope, IJavaSearchConstants.CLASS);
dialog.setTitle(NewWizardMessages.NewTypeWizardPage_SuperClassDialog_title);
dialog.setMessage(NewWizardMessages.NewTypeWizardPage_SuperClassDialog_message);
dialog.setInitialPattern(getSuperClass());
if (dialog.open() == Window.OK) {
return (IType) dialog.getFirstResult();
}
return null;
}