/*
Author : Jasmine Kwok
*/

import java.awt.event.*;
import java.awt.*;
import javax.media.j3d.*;


public class MouseImplementers implements MouseListener, MouseMotionListener
{
	
        private boolean correctCommand;
        private View view;
        private int last_y, current_y;
        private double scale_factor;
	
        public MouseImplementers(View view, double scale_factor){
                correctCommand = false;
                this.view = view;
                this.scale_factor = scale_factor;
                view.setScreenScalePolicy(View.SCALE_EXPLICIT);
        }
	
        public void mouseDragged(MouseEvent me){
                //Zoom in/out
        	
                if(correctCommand){
                	
                        current_y = me.getY();
                        int diff_y = current_y - last_y; //if positive, zoom out 
                	
                	
                        if(diff_y<0){
                        	
                                /*Zoom out*/
                                double currentScreenScale = view.getScreenScale();
                                view.setScreenScale(currentScreenScale-(Math.abs(diff_y)*scale_factor));
                        	
                        	
                        }else if(diff_y>0){
                        	
                                /*Zoom in*/
                                double currentScreenScale = view.getScreenScale();
                                view.setScreenScale(currentScreenScale+(Math.abs(diff_y)*scale_factor));
                        }else{}
                	
                        last_y = current_y;
                }
        }
	
	
	
        public void mousePressed(MouseEvent me){
                if( ( me.isAltDown() && me.getButton() ==MouseEvent.BUTTON1 ) || me.getButton() == MouseEvent.BUTTON2 ){
                        correctCommand = true;
                	
                        last_y = me.getY();
                	
                }
        }
	
	
        public void mouseReleased(MouseEvent me){ correctCommand = false; }	
	
        public void mouseMoved(MouseEvent me){}
	
        public void mouseClicked(MouseEvent me){}
	
        public void mouseEntered(MouseEvent me){}
	
        public void mouseExited(MouseEvent me){}
	
	
}
