log
短いことだから、整理されていないことだから、と開発日誌じゃなくて日記の方に書いてしまうと、 あとで集めて整理するのが大変なので全部開発日誌に書くようにしよう。
GRINEditのアーキテクチャ図を書いていて気がついたのだけど、 今はグラフオブジェクトが頂点オブジェクト、辺オブジェクト、物理法則オブジェクトを持っているけど、これはおかしいよね。グラフオブジェクトは頂点オブジェクト、辺オブジェクトを持っていて、整形エンジンオブジェクトが物理法則オブジェクトを持つべき。
そうすると、もし将来的に整形エンジンオブジェクトが複数個になりうるのであれば、「物理法則オブジェクトのセット」自体も複数個になりうる。難しい問題だなぁ。レンダリングエンジンを複数個使って、切り替えられるようにするニーズがどれほどあるのか…。
__ Graphクラスが持っていたlayoutStepとそれに関するメソッドをSimpleLayout implements ILayoutに移動。このlayoutStepは、引数にgraphを受け取って、それを破壊的に整形する。また、今までメインループでgraph.layoutStepと呼んでいたところを、Mediatorを介してmed.getLayoutEngine().layoutStepと呼ぶようにした。これでMediator.setLayoutEngineでレイアウトエンジンを指定することでグラフはそのまま整形方法を差し替えることが出来るようになった。
__ メインクラスGRINEditからデフォルトのGUIに関する処理を全てGRINEditDefaultGUIに移動。 でGRINEditクラスはnew GRINEditDefaultGUI()するだけ。 後はこのインスタンシエイト部分を能動的プラグインの読み込みに置き換えればOK。
ふむ。今GUI側にくくりだしたコードの部分にドラッグドロップのリスナとか、メニューの処理化スクリプトの呼び出しとかが入っているんだなぁ。
こういう機能をプラグインにくくり出すことを考えると、これはこのデフォルトのGUIを使うことが前提のプラグイン。ふむ。