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 MausLauschenMitAdapter extends MouseAdapter implements MouseMoveListener
{
	boolean tasteGedrückt;
	
	public static void main(String[] args)
	{
		Display display = new Display();
		new MausLauschenMitAdapter();
		// Schleife wird solange durchlaufen, wie noch 
		// nicht geschlossene Fenster vorhanden sind		
		while(display.getShells().length != 0)
			if(!display.readAndDispatch())
				display.sleep();

	}

	public MausLauschenMitAdapter()
	{
		// 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(this);
		dasFenster.addMouseListener(this);
		dasFenster.open();
	}

	// Implementierung der Methode der Schnittstelle 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);
	}
	

	// Implementierung der Methoden der Schnittstelle MouseListener
	public void mouseDown(MouseEvent e)
	{
		tasteGedrückt = true;
	}
	
	public void mouseUp(MouseEvent e)
	{
		tasteGedrückt = false;
	}
}



