アプレット動く
GRINEditアプレットは一応動くようになりました。
現在は頂点の色が固定だったり、アプレットとしてデータファイルを読む機能がなかったりします。
頂点の色に関しては、SWTのColorがガベージコレクトの対象外で、不用意にインスタンスを作るとどんどんメモリ消費量が増えてしまうと思って一括管理をするColorHolderというクラスがあるのですが、これをまだAWTに対応させていないためです。AWTのColorはただ値を持っているだけのクラスだと思うのであまり大げさなものは必要なさそうですが。Color (Java 2 プラットフォーム SE v1.4.0)
後者のデータファイルを読む機能に関しては、まぁアプレットがサーバからHTTPでデータを取る形にするのが一番簡単そうですが、問題はこのファイルのフォーマットです。legacy formatのパーサをJavaで書きたくありません。というわけでXMLかYAMLかJSONをサポートするまでこちらは保留にします。 目標を増やしすぎるのもよくないかと思いますし。 現在の目標はGRINEdit本体がXML-RPCで他の言語からも使えるようにすることと、GRINEditの整形ライブラリが他のJavaプログラムから使いやすい設計になることの2つ。
今回アプレットを作ったことで、だいぶリファクタリングが進みましたけど、もう一押ししたいですね。現状で53KBの本体のJarの他に「使わないはずのswt.jar」1128KBが必要なのが少し嫌です。そうなると、やっぱりVertexなどはレンダリングが何に対してかによってBoxVertex_SWT、BoxVertex_AWTに分かれるべきなのかも知れないですね。BoxVertexが適切に判断してBoxVertex_SWTかBoxVertex_AWTかどちらかのインスタンスを返すというのもアリかな…。コンストラクタをprivateにしてmakeInstanceメソッドを呼ばせるようにすればそういうことも可能ですね。