我有以下問題: 我在Eclipse中準備編輯器,其中一個選項卡包含TreeViewer以顯示樹中的項目。每個項目都有一個可編輯的名稱和值。 我需要向用戶指出該值不正確(例如超出給定範圍)的問題。我的想法是修改不正確的單元格,並顯示警告或錯誤圖標,這些圖標在編輯完成後也會顯示。TreeViewer中的項目裝飾
有沒有人有一個想法如何裝飾樹中的項目?我正在試驗ControlDecoration班,但沒有成功。
由於提前,
馬辛
PS。我僅限於Eclipse 3.4
我有以下問題: 我在Eclipse中準備編輯器,其中一個選項卡包含TreeViewer以顯示樹中的項目。每個項目都有一個可編輯的名稱和值。 我需要向用戶指出該值不正確(例如超出給定範圍)的問題。我的想法是修改不正確的單元格,並顯示警告或錯誤圖標,這些圖標在編輯完成後也會顯示。TreeViewer中的項目裝飾
有沒有人有一個想法如何裝飾樹中的項目?我正在試驗ControlDecoration班,但沒有成功。
由於提前,
馬辛
PS。我僅限於Eclipse 3.4
有兩種方法可以完成。如果您的TreeViewer顯示的是EObject實例的對象(由EMF生成,如果您不理解這部分,請跳到下一段:)),您可以更改這些EObject的「XyzItemProvider」,以便它們的「getImage」方法返回一個裝飾的圖像,而不是「普通」的圖像...這就是它的EMF對象,沒有別的需要改變。
如果您要顯示「傳統」Java對象,則必須更改TreeViewer的LabelProvider以裝飾圖像。這是通過TreeViewer#setLabelProvider()方法完成的。
什麼,你需要再是「如何裝飾圖像」,這是通過代碼實現像這樣:
public class MyLabelProvider extends DecoratingLabelProvider {
public Image getImage(Object element) {
Image image = super.getImage(element);
List<Object> images = new ArrayList<Object>(2);
images.add(image);
images.add(<Image of the decorator>);
labelImage = new ComposedImage(images); // This will put the second of the "images" list (the decorator) above the first (the element's image)
return decoratedImage;
}
[...]
}
然後你需要給你的樹查看此標籤提供者:
TreeViewer treeViewer = new TreeViewer(...);
treeViewer.setLabelProvider(new MyLabelProvider(new LabelProvider()); // new LabelProvider()... or your previous label provider if you have one.