Eclipse3.7 (Indigo) の新機能を使ってみる。(1)
先週、Eclipse3.7 Indigoがリリースされました。
http://www.eclipse.org/downloads/
新機能はいろいろありますが、その目玉の一つであるWindowBuilderをまず触ってみました。
WindowBuilderはSwing/SWTのGUI画面をコンポーネントのドラッグ&ドロップで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]ボタンを押下する。
- [All Extensioons]のリストボックスから「org.eclipse.ui.newWizard」を右クリックでコンテキストメニューを表示し、[New]-[category]を選択する。
- [name]に「HelloCategory」と入力する。
- 再度[All Extensioons]のリストボックスから「org.eclipse.ui.newWizard」を右クリックでコンテキストメニューを表示し、[New]-[wizard]を選択する。
- [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.javaがSWT 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 >]ボタンを押下すると、下記のようなウィザードページが表示されます。
めでたし。めでたし。