1 /**
  2  * potree.js 
  3  * http://potree.org
  4  *
  5  * Copyright 2012, Markus Sch�tz
  6  * Licensed under the GPL Version 2 or later.
  7  * - http://potree.org/wp/?page_id=7
  8  * - http://www.gnu.org/licenses/gpl-3.0.html
  9  *
 10  */
 11 
 12 /**
 13  * 
 14  * @class
 15  */
 16 function MouseListener(){
 17 }
 18 
 19 MouseListener.x = null;
 20 MouseListener.y = null;
 21 MouseListener.pressedKeys = new Array();
 22 
 23 MouseListener.listener = new Array();
 24 
 25 MouseListener.addListener = function(listener){
 26 	MouseListener.listener.push(listener);
 27 };
 28 
 29 MouseListener.removeListener = function(listener){
 30 	MouseListener.listener.remove(listener);
 31 };
 32 
 33 MouseListener.mouseDown = function(event){
 34 	MouseListener.pressedKeys.push(event.button);
 35 
 36 	for(var i = 0; i < MouseListener.listener.length; i++){
 37 		MouseListener.listener[i].invokeMouseDown(event);
 38 	}
 39 	
 40 	return true;
 41 };
 42 
 43 MouseListener.mouseUp = function(event){
 44 	MouseListener.pressedKeys.remove(event.button);
 45 	for(var i = 0; i < MouseListener.listener.length; i++){
 46 		MouseListener.listener[i].invokeMouseUp(event);
 47 	}
 48 	
 49 	return true;
 50 };
 51 
 52 MouseListener.mouseWheel = function(event){
 53 	var evt=window.event || event; //equalize event object
 54     var delta=evt.detail? evt.detail*(-120) : evt.wheelDelta; //check for detail first so Opera uses that instead of wheelDelta
 55 	
 56 	for(var i = 0; i < MouseListener.listener.length; i++){
 57 		MouseListener.listener[i].invokeMouseWheel(delta);
 58 	}
 59 };
 60 
 61 MouseListener.mouseMove = function(event){
 62 	if(MouseListener.x == null){
 63 		MouseListener.x = event.screenX;
 64 		MouseListener.y = event.screenY;
 65 	}
 66 	
 67 	var diffX = event.screenX - MouseListener.x;
 68 	var diffY = event.screenY - MouseListener.y;
 69 	MouseListener.x = event.screenX;
 70 	MouseListener.y = event.screenY;
 71 	
 72 	
 73 	
 74 	if(MouseListener.pressedKeys.length > 0){
 75 		for(var i = 0; i < MouseListener.listener.length; i++){
 76 			MouseListener.listener[i].invokeMouseDrag(event, MouseListener.pressedKeys, diffX, diffY);
 77 		}
 78 	}else{
 79 		for(var i = 0; i < MouseListener.listener.length; i++){
 80 			MouseListener.listener[i].invokeMouseMove(event, diffX, diffY);
 81 		}
 82 	}
 83 	
 84 	return true;
 85 	
 86 };