2008年3月23日日曜日

GEFのDirectEditでMacだと日本語が...

GEFのDirectEditの機能を GEFでHelloWorld:第5回 [ Eclipseのプロパティー・ビューを使用したモデルの編集とモデルの直接編集 ] を参考に作っていたんですが、ちょっとハマりました。

編集テキスト上で、英数字を入れるとちゃんと正常にModelに値が格納される動作をするんですが、日本語を入れると動作しない。

これは、どうやらWindowsOSでは日本語でも正常に動くみたいで、Macでやると駄目のような感じがします。
いや。。。。
MacではEclipseをGanymadeをつかっていてWindowsではEuropa使っているので、バージョンの差(EcipseというよりGMFの差?)かもしれないんですが。。これはまた、明日環境を整えて調査します。。

Macの方で原因を探っていたんですが、どうやら、Editorに設定されたListenerでのイベントが日本語入力時には発生しないみたい。
org.eclipse.gef.toolsDirectEditManagerでは DirectEditのエディタに対してaddListenerしていてKeyにて何か入力されたタイミングでクラス変数の private boolean dirty にtrueを設定しています。
で、編集終了の commit のタイミングにて dirty がtrueの時のみ、Command   を発火している動きをしていました。

とうことで、日本語入力の場合は dirty が true になることがないので、Commandは発火されず。Errorもでない。

回避方法としてはとりあえず、isDirty()のメソッドを上書きして常にtrueを返す。
protected boolean isDirty() {
  return true;
}
でまぁ。。。一応。。。動いたんですが、まぁこんな対応を単純にやっていても、ほかの影響もあるでしょうから明日もうちょっとしっかりみてみよー。

Blogged with the Flock Browser
• • •