// Diese Aufgabe ist bloed, ich hasse sie. 
// Deswegen tut Sie auch nicht gescheit.

import java.awt.*;
import java.awt.event.*;

public class a14 extends Panel implements ActionListener{
	int x,y,x1,y1,x2,y2,l,w;
    Graphics g;
    boolean geradeGeloescht=false;
	Label ausgabe=new Label("Ziehen Sie mit der Maus ein Rechteck auf !");
	Button b=new Button("Löschen");
			
	public a14(){
		this.addMouseListener(new mausGedrueckt()); 
		this.addMouseMotionListener(new mausGedrueckt()); 
		add(ausgabe);
		add(b);
		b.addActionListener(this);
	}
	
	class mausGedrueckt implements MouseListener, MouseMotionListener{
		public void mouseEntered(MouseEvent e){}
		public void mouseClicked(MouseEvent e){}
		public void mouseExited(MouseEvent e){}

		public void mouseMoved(MouseEvent e){}
		
		public void mouseDragged(MouseEvent e){
			x2=e.getX();
			y2=e.getY();
			if (!geradeGeloescht){
				malen(x2, y2);
			}
			geradeGeloescht=false;
			welcheRichtung(x2, y2);
			malen(x2, y2);
		}

		//Die ersten Koordinaten (Maus wird gedrueckt)
		public void mousePressed(MouseEvent e){
			x1=e.getX();
			y1=e.getY();	
		}
		// Die anderen Koordinaten (Maus wird losgelassen)
		public void mouseReleased(MouseEvent e){
			x2=e.getX();
			y2=e.getY();
			malen(x2, y2);
			welcheRichtung(x2, y2);
			endgueltigMalen(x2, y2);
		}

		public void welcheRichtung(int x2, int y2){
			// Hier kommen die Abfragen zwecks in welche
			// Richtung mit der Maus das so gezogen wurde 
			if ((x1<x2)&&(y1<y2)){
			x=x1; y=y1; l=x2-x1; w=y2-y1;	
			}
			else
			if ((x1>x2)&&(y1>y2)){
			x=x2; y=y2; l=x1-x2; w=y1-y2;	
			}
			else
			if ((x1<x2)&&(y1>y2)){
			x=x1; y=y2; l=x2-x1; w=y1-y2;	
			}
			else
			if ((x1>x2)&&(y1<y2)){
			x=x2; y=y1; l=x1-x2; w=y2-y1;	
			}
		}


		public void malen(int x2, int y2){
			//Jetzt Rechteck malen
			
			g=getGraphics();
			g.setXORMode(getBackground());
			g.drawRect(x,y,l,w);
			g.setPaintMode();
		}
		
		
		public void endgueltigMalen(int x2, int y2){
			//Jetzt Rechteck malen
			
			g=getGraphics();
			g.setColor(Color.gray);
			g.drawRect(x,y,l,w);
		}

	}
	

	// Zeichenflaeche loeschen
	public void actionPerformed(ActionEvent e){
		geradeGeloescht=true;
		repaint();	
    }

	public static void main(String[]args){
		Frame Fenster=new Frame("Aufgabe 14");
		Fenster.add("Center", new a14());
		Fenster.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){System.exit(0);}});
			Fenster.pack();
			Fenster.setSize(350,350);
			Fenster.setVisible(true);	
	}	
}
			
 	