ASi

JFaceでHelloWorld

1. ともかく窓を出したい。

GUIアプリでのエントリポイントはそこだ。下記を実行すると中身の何もない窓がぴろっと出ます。

import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Display;

public class Main {
	public static void main(String[] args) {
		ApplicationWindow mainWindow = new ApplicationWindow(null);
		mainWindow.setBlockOnOpen(true);
		mainWindow.open();
		Display.getCurrent().dispose();
	}
}

2. HelloWorld!

で、ちゃんと MVC フレームワークである Viewer を使って実装したものがコレ。実行するとHelloWorldと書かれたテキストボックス一個だけの窓が出ます。

import org.eclipse.jface.viewers.ContentViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

class HelloWorldViewer extends ContentViewer{
	private Text text_;
	
	public HelloWorldViewer(Composite parent) {
		text_ = new Text(parent, 0);
		text_.setText("HelloWorld");
	}

	@Override
	public Control getControl() {
		return text_;
	}

	@Override
	public ISelection getSelection() {
		return null;
	}

	@Override
	public void refresh() {
	}

	@Override
	public void setSelection(ISelection selection, boolean reveal) {
	}
}

class MainWindow extends ApplicationWindow{
	public MainWindow(Shell parentShell) {
		super(parentShell);
	}

	protected Control createContents(Composite parent){
		HelloWorldViewer viewer = new HelloWorldViewer(parent);
		return viewer.getControl();
	}
}

public class Main {
	public static void main(String[] args) {
		MainWindow mainWindow = new MainWindow(null);
		mainWindow.setBlockOnOpen(true);
		mainWindow.open();
		Display.getCurrent().dispose();
	}
}

3.資料

Eclipse Workbench以外でのEclipse GUIの使用 第1回: スタンドアロン・モードでJFaceおよびSWTを使用する
この記事が 2001/3/1 の物だってことに驚く。海外は2001年にはもうこんな世界だったのか。レベルが違いすぎる(悲)