在Eclipse中,新建Class,Interface等向导页(org.eclipse.jdt.ui.wizards.NewTypeWizardPage)中的browse package的功能即是通过下面代码实现的,此处可以注意一下ElementListSelectionDialog类。直接看一下代码吧。
protected IPackageFragment choosePackage() {
IPackageFragmentRoot froot= getPackageFragmentRoot();;//可能是为src源码目录
IJavaElement[] packages= null;
try {
if (froot != null && froot.exists()) {
packages= froot.getChildren();
}
} catch (JavaModelException e) {
JavaPlugin.log(e);
}
if (packages == null) {
packages= new IJavaElement[0];
}
ElementListSelectionDialog dialog= new ElementListSelectionDialog(getShell(), new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT));
dialog.setIgnoreCase(false);
dialog.setTitle(NewWizardMessages.NewTypeWizardPage_ChoosePackageDialog_title);
dialog.setMessage(NewWizardMessages.NewTypeWizardPage_ChoosePackageDialog_description);
dialog.setEmptyListMessage(NewWizardMessages.NewTypeWizardPage_ChoosePackageDialog_empty);
dialog.setElements(packages);//设置模型
dialog.setHelpAvailable(false);
IPackageFragment pack= getPackageFragment();
if (pack != null) {
dialog.setInitialSelections(new Object[] { pack });//设置初始选中的包节点
}
if (dialog.open() == Window.OK) {
return (IPackageFragment) dialog.getFirstResult();
}
return null;
}