拡張ポイントの設定が終わったので、辞書プラグインの実装に入ります。
まずは、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が完成しました。
まだボタンを押しても何もならないので、次のステップはアクションを追加するということになります。