zoukankan      html  css  js  c++  java
  • Eclipse 3.3里新TreeViewer给EMF应用程序带来的一个问题

    以前在Eclipse 3.2里做的一个EMF应用程序,到3.3里发现一些TreeViewer里标签显示的格式不对,例如原来显示“Condition true”的,在3.3下可能显示“1”。调试了一下发现这些TreeViewer在为每个节点获得标签时,若相应的XXXItemProvider实现了ITableItemLableProvider(即应用程序里有TableViewer也用到这个XXXItemProvider)时,会调用getColumnText()而不是getText()来得到文本内容。

    在新闻组里搜到这个帖子讲的是同一件事(新闻组是遇到问题后第一反应),原因不在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以后的版本应该会解决这个问题。

  • 相关阅读:
    PHP连接FTP服务的简单实现
    Map遍历
    线程的互斥与同步
    Java中Collections.sort()排序详解
    Echarts的赋值,设置数据
    JSON和GSON的使用
    发送邮箱验证
    java中获取服务器的IP和端口
    一个题目涉及到的50个Sql语句
    JAVA面试题二
  • 原文地址:https://www.cnblogs.com/bjzhanghao/p/864579.html
Copyright © 2011-2022 走看看