UI Tools in Eclipse Indigo: WindowBuilder

Die Indigo (3.7) Updatesite des WindowBuilder bringt uns dann die gewünschte Auswahl. Je nach Bedarf bitte die entsprechenden Features auswählen – ich habe jetzt hier nur den SWTDesigner genommen.

Abb. 5: WindowBuilder Features

Nach der Installation sollten Sie einen Blick auf die Einstellungen des WindowBuilder werfen, da diese u.a. darüber entscheiden, wie der Code generiert werden soll. Die Einstellungsmöglichkeiten sind sehr umfangreich, sodass sich fast alle individuellen Programmierstile damit abbilden lassen.

Abb. 6: WindowBuilder-Einstellungen

Der WindowBuilder ist ein bi-direktionales Tool: Sie können das Design per Drag’n’Drop ändern oder im Quellcode – der jeweils andere Teil wird dynamisch angepasst. Um das auszuprobieren, legen wir jetzt ein SWT/JFace-Java-Projekt an und innerhalb des Projektes einen RCP ViewPart. Der WindowBuilder liefert eine Vielzahl an leistungsfähigen Wizards mit.

Abb. 7: WindowBuilder Wizards

Öffnen wir den Viewpart im Designer, dann finden wir dort alle UI-Elemente in einer Palette, aus der diese per Drag’n’Drop in den Design-Bereich gezogen werden können. Zu jedem Element können die Eigenschaften angepasst werden.

Abb. 8: WindowBuilder Design by Drag’n’Drop in Action

In einer Baumdarstellung wird uns die Struktur der Anwendung sehr übersichtlich dargestellt.

Abb. 9: WindowBuilder Komponentenstruktur

Zu jedem Zeitpunkt des Designs können wir das Ergebnis ‚live‘ durch einen Mausklick ansehen.

Abb. 10: WindowBuilder Live Preview

Auch der Wechsel zwischen Programmcode, Design und Databinding ist sehr einfach.

Abb. 11: WindowBuilder – leichtes Wechseln zwischen Source- und Designbereich

Ohne eine Zeile einzugeben, wurde vom WindowBuilder dieser Code erzeugt:

public class MyViewPart extends ViewPart {
	public static final String ID = "my.wb.test.MyViewPart"; //$NON-NLS-1$
	private Text text;
	public MyViewPart() {
	}
	@Override
	public void createPartControl(Composite parent) {
		Composite container = new Composite(parent, SWT.NONE);
		container.setLayout(new GridLayout(2, false));
		{
			Label lblMyLabel = new Label(container, SWT.NONE);
			lblMyLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
			lblMyLabel.setText("my Label");
		}
		{
			text = new Text(container, SWT.BORDER);
			text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
		}
		createActions();
		initializeToolBar();
		initializeMenu();
	}
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.