-draw2Dで何ができるか

さて、Diagramのデザインどうしようかということに関連して、draw2Dに何ができる?ということが疑問に思われることもあるでしょう。まず、draw2Dというのは、EclipseのGEF(graphical editor framework)というプラグインに含まれるライブラリで、グラフィカルな表示ができる仕組みです。Delphiご存知の方なら、Lightweight Componentというと思い出されるかもしれません。直接グラフィックキャンバスにコントロールを描く仕組みです。よって各コンポーネントはOSの提供するウィンドウハンドルを個別に持たないのですが、ライブラリでうまいこと作りこんでいて、マウスイベントなどもコンポーネントで取れます。draw2DはGEFを支える技術として、この描画周辺を受け持ちます。draw2Dは独立性のあるライブラリで、GEFに含まれていますが、GEFとは別に単独で用いることも可能です。
蛇足ですが、GEFはこのdraw2Dを駆使して作るビューとカスタムプラグインのモデル、これらを結びつけるコントロールというMVCモデルによってグラフィカルなエディタの根幹を作るフレームワークです。Kijimunaではこのモデル部分はcoreによってXMLパースされた結果のオブジェクトです。コントロールはモデルと1対1に対応してインスタンス化されるオブジェクトで、主な機能としてビューオブジェクトのファクトリとして動作します。結構ぺらぺらな実装です。ということで、Kijimuna Diagramはモデルはできていますし、コントローラーはぺらぺら実装なので、ビューをdraw2D駆使によって作ればほぼ終わりなのです。
戻って、draw2Dでできることで、Diagramで使いそうなことは以下のとおりです。

  • Lightweight Component
    • Figureと呼ばれる矩形描画領域をグループ化することによる擬似?コンポーネント
  • 図形描画
    • 線、矩形、円弧の線描画と塗りつぶし
  • イメージ描画
    • 主にはGIFの貼り付け
  • レイアウトマネージャー
    • Figureのレイアウトをマネジメントする。FlowLayoutとかXYLayoutとか
  • Border
    • SwingのBorderと同様
  • ラバーバンド
    • Figureをつなぐ線。UML等で利用する、矢印つきの線とかですね
  • 標準コントロール
    • マウスクリックなどをとってきちんと動くコンボボックスやテキストボックスなど

このうち、図形描画とイメージ描画でまずほとんどの表現ができると思います。矩形のグラデーション塗りもできます。非矩形のグラデーション塗りはできないみたい。