下午睡了一覺,起來後閱讀了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;
}