import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*; 


class MausLauschenAnonym
{
	boolean tasteGedrückt;
	
	public static void main(String[] args)
	{
		Display display = new Display();
		new MausLauschenAnonym();
		// Schleife wird solange durchlaufen, wie noch 
		// nicht geschlossene Fenster vorhanden sind		
		while(display.getShells().length != 0)
			if(!display.readAndDispatch())
				display.sleep();

	}

	public MausLauschenAnonym()
	{
		// Anlegen des Fensters
		Display display = Display.getCurrent();
		if(display == null)
			display = new Display();
		Shell dasFenster = new Shell(display);

		dasFenster.setText("Testfenster für Mausbewegung");
		dasFenster.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
		dasFenster.setSize(300, 200);
		dasFenster.setLocation(0,0);

		// Hinzufügen des Lauschobjekts für Nachrichten vom
		// Typ Mausbewegung
		dasFenster.addMouseMoveListener(
			new MouseMoveListener(){
				public void mouseMove(MouseEvent e)
				{
					// Weiterverarbeitung der Nachricht: Ausgabe einer Statusmeldung
					// in der Konsole
					
					// button enthält die Nummer der gedrückten Taste(n)
					if(tasteGedrückt)
						System.out.print("Maus wurde bei gedrückter Taste bewegt, ");
					else
						System.out.print("Maus wurde bewegt, ");
					// Ausgabe der Mausposition
					System.out.println("Position: " + e.x + ", " + e.y);
				}
			}
		);
		dasFenster.addMouseListener(
			new MouseAdapter(){
				public void mouseDown(MouseEvent e)
				{
					tasteGedrückt = true;
				}
				
				public void mouseUp(MouseEvent e)
				{
					tasteGedrückt = false;
				}				
			}
		);
		dasFenster.open();
	}
}

