Decoration Service是GMF Runtime提供的一個Service。它的目的是為已有圖形添加修飾,它并不需要已有圖形的任何信息,icon或figure都可以作為decoration加到圖形上。要為圖形添加Decoration,首先要編寫一個Decorator類。它可以繼承AbstractDecorator,為了滿足要求我們要重寫其中兩個方法:activate()、refresh ()。activate方法主要功能是激活Decorator,一般只需調用refresh方法即可。Refresh負責當decorator target變化時刷新Decorator,即保持二者之間的同步。在這里我們就可以設置自己的Decoration(如自定義的icon或figure)。如果想實現Decoration動態響應模型的改變,我們可以讓Decorator實現NotificationListener接口,這樣我們就可以監聽模型的改變了。實現notifyChanged方法,在此方法中根據需求為模型添加監聽器。做完Decorator之后,我們就要為這個Decorator編寫一個Provider,它需繼承AbstractProvider并實現IDecoratorProvider接口。然后實現createDecorators、provides兩個方法。在createDecorators方法中安裝我們的Decorator。
Provides中判斷添加Decorator的條件。最后就要注冊我們的Provider了。添加擴展點:
org.eclipse.gmf.runtime.diagram.ui.decorator.providers,將decoration provider設成我們的Provider,至此大功造成!