Eclipse3.7 (Indigo) の新機能を使ってみる。(1)

先週、Eclipse3.7 Indigoがリリースされました。

http://www.eclipse.org/downloads/

新機能はいろいろありますが、その目玉の一つであるWindowBuilderをまず触ってみました。

WindowBuilderはSwing/SWTGUI画面をコンポーネントのドラッグ&ドロップでRAD開発できるツールです。

SWTということは、Eclipse PluginのWizardPageなんかもRAD開発できるということです。個人的にはプラグイン開発は画面部分が一番面倒だと思うので、私としてはこれはかなりうれしいです。

ということで、Hello WizardウィザードをWindowBuilderを使って作ってみましょう。

まずは、Indigoをダウンロード。プラグイン開発にはEclipse for RCP and RAP Developersをダウンロードすることをお勧めします。プラグイン開発に必要なプラグインが一式そろっています。

次に、WindowsBuilderのプラグインはダウンロード直後にはまだ入っていないので、インストールします。

  • [Help]-[Install New Software]メニューを選択し、Installウィザードを表示する。
  • 「Work with:」ドロップダウンリストで「Indigo - http://download.eclipse.org/releases/indigo」を選択し、[General Purpose Tools]の下の「SWT Designer」にチェックを入れて[Next>]ボタンを押下する。(SWT Designerを使用するためにはSWT Designer Core」「WindowBuilder Core UI」「WindowBuilder GroupLayout Support」も必要ですが、これらのチェックをオンにしなくても、Eclipseが依存性を自動的に判断してこれらも同時にインストールしてくれます。)


  • 後は画面の指示に従って[Next >][Finish]ボタンを押下する。

これでSWT Designerを使用することが出来るようになりました。

次にHello Wizardウィザードページを表示するプラグインを作成しましょう。

  • [File]-[New]-[Plug-in Project]を選択し、ウィザードの[Project name:]に「HelloWizard」と入力して[Next >]ボタンを押下する。


  • あとはデフォルト値のまま[Next >][Finish]ボタンを押下する。

すると、下記のようにMANIFEST.MFが生成されます。

次に、HelloWizardウィザードを作ります。

  • MANIFEST.MFの[Extensions]タブを開く。(Extension Pointsではありません。よく似ていますがぜんぜん違う機能ですので注意してください。)
  • [Add]ボタンと押下して、[Extension Point Selection]ダイアログを開く。


  • [Extension Point filter]で「new」と入力すると「org.eclipse.ui.newWizard」拡張ポイントが表示されるので、選択し、[Finish]ボタンを押下する。


  • [name]に「HelloCategory」と入力する。


  • [name]に「HelloWizard」[class]にはウィザードとクラス名である「hellowizard.HelloWizard」を[category]にHelloCategoryのid項目である「HelloWizard.category1」を入力する。

この画面の[class*:]のリンクをクリックすると[New Java Class]ダイアログが表示されるので、[Finish]ボタンを押下するとhellowizard.HelloWizardクラスが生成されます。

次にいよいよWizardページです。

  • [File]-[new]-[Class]メニューを選択し、[Java Class]ウィザードを表示する。
  • [Name]に「HelloWizardPage」と入力する。
  • [Superclass]の[Browse]ボタンを押下し、[Super class Selection]ダイアログの[Chose a type]テキストボックスで「wizardpage」と入力すると、「org.eclipse.jface.wizard.WizardPage」がリストボックスに表示されるので、選択して[OK]ボタンを押下する。
  • [Finish]ボタンを押下する

すると「HelloWizardPage」のJavaソースが生成されます。

継承元のWizardPageクラスにはデフォルトコンストラクタがないため、コンパイルエラーが発生しています。

HelloWizardPageのソースを下記のように修正します。

package hellowizard;

import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.widgets.Composite;

public class HelloWizardPage extends WizardPage {
public HelloWizardPage() {
super("Hello Wizard Page");
}

@Override
public void createControl(Composite parent) {
// TODO Auto-generated method stub

}

}

HelloWizardPageは通常のJavaエディターでオープンされていると思いますので、一旦閉じます。

そして、パッケージエクスプローラのHelloWizardPage.java上で右クリックしてコンテキストメニューを表示して[Open with]-[Other]メニューを選択し、「WindowBuilder Editor」を選択して[OK]ボタンを押下します。(※注意 下図のように「WindowBuilder Editor」が2つあるかもしれませんが、アイコンにJが入っている方を選択してください。)

HelloWizardPage.javaSWT Designerで開きましたので[Design]タブを押下してみてください。エラーが出ており、createControlメソッドに追加すべきコードが表示されているので、[Source]タブに戻り、同メソッドを修正します。

再度、[Design]タブを表示すると、でたぁ〜。

Labelを貼り付けて「こんにちは。ウィザード」と入力しましょう。

あとは、HelloWizard.javaを下記のように修正してください。
(addPagesメソッドの追加と、performFinishメソッドの戻り値をtrueに修正。)

package hellowizard;

import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;

public class HelloWizard extends Wizard implements INewWizard {

public HelloWizard() {
// TODO Auto-generated constructor stub
}

@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
// TODO Auto-generated method stub

}

@Override
public void addPages() {
addPage(new HelloWizardPage());
}

@Override
public boolean performFinish() {
// TODO Auto-generated method stub
return true;
}

}


それでは実行してみましょう。

パッケージエクスプローラでHelloWizardプロジェクト上で右クリックでコンテキストメニューを表示し、[Run As]-[Eclipse Application]を選択してください。

すると、もうひとつのEcllipseが立ち上がります。

新しく立ち上がったEclipse上で[File]-[New]-[Other]メニューを選択すると、ウィザード選択ダイアログが開き[HelloCategory]-[HelloWizard]が追加されていると思います。

[HelloCategory]-[HelloWizard]を選択して[Next >]ボタンを押下すると、下記のようなウィザードページが表示されます。

めでたし。めでたし。