(add|mod|get|del)(Vertex|Edge|PhysycalLaw)
addで追加、modで各種属性を変更、getで各種属性を取得、delで削除、っと。 modとgetが対になると考えるとset/getがいいのではないかと思われるかも知れないけど、 setVertexではvertexをsetするみたいだし、modVertexはあくまで既存のVertexインスタンスに対してハッシュを投げて属性を変化させるメソッドなのでこれでよい。getは可視化のためにはあまり必要ないのだけど、これを作っておけばグラフのセーブがXML-RPCでできるようになるので、誰でも自分の使いたいフォーマットを使うことができる。もちろん自分の好きな言語でXMLをやりとりするプログラムを書く必要はあるけど。
インスタンスの種類の差し替えについて。他の属性(色やラベル)の変更と、種類の変更は大きく異なる。それは設定することのできる属性自体が変わるから。どの属性を新しいインスタンスのどの属性に引き継ぐかってのは自明ではないし、種類が増えるに従って2乗のオーダーで「引き継ぎ方」が増えるのでこれをサポートするのは得策ではない。やりたければgetで属性を取得し、delで現在のを削除してから、新しいのをaddすればいいだけなので別に本体側でサポートする必要もないと思う。
Vertexを削除しても、それに繋がっているEdgeが残っていれば、表示されない&移動もしない幽霊が残ってしまうね。それは当たり前の挙動だと思うのだけど、どうだろう。頂点を削除する際に繋がっている頂点を削除するようにすべきだろうか?
メモ。med.pauseも制御できるといいね。
PhysicalLawに関しては、targetを省略できるようにしておいて、たとえばRepulsionなら省略時には全頂点が対象だしSpringEdgeなら全辺が対象。