ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Eclipseのルーラー

2013-06-05 22:45:06 | PG(Java)

Asakusa FrameworkのDMDLエディターEclipseプラグイン)を作っていて、記述されたDMDLにエラーがあったらエラーマークを出すことは出来ていた。

が、普通のJavaエディターなら、エラーのある行の左側にエラーマークが出ると同時に、右側にもエラーの印が付く。(ファイル内のエラー分布が分かるし、この印をクリックするとエラーの行にジャンプできる)
のに、DMDLエディターでは右側の印が出ていなくて不便だった。
なんでだろう?と思ってググってみたのだが、同様の現象が起きている例は見つけられなかった。最終的には原因が分かって修正できたのだが。

まずググってみたキーワードは「Eclipse TextEditor marker 右側」といった感じ。そもそもこの「右側の印」を何と呼ぶのか分からないので、とりあえずそれを調べる。
で「左側のマーク」が出る領域(列)を「vertical ruler」、「右側の印」が出る領域(列)を「overview ruler」と呼ぶことが分かった。
(設定ページの「一般→エディター→テキストエディター→注釈」でルーラーに出る印の色を変えられるらしく、その設定名で分かった)
で、それを元にググってOverviewRulerというクラスを発見。
これを自分で実装しなきゃいけないのかなぁと思いつつTextEditorのソース内をoverviewとかrulerで検索したら、OverviewRulerはデフォルトで準備されているらしかった。
「うおーなんでじゃー?!」
と思いつつ さらに自分のソースを追ったら、怪しい箇所を発見!

@Override
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
  // フォールディングの為のViewerを作成
  ISourceViewer viewer = foldingManager.createSourceViewer(parent, ruler, fOverviewRuler, styles);
  ~
}

fOverviewRulerというフィールドがOverviewRulerを保持するのだが、この時点では初期化されていなかった(nullだった)orz
そのせいでOverviewRulerの領域(列)自体が確保されず、表示されていなかったのだ…。

なんでこんなソースになってるのかなーと思ったけど、フォールディングのサンプルをそのまま写したらこうだったんだよね、ちくしょー><
という訳で、親クラスのcreateSourceViewer()をコピペしてOverviewRulerインスタンスを作るようにしたら、あっさり表示された^^;
(自分のコーディングのせいでは、ググっても同様の現象は見つからないわなぁ) 

分かってみれば1ステップくらいの修正量だけど、分かるまでにえらく時間がかかるという、典型的な例だった(苦笑) 



最新の画像もっと見る

コメントを投稿