Viewの更新ができない
うーん (´・ω・`) viewの表示更新ができない。。
viewerの入力値に設定したデータを更新して、viewer#refreshすれば良いって認識してるのですが、違うのかにゃー。
とりあえず更新できるパターン。
かなり不自然です。
あちこちのサンプルを見ても、setInputを何度もコールしたりってことはないんですよねー。
そもそもでviewerのデータの扱いが間違ってるのカナ?
viewerの入力値に設定したデータを更新して、viewer#refreshすれば良いって認識してるのですが、違うのかにゃー。
とりあえず更新できるパターン。
- input = {データの更新処理}
- viewer.refresh();
- viewer.setInput(input);
- viewer.refresh();
かなり不自然です。
あちこちのサンプルを見ても、setInputを何度もコールしたりってことはないんですよねー。
そもそもでviewerのデータの扱いが間違ってるのカナ?
いまだにPHPEclipse
業務で PDT を使っていない唯一にして最大の理由は"mark occurrences"が実装されていないことなのですが、バージョン1.5で実装される、かも。だって。
※ "mark occurrences"っていうのは変数にカーソルを合わせるとアクティブなエディタ上の同変数がハイライトされる機能のことです。
Bug 204265 -- Syntax highlighting for variables is missing in PDT
と、いっても probably っていってるし、1.5はいつになるのかわからない。1.1のリリースが2008年9月予定だし。
そんなわけでまだPHPEclipseを愛用しています。
※ "mark occurrences"っていうのは変数にカーソルを合わせるとアクティブなエディタ上の同変数がハイライトされる機能のことです。
Bug 204265 -- Syntax highlighting for variables is missing in PDT
と、いっても probably っていってるし、1.5はいつになるのかわからない。1.1のリリースが2008年9月予定だし。
そんなわけでまだPHPEclipseを愛用しています。
Eclipseプラグイン開発:アウトラインの実装
■ アウトラインビューの作成
アウトライン用のデータを構築しなくちゃならない。結局テキストを一文字ずつ走査することに。
TreeNodeを生成しながらTreeを構築する、と。
TreeNodeには適当なbeanを設定しておけばよい。
設定するデータは例えばこんなの。
エディタとアウトラインで出現順序をあわせたいので、位置でソートできるようにComparableを実装しておいた。
あと、TreeNodeはsetParent, setChidren で親子関係を設定しておかなくてはならない。
これでコンテンツプロバイダは自前で実装しなくても、TreeNodeContentProviderをそのままつかえる。
しかしエディタとアウトラインの同期の方法がよくわからない。
とりあえずエディタのdoSaveをオーバライドしてみたけどうまく更新されないみたい。
アウトライン用のデータを構築しなくちゃならない。結局テキストを一文字ずつ走査することに。
TreeNodeを生成しながらTreeを構築する、と。
TreeNodeには適当なbeanを設定しておけばよい。
- TreeNode tn = new TreeNode(new HogeModel(label, offset));
設定するデータは例えばこんなの。
- class HogeModel implements Comparable<HogeModel>{
- private String label;
- private int offset;
- public HogeModel(String label, int offset) {
- this.label = label;
- this.offset = offset;
- }
- public String getLabel() {
- return label;
- }
- public int getOffset() {
- return offset;
- }
- public int compareTo(HogeModel hm) {
- if (offset == hm.getOffset()) return 0;
- return offset < hm.getOffset() ? -1 : 1;
- }
- }
エディタとアウトラインで出現順序をあわせたいので、位置でソートできるようにComparableを実装しておいた。
あと、TreeNodeはsetParent, setChidren で親子関係を設定しておかなくてはならない。
これでコンテンツプロバイダは自前で実装しなくても、TreeNodeContentProviderをそのままつかえる。
しかしエディタとアウトラインの同期の方法がよくわからない。
とりあえずエディタのdoSaveをオーバライドしてみたけどうまく更新されないみたい。
Eclipseプラグイン開発:エクスポートができない
はまった。
プラグインを開発した後はエクスポートの必要があります。つまり、Eclipseのpluginディレクトリに放り込めば使えるようになる状態へパッケージングします。
これはマニフェストエディターからウィザードで簡単にできるようになっているのですが、これが上手くいかない。なぜかコンパイルエラーに。
ログを見る限り、単にパースエラーとなっているのですが、テストなど正常に動いています。
そこで、エラーログをよーーっく見てみるとコンパイラのエラーでの行数と実際の行数がずれています。
なので疑ったのが文字コード。とりあえずコメントの日本語をすべて削除するとエクスポートに成功することを確認。
ところが、文字コードを指定する方法がわからない。
googleコードサーチでbuild.propertiesを検索して片っ端からそれっぽいのを指定してみましたがダメ。。
結論から言うとbuild.propertiesに以下の指定を追加すればOK。
eclipseのヘルプに書いてある。
プラグインを開発した後はエクスポートの必要があります。つまり、Eclipseのpluginディレクトリに放り込めば使えるようになる状態へパッケージングします。
これはマニフェストエディターからウィザードで簡単にできるようになっているのですが、これが上手くいかない。なぜかコンパイルエラーに。
ログを見る限り、単にパースエラーとなっているのですが、テストなど正常に動いています。
そこで、エラーログをよーーっく見てみるとコンパイラのエラーでの行数と実際の行数がずれています。
なので疑ったのが文字コード。とりあえずコメントの日本語をすべて削除するとエクスポートに成功することを確認。
ところが、文字コードを指定する方法がわからない。
googleコードサーチでbuild.propertiesを検索して片っ端からそれっぽいのを指定してみましたがダメ。。
結論から言うとbuild.propertiesに以下の指定を追加すればOK。
javacDefaultEncoding.. = UTF-8
eclipseのヘルプに書いてある。
| ホーム |



