GUIを構成する

拡張ポイントの設定が終わったので、辞書プラグインの実装に入ります。

まずは、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が完成しました。
まだボタンを押しても何もならないので、次のステップはアクションを追加するということになります。


<前へ 次へ>