2016-05-19 15 views
0

我有一個工作ILightweightLabelDecorator,愉快地裝飾我的樹中的某種對象。現在該對象發生了變化,並且我想觸發刷新/重新整理。重新裝修ILightweightLabelDecorator

我找到了this article(在「重新裝修」),它要我叫 LabelProvider#fireLabelProviderChanged()。問題是:所討論的方法是受保護的,並且對象改變的地方遠離標籤裝飾器。

比方說,爲了簡單起見,我有我的IViewPart以下方法:

public void refresh() { 
    this.treeViewer.refresh(); 
} 

我怎麼會觸發我的瀏覽器元素存在的粉飾?

+0

你使用'org.eclipse.jface.viewers.DecoratingLabelProvider'嗎? –

+0

@ greg-449是的,我是。 –

+0

我認爲這應該會自動更新刷新調用上的裝飾器。 –

回答

0

一種可能性是告訴管理者裝飾爲特定的裝飾ID更新裝修:

IDecoratorManager decoratorManager = PlatformUI.getWorkbench().getDecoratorManager(); 

decoratorManager.update("decorator id"); 

(必須在UI線程中運行)。

+0

有問題的視圖不知道所有的裝飾器的ID是/可以註冊它的元素。 –