拡張ポイントの設定が終わったので、辞書プラグインの実装に入ります。
まずは、GUIを構成してみましょう。GUIの構成には、SWT(Standard Widget Toolkit)を使います。
以下のように編集してみましょう。
DicView.java
package dictionary; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.part.ViewPart; public class DicView extends ViewPart { public DicView() {} public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(1, false));・・・・(1) Group group = new Group(parent, SWT.NONE);・・・・(2) group.setText("単語検索"); group.setLayout(new GridLayout(2, false)); Text text = new Text(group, SWT.SINGLE | SWT.BORDER);・・・・(3) GridData gridData = new GridData(); gridData.horizontalSpan = 2; text.setLayoutData(gridData); Button button = new Button(group, SWT.PUSH);・・・・(4) button.setText("search"); Button button2 = new Button(group, SWT.PUSH); button2.setText("clear"); } public void setFocus() {} }
(1)では、ビューの元となるparentをGridLayoutで設定しています。
(2)では、groupを作成し、それをparentに追加しています。groupはGridLayoutによって横2つに分けられています。
(3)では、textを作成し、それをgroupに追加しています。gridData.horizontalSpanで横の区画を2つ分消費するように設定しています。
(4)以下でbuttonを作成し、groupに追加しています。groupは横2つに分かれているので、buttonは横に並びます。
とりあえずここまでの動作を確認してみましょう。
Hello Worldの動作確認のときと同じように、マニフェスト・エディタの[Overview]タブの[Launch an Eclipse application]をクリックしてください。
ランタイム・ワークベンチが起動するので、上のように[Window]→[Show View]→[Other...]→[dictionary.category]→[dictionary.view]と選択するとビューが起動します。カテゴリー名やビューの名前を変更していた場合は該当する場所にあるはずです。
上のように、とりあえず、単語検索というグループにテキストボックスとボタン2つが入っているGUIができました。
ちなみに、上の図では、ドラッグしてビューの位置を左に移動しています。
次は、辞書の表示部分を追加します。今回の辞書プラグインは、サイトから単語の意味を取ってきて表示するようにするので、ブラウザを用いて表示します。以下のようにしてブラウザを追加しましょう。
DicView.java
・ ・ import org.eclipse.swt.browser.Browser; ・ (省略) ・ ・ public class DicView extends ViewPart { ・ ・ public void createPartControl(Composite parent) { ・ ・ (省略) ・ ・ Browser browser = new Browser(parent, SWT.MULTI | SWT.BORDER); gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; browser.setLayoutData(gridData); } ・ ・ }
ここでは、browserを作成して、parentに追加しています。gridData.horizontalAlignment,gridData.verticalAlignmentを両方ともGridData.FILLにして、parentの残りスペースをすべて使うように設定し、gridData.grabExcessHorizontalSpace,gridData.grabExcessVerticalSpaceを両方trueにすることで、ビューの大きさに合わせてbrowserの大きさも変わるように設定しています。
この状態で実行すると、上のようになり、下が白くなりました。この部分がブラウザになっています。
このままだと、形が不恰好なので、下のように変更します。
・ ・ ・ public void createPartControl(Composite parent) { parent.setLayout(new GridLayout(1, false)); Group group = new Group(parent, SWT.NONE); group.setText("単語検索"); group.setLayout(new GridLayout(2, false)); group.setLayoutData(new GridData(210, 60)); Text text = new Text(group, SWT.SINGLE | SWT.BORDER); GridData gridData = new GridData(190, 15); gridData.horizontalSpan = 2; text.setLayoutData(gridData); Button button = new Button(group, SWT.PUSH); button.setLayoutData(new GridData(70, 25)); button.setText("search"); Button button2 = new Button(group, SWT.PUSH); button2.setLayoutData(new GridData(70, 25)); button2.setText("clear"); Browser browser = new Browser(parent, SWT.MULTI | SWT.BORDER); gridData = new GridData(); gridData.horizontalAlignment = GridData.FILL; gridData.verticalAlignment = GridData.FILL; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; browser.setLayoutData(gridData); } ・ ・
上の赤字の部分を追加すると、下のようになり、GUIが完成しました。
まだボタンを押しても何もならないので、次のステップはアクションを追加するということになります。