出于兼容性原因,我必须将我的Eclipse插件从JDT 3.7改编为3.6。不幸的是,旧版本似乎没有方便的.getParameters()方法。
我需要向用户显示一个ElementTreeSelectionDialog,允许他浏览类的方法并选择方法的参数。为此,我用这个简单的getChildren编写了一个ITreeContentProvider方法:
public Object[] getChildren(Object paramObject) {
if(paramObject instanceof ICompilationUnit){
ICompilationUnit icu = (ICompilationUnit) paramObject;
try {
return icu.getAllTypes()[0].getMethods();
} catch (JavaModelException e) {
e.printStackTrace();
}
}
if(paramObject instanceof IType){
IType type = (IType) paramObject;
try {
return type.getMethods();
} catch (JavaModelException e) {
e.printStackTrace();
}
}
if(paramObject instanceof IMethod){
IMethod method = (IMethod) paramObject;
try {
return method.getParameters();
} catch (JavaModelException e) {
e.printStackTrace();
}
}
return null;
}
我想坚持使用接口来使用JavaUILabelProvider,它使用适当的图标,签名等显示所有内容。
因此,棘手的部分是从参数或其他一些有效的IJavaElement实现创建有效的LocalVariable对象,这些实现将由JavaUILabelProvider正确显示。
我尝试过创建一个LocalVariable []数组,但这并没有真正解决,因为我找不到任何方法来获取元素的必要位置标记和注释对象...