import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Hello {
	public static void main(String[] args) {
		Display display = new Display();
	/* Das Display steht für den Bildschirm und die Schnittstelle zum Betriebssystem. Hier werden später beispielsweise die Events abgeholt.*/
	Shell shell = new Shell(display);
	shell.setText("Das erste Fenster"); 

	/* Eine Shell ist bei SWT das, was bei AWT der Frame ist - ein normales Anwendungsfenster. Dieses wird nun als Kind des Displays angelegt und mit einem Fenstertitel versehen.*/
	Button button = new Button(shell, SWT.PUSH);
	button.setText("Klick mich!");
	button.addSelectionListener(new SelectionAdapter() {
		public void widgetSelected(SelectionEvent e) {
			System.out.println("Danke");
		}
	});
/* Definition eines Push-Button mit einem Labeltext und einer Aktion. Im Gegensatz zu AWT/Swing heißt das hier jetzt SelectionListener, funktioniert aber ansonsten genauso.*/
button.setBounds(0, 0, 120, 30); 
/* absolute Position setzen */
shell.open(); 
/* anzeigen */
while (!shell.isDisposed()) {
	if (!display.readAndDispatch()) {
		display.sleep();
	}
} 
/* Solange unsere Shell noch nicht geschlossen wurde - solange wir nur ein einziges Fenster haben, ist das ein einfacher Weg, zu entscheiden, wann wohl das Programm beendet werden soll - solange der Anwender also noch nicht den Close-Button gedrückt hat, pumpen wir jetzt Events, die beim Display ankommen, in das SWT-Rahmenwerk. Das ist die Aufgabe von readAndDispatch(). Die Methode liefert true, wenn weitere Events darauf warten, verarbeitet zu werden und false, wenn momentan nichts weiter zu tun ist. In diesem Fall legen wir unser Programm schlafen. Die Methode sleep() kehrt automatisch zurück, wenn neue Events vom Betriebssystem angekommen sind.*/
display.dispose();
}
} 
/* Ganz wichtig bei jedem SWT-Programm ist es, angeforderte Ressourcen wieder explizit freizugeben. In unserem Fall reicht es, das Display-Objekt wieder zu beseitigen.*/


