2016-03-01 74 views
0

在我的Eclipse RCP視圖中,我使用JFace數據綁定將模型數據綁定到org.eclipse.jface.viewers.TreeViewer。我使用ViewerSupport.bind()來綁定數據,如片段所示,它工作得很好。Can ViewerSupport.bind()可以與圖像結合使用嗎?

ViewerSupport.bind(viewer, model, BeanProperties.list("children", 
      ModelObject.class), BeanProperties.value(ModelObject.class, "name")); 

現在我真的很想顯示一個圖像以及節點上的文字。如果沒有數據綁定,我只會覆蓋LabelProvidergetImage(Object element)方法,但內容+標籤提供程序方法和ViewerSupport的使用不能一起使用。我在ViewerSupport API中找不到解決我的問題的方法。有沒有解決方案,或許使用org.eclipse.core.databinding.property.value.IValueProperty

回答

0

ViewerSupport使用ObservableMapLabelProvider作爲標籤提供者。不幸的是,getImage方法僅僅返回null

你也許可以使用ObservableMapLabelProvider的子類來提供圖像。你不能使用ViewerSupport來做到這一點,所以你將不得不復制一些代碼。

這是怎麼ViewerSupport.bind設置樹:

public static void bind(AbstractTreeViewer viewer, Object input, 
     IListProperty childrenProperty, IValueProperty[] labelProperties) { 
    Realm realm = DisplayRealm.getRealm(viewer.getControl().getDisplay()); 

    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
      childrenProperty.listFactory(realm), null); 

    if (viewer.getInput() != null) 
    viewer.setInput(null); 

    viewer.setContentProvider(contentProvider); 

    viewer.setLabelProvider(new ObservableMapLabelProvider(Properties 
      .observeEach(contentProvider.getKnownElements(), 
        labelProperties))); 

    if (input != null) 
    viewer.setInput(input); 
} 
+0

真正應該已經想到這一點我自己,謝謝。缺乏OOP思想。感到羞愧的是這些方法是「靜態」的,會使得擴展更容易。 –

相關問題