//MyCanvasListen.java // //Class to listen to mouse on the listener canvas // //Naomi, Vicky, Christie import java.awt.*; import java.awt.event.*; import java.io.*; class MyCanvasListen extends Canvas implements MouseListener, MouseMotionListener { CanvasObserver observer; int downx = 0, downy = 0, upx = 0, upy = 0; //************************* // // init // //************************* public void init() { }// end init //************************* // // constructor // //************************* public MyCanvasListen() { addMouseListener (this); addMouseMotionListener (this); setBackground(Color.white); setSize(200,200); }// end constructor //************************* // // mousePressed // //************************* public void mousePressed (MouseEvent e) //MouseListener { downx = e.getX(); // Get x and y coordinates downy = e.getY(); // notifyObserver(); }// end mousePressed //************************* // // mouseClicked // //************************* public void mouseClicked (MouseEvent e){} //MouseListener //************************* // // mouseReleased // //************************* public void mouseReleased (MouseEvent e) //MouseListener { upx = e.getX(); upy = e.getY(); notifyObserver(); repaint(); }// end mouseReleased //************************* // // mouseEntered // //************************* public void mouseEntered (MouseEvent e) {} //MouseListener //************************* // // mouseExited // //************************* public void mouseExited (MouseEvent e) {} //MouseListener //************************* // // mouseDragged // //************************* public void mouseDragged (MouseEvent e) { //MouseMotionListener upx = e.getX(); upy = e.getY(); notifyObserver(); repaint(); }// end mouseDragged //************************* // // mouseMoved // //************************* public void mouseMoved (MouseEvent e) {} //MouseMotionListener //************************* // // paint // //************************* public void paint( Graphics g ) { int height, width, startX, startY; g.setColor(Color.black); if( downx >= upx ) //Determine the width and the coord. for the upper-left { //edge of the rect, which will be the smaller of the 2 width = (downx-upx); // numbers (either downx or upx) startX = upx; } else { width=(upx-downx); startX = downx; } if( downy >= upy ) { height = (downy-upy); startY = upy; } else { height=(upy-downy); startY = downy; } g.drawRect(startX, startY, width, height); }// end paint //************************* // // notifyObserver // //************************* private void notifyObserver() { observer.canvasHasChanged(this); }// end notifyObserver //************************* // // get_downx // //************************* public int get_downx() { return downx; } //************************* // // get_downy // //************************* public int get_downy() { return downy; }// end get_downy //************************* // // get_upx // //************************* public int get_upx() { return upx; }// end get_upx //************************* // // get_upy // //************************* public int get_upy() { return upy; }// end get_upy //************************* // // registerAsObserver // //************************* public void registerAsObserver(CanvasObserver observer) { this.observer = observer; notifyObserver(); }// end registerAsObserver }// end class MyCanvasListen