ノードの背景をグラデーションにする

GMFで自動生成したグラフィカルエディタにおいて、キャンバス上に配置するノードの背景を以下のようにグラデーションにする方法を紹介します。

自動生成したコードのうち、XX.edit.partsパッケージ内にあるXXEditPart.javaにおけるXXFigureという内部クラスについて、以下の修正を行います。

  • コンストラクタの修正
  • fillShape()のオーバライド

まず、XXFigureクラスのコンストラクタに、以下を追加します。使用する色は適宜変えてください。

this.setBackgroundColor(ColorConstants.orange);
this.setForegroundColor(ColorConstants.white);
this.setBorder(new LineBorder(ColorConstants.lightGray));

次に、XXFigureクラスにおいてfillShape()を以下のようにオーバライドします。

@Override
protected void fillShape(Graphics graphics) {
	graphics.fillGradient(getBounds(), true);
}

以上です。

例えば、soyatecが提供するUMLモデリングプラグインスクリーンショットを見ると、より見やすいグラデーションになっています。単一のノードに見えて、2つの長方形(グラデーションと白)で構成されているのでしょうね。