<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package mASAdvanced;

import java.applet.Applet;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Vector;

public class Applet4e extends Applet implements ActionListener,MouseListener,MouseMotionListener{
	
	Vector elementCollection;
	Vector scaleableCollection;
	Canvas canv;
	
	public void init(){
		setSize(700,700);
		
		Button b1=new Button("grow");
		Button b2=new Button("move");
		canv=new Canvas();
		canv.setSize(400,400);
		canv.setBackground(Color.yellow);
		
		this.add(b1);
		this.add(b2);
		this.add(canv);
		
		b1.addActionListener(this);
		b2.addActionListener(this);
		
		canv.addMouseListener(this);
		canv.addMouseMotionListener(this);
		
		elementCollection=new Vector();
		scaleableCollection=new Vector();
		
	}
	
	public void paint(Graphics screen){
		doGraphics();
	}
	
	public void moveAllElementsRandom(){
		for(int i=0; i&lt;elementCollection.size(); i++){
			AdvancedPoint cPoint=(AdvancedPoint)elementCollection.get(i);
			cPoint.move((Math.random()*10.0),(Math.random()*10.0));	
		}
	}
	
	public void scaleAllCirclesRandom(){
		for(int i=0; i&lt;scaleableCollection.size(); i++){
			ScaleAble cElement=(ScaleAble)scaleableCollection.get(i);
			cElement.scale(1.1);
		}
	}

	public void actionPerformed(ActionEvent event) {
		System.out.println("I Listened TO THE BUTTON");
		System.out.println(event.getActionCommand());
		
		if(event.getActionCommand().equals("move")){
			System.out.println("MMMM");
			moveAllElementsTowards(200,200);
			doGraphics();
		}
		if(event.getActionCommand().equals("grow")){
			scaleAllCirclesRandom();
			doGraphics();
		}
	}
	
	public void doGraphics(){
		Graphics screen=canv.getGraphics();
		screen.setColor(canv.getBackground());
		
		screen.fillRect(0,0,canv.getWidth(),canv.getHeight());
		for(int i=0; i&lt;elementCollection.size(); i++){
			AdvancedPoint cPoint=(AdvancedPoint)elementCollection.get(i);
			cPoint.draw(screen);
		}
	}

	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseEntered(MouseEvent arg0) {
		System.out.println("entered");
		
	}

	public void mouseExited(MouseEvent arg0) {
		System.out.println("left");
		
	}

	public void mousePressed(MouseEvent mouse) {
		System.out.println("pressed");
		double x=(double)mouse.getX();
		double y=(double)mouse.getY();
		
		addCircle(x,y);
		doGraphics();
	}

	public void mouseReleased(MouseEvent arg0) {
		System.out.println("released");
		
	}
	
	public void addCircle(double x, double y){
		AdvancedCircle cCircle=new AdvancedCircle(x,y);
		cCircle.setDiameter(15);
		cCircle.setFillColor(Color.red);
		elementCollection.add(cCircle);
		scaleableCollection.add(cCircle);
	}

	public void mouseDragged(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void mouseMoved(MouseEvent mouse) {
		moveAllElementsTowards(mouse.getX(),mouse.getY());
		doGraphics();
	}
	
	public void moveAllElementsTowards(double x,double y){
		for(int i=0; i&lt;elementCollection.size(); i++){
			AdvancedPoint cPoint=(AdvancedPoint)elementCollection.get(i);
			double moveX=1;
			if(cPoint.getXPos()&gt;x) moveX=-1;
			double moveY=1;
			if(cPoint.getYPos()&gt;y) moveY=-1;
			cPoint.move(moveX,moveY);
		}
	}
}
</pre></body></html>