以前に GroovyConsole で使われているアイコンを使う方法を見ましたが、今回は GroovyConsole で使われているエディタを使う方法を見ていきます。
とりあえず関連のありそうなクラスは以下の2つです:
まぁ細かい設定などをしたい場合は同パッケージ内のクラスを扱う必要も出てくるかも知れませんが、大抵の設定はこの2つのクラスのプロパティ設定で何とかなると思います。 とか言いつつ、この記事では TextEditor もほぼ扱いませんが。
ConsoleTextEditor クラス
GroovyConsole で使われているエディタは groovy.ui.ConsoleTextEditor です。 このクラスは javax.swing.JScrollPane クラスを継承しています。 つまり、このクラス自体はテキストを扱うわけではありません。 テキストを扱っているのは groovy.ui.text.TextEditor クラスで、このインスタンスは ConsoleTextEditor#getTextEditor() メソッドによって取得できます。 サンプルを見る前に、少しこのクラスについて簡単に見ていきましょう:
- TextEditor クラス
- ConsoleTextEditor のプロパティ
- デフォルトで定義されているアクション
TextEditor クラス
groovy.ui.text.TextEditor クラスは javax.swing.JTextPane クラスを拡張しています。 テキストエディタに細かい設定を行いたい場合はこのクラスのインスタンスをイジるといいと思います。 API ドキュメントはこちら。
ConsoleTextEditor のプロパティ
ConsoleTextEditor から直接設定できるプロパティには以下のようなものがあります:
プロパティ | 型 | アクセッサ | デフォルト値 | 説明 |
---|---|---|---|---|
defaultFamily | String | get/set | "Monospaced" | デフォルトのフォント・ファミリー |
showLineNumbers | boolean | set | true | 行番号を表示するかどうか |
editable | boolean | set | true | 編集可能かどうか |
デフォルトで定義されているアクション
ConsoleTextEditor には以下のアクションがデフォルトで定義されています:
- undoAction ・・・ 編集を取消す
- redoAction ・・・ 取り消した編集を再実行する
- printAction ・・・ プリントするらしい(試してない)
これらはどれも javax.swing.Action クラスのサブクラスで、ConsoleTextEditor のインスタンスから getUndoAction() のような getter メソッドによって取得できます。 setter メソッドは定義されていません。
ConsoleTextEditor の使い方
では、ConsoleTextEditor を使ったサンプルを見ていきましょう。 といっても、普通の JComponent として扱えばいいだけです:
import java.awt.BorderLayout as BL import javax.swing.WindowConstants as WC import groovy.swing.SwingBuilder import groovy.ui.ConsoleTextEditor // ConsoleTextEditor インスタンス生成 def editor = new ConsoleTextEditor() // エディタの初期テキストの設定 editor.textEditor.text = '''// "PROGRAMMING GROOVY FROM NOTICE TO PROFESSIONAL" def obj = new Expando() obj.name = 'Duke' obj.greet = { to -> println "Hi, $to. I'm $name!" } obj.greet('Steve') ''' // 初期テキスト、ここまで def frame = new SwingBuilder().frame( title:'Groovy Console Editor', pack:true, defaultCloseOperation:WC.EXIT_ON_CLOSE){ borderLayout() toolBar(constraints:BL.NORTH){ // Redo ボタン ・・・ actionPerformed で動作を設定 button icon:imageIcon(resource:png('arrow_redo')), actionPerformed:{ event -> editor.undoAction.actionPerformed(event) } // Undo ボタン ・・・ action で動作を設定 button action:editor.redoAction, icon:imageIcon(resource:png('arrow_undo')) // Print ボタン ・・・ action で動作設定 button action:editor.printAction, text:'Print' } widget(editor) // ConsoleTextEditor オブジェクトをフレームに追加 } frame.visible = true def png(String name){ return "/groovy/ui/icons/${name}.png" }
widget ノードによって ConsoleTextEditor をフレームに追加しています。 このコードを実行すると、以下のようなエディタが表示されます:
キーワードなどがハイライトされて表示されます! Redo, Undo 処理もキチンと行えます! イエィ! Print 処理は試してませんケド。 ちなみに、エディタに表示されてるコードは『プログラミングGROOVY』から拝借しました m(_ _)m
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (152件) を見る