import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;

class ButtonMitListenerAnonym
{
	Shell einFenster;
	Button eineSchaltfläche;
	Text einTextFeld;

	public static void main(String[] args)
	{
		Display display = new Display();
		new ButtonMitListenerAnonym("Schaltfläche mit Nachrichtenverarbeitung");
		// Schleife wird solange durchlaufen, wie noch 
		// nicht geschlossene Fenster vorhanden sind		
		while(display.getShells().length != 0)
			if(!display.readAndDispatch())
				display.sleep();
	}

	public ButtonMitListenerAnonym(String Titel)
	{
		// Anlegen des Fensters
		Display display = Display.getCurrent();
		if(display == null)
			display = new Display();
		einFenster = new Shell(display);
		
		einFenster.setSize(300, 100);
		einFenster.setText(Titel);
		einFenster.setLayout(new FillLayout(SWT.VERTICAL));

		eineSchaltfläche =  new Button(einFenster, SWT.PUSH);
		eineSchaltfläche.setText("Text eintragen");

		// Schalfläche bekommt ein Lauschobjekt in Form einer anonymen Klasse zugewiesen
		eineSchaltfläche.addSelectionListener(
			new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e)
				{
					// Das Attribut widget gibt das Quell-Widget zurück
					if (e.widget == eineSchaltfläche)
					{
						// Beispieltext wird im Textfeld angehängt
						einTextFeld.setText(einTextFeld.getText() + " Test text wurde ausgegeben.");
					}
				}
			}
		);

		einTextFeld = new Text(einFenster, SWT.BORDER|SWT.WRAP);
		einFenster.open();
	}

}
