以前在Eclipse 3.2里做的一个EMF应用程序,到3.3里发现一些TreeViewer里标签显示的格式不对,例如原来显示“Condition true”的,在3.3下可能显示“1”。调试了一下发现这些TreeViewer在为每个节点获得标签时,若相应的XXXItemProvider实现了ITableItemLableProvider(即应用程序里有TableViewer也用到这个XXXItemProvider)时,会调用getColumnText()而不是getText()来得到文本内容。
在Eclipse新闻组里搜到这个帖子讲的是同一件事(新闻组是遇到问题后第一反应),原因不在EMF,是Eclipse 3.3里对TreeViewer的实现有了变化,新的实现把原来的TreeViewer当成只有一列的特殊的TableViewer来对待,以致EMF也把TreeViewer当成了TableViewer,当然会去找getColumnText()了。解决的办法也不复杂,新闻组里那个帖子也提到了,我给帖到这方便大家参考吧。
/**
* @Added
* Solve a problem raised in jface 3.3 tree viewer
* @see http://dev.eclipse.org/newslists/news.eclipse.tools.emf/msg25409.html
*
*/
class WorkaroundAdapterFactoryLabelProvider extends AdapterFactoryLabelProvider {
/**
* @param adapterFactory
*/
public WorkaroundAdapterFactoryLabelProvider(AdapterFactory adapterFactory) {
super(adapterFactory);
}
@Override
public Image getColumnImage(Object object, int columnIndex) {
return super.getImage(object);
}
@Override
public String getColumnText(Object object, int columnIndex) {
return super.getText(object);
}
}
有了上面这个类,然后把原来setLabelProvider()里的AdapterFactoryLabelProvider换成它就可以了。EMF以后的版本应该会解决这个问题。
搬家前链接:https://www.cnblogs.com/bjzhanghao/archive/2007/08/21/864579.html
欢迎转载
请保留原始链接:https://bjzhanghao.com/p/2697
请保留原始链接:https://bjzhanghao.com/p/2697