ノードの背景をグラデーションにする
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つの長方形(グラデーションと白)で構成されているのでしょうね。