亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? birtdndmanager.js

?? 基于eclipse的birt報(bào)表!!! 是個(gè)web項(xiàng)目!
?? JS
字號(hào):
/******************************************************************************
 *	Copyright (c) 2004 Actuate Corporation and others.
 *	All rights reserved. This program and the accompanying materials 
 *	are made available under the terms of the Eclipse Public License v1.0
 *	which accompanies this distribution, and is available at
 *		http://www.eclipse.org/legal/epl-v10.html
 *	
 *	Contributors:
 *		Actuate Corporation - Initial implementation.
 *****************************************************************************/

BirtDndManager = function( ) { 

	//An item is dragging
this.isDragging = false;

};

BirtDndManager.prototype = {

	__dropTargetManager: null, //PRIVATE - extending classes must use accessor method
	
	__mousemoveHandlerFunction: null,
	
	__dropHandlerFunction: null,
		
	currentDropTarget: null, //Element that is the current valid drop target
	
	currentDragElement: null, //Element that is currently being dragged
	
	
	/**
	Extending classes should use this method to set the drop target manager if
	custom drop behavior is desired
	@param {DropTargetManager}
	*/
	setDropTargetManager: function( dTargetManager)
	{
		this.__dropTargetManager = dTargetManager;
	},
		
	/**
	Drop targets call this method to register as accepting "dragType" items
	*/		
	addAssociation: function(dragType, targetHtmlId, target)
	{
		if(this.__dropTargetManager == null)
		{
			throw new WRError("BirtDndManager", "DropTargetManager not set");
		}
		this.__dropTargetManager.addAssociation(dragType, targetHtmlId, target);
	},
	
	/**
	Delete an association when the corresponding html element is removed
	@param dragType
	@param dropTargetId id attribute of html element to remove
	*/
	deleteAssociation: function(dragType, htmlId)
	{
		if(this.__dropTargetManager == null)
		{
			throw new WRError("BirtDndManager", "DropTargetManager not set");
		}
		this.__dropTargetManager.deleteAssociation(dragType, htmlId);
	},
	
	/**
	startDrag redefines itself the first time it is called based on the desired type of drag drop behavior.<b>
	*/ 
	startDrag: function(element, event, dragType)
	{
			//If there is no drop target manager, define startDrag as default
		if(this.__dropTargetManager == null)
		{
			this.startDrag = this.__getDefaultStartDrag();			
		}
		else
		{
			this.startDrag = this.__getCustomStartDrag();
		}
		this.startDrag(element, event, dragType);
	},
	
	/**
	Default start drag function handles elements that drag but do not have drop targets
	@returns {function} default start drag function
	*/
	__getDefaultStartDrag: function()
	{
		return function(element, event, dragType)
		{
			debug("default startDrag");
			if(!this.isDragging)
			{
				this.eventMouseout = this.elementMouseout.bindAsEventListener(this);
			
				this.__mousemoveHandlerFunction = this.__moveElement.bindAsEventListener(this);
				this.__dropElementFunction = this.__dropElement.bindAsEventListener(this);
			
				var zIndex = this.__activateDragMask();
				this.__elementSetUp(element, event, zIndex);
				this.__startDragObservers(this.__mousemoveHandlerFunction, this.__dropElementFunction);
			}
			this.isDragging = true;
		}
	},
	
	/**
	Custom start drag function handles elements that have drop targets
	@returns {function} custome start drag function
	*/
	__getCustomStartDrag: function()
	{	
		return function(element, event, dragType)
		{
			debug("custom startDrag");
			if(!this.isDragging)
			{
				
				if(dragType == null) //There are no drop targets
				{
					this.__mousemoveHandlerFunction = this.__moveElement.bindAsEventListener(this);
					this.__dropElementFunction = this.__dropElement.bindAsEventListener(this);
				}
				else
				{
					this.__dropTargetManager.setUpForDrag(dragType);
					this.__mousemoveHandlerFunction = this.__moveElementWithTarget.bindAsEventListener(this);
					this.__dropElementFunction = this.__dropElementWithTarget.bindAsEventListener(this);				
				}		
				this.eventMouseout = this.elementMouseout.bindAsEventListener(this);
				
				var zIndex = this.__activateDragMask();
				this.__elementSetUp(element, event, zIndex);
				this.__startDragObservers(this.__mousemoveHandlerFunction, this.__dropElementFunction);
			}
			this.isDragging = true;
		}
	},
	
	__activateDragMask: function()
	{
		return Mask.show();
	},
	
	__deactivateDragMask: function()
	{
		Mask.hide();
	},

	/**
	Set up an element to be dragged
	*/
	__elementSetUp: function(elem, event, zIndex)
	{	
		//TODO if removing selections is kept, move to utility funciton
		//remove any existing selections
		if(document.selection)
		{
			document.selection.empty();
		}
		else if(window.getSelection)
		{
			var selection = window.getSelection();
			if(selection)
			{
				selection.removeAllRanges();
			}
		}
	
		this.currentDragElement = elem;
		this.currentDragElement.oldZIndex = this.currentDragElement.style.zIndex;
		this.currentDragElement.style.zIndex = zIndex;
		this.currentDropTarget = null;
			//Location of mouse
		var mouseX = Event.pointerX(event);
		var mouseY = Event.pointerY(event);
			//Distance from the edge of the element to edge of browser
		var offsets = Position.cumulativeOffset(elem);
			//Distance from the edge of the element of mouse
		elem.offsetX =  (mouseX - offsets[0]);
		elem.offsetY =  (mouseY - offsets[1]);
			
			//Used for revert effect
		elem.originalTop = parseInt(elem.style.top || '0');
		elem.originalLeft = parseInt(elem.style.left || '0');		 
	},
	
	/**
	Start drag event observing
	*/
	__startDragObservers: function(mousemoveHandlerFunction, dropHandlerFunction)
	{	
		Event.observe(document, "mousemove", mousemoveHandlerFunction, false);
		Event.observe(document, "mouseup", dropHandlerFunction, false);
	},	
	
	/**
	Move element
	*/
	__moveElement: function(event)
	{
		var xPos = Event.pointerX(event);
		var yPos = Event.pointerY(event);
		
		this.__moveCurrentDragElement(xPos, yPos);				
	},
		
	/**
	Move element and use DropTargetManager to check if it can be dropped
	*/
	__moveElementWithTarget: function(event)
	{	
		var xPos = Event.pointerX(event);
		var yPos = Event.pointerY(event);
		
		this.__moveCurrentDragElement(xPos, yPos);
		
		var oldDropTarget = this.currentDropTarget; //is the state changing?
		var dropTarget = this.__dropTargetManager.getDropTarget(xPos, yPos);
		
			//Change indicator to drop allowed
		if(dropTarget)
		{
			this.currentDropTarget = dropTarget;				
			if(!oldDropTarget) 
			{
				var nodes = this.currentDragElement.childNodes;
				this.toggleDropIndicator(true, nodes);
			}
		}
		else //Change indicator to drop forbidden
		{
			this.currentDropTarget = null;
			if(oldDropTarget)
			{
				var nodes = this.currentDragElement.childNodes;
				this.toggleDropIndicator(false, nodes);
			}
		}			
	},
	
	__moveCurrentDragElement: function(x, y)
	{
		var offsets = Position.cumulativeOffset(this.currentDragElement);
	    	//subtract the element's current left, top coordinates from the offsets
	    offsets[0] -= parseInt(this.currentDragElement.style.left || '0');
	    offsets[1] -= parseInt(this.currentDragElement.style.top || '0');
	        
	    var style = this.currentDragElement.style;
	     
	    	//take current mouse position, subtract difference in drag object position, s
	    style.left = (x - offsets[0] - this.currentDragElement.offsetX) + "px";
	    style.top  = (y - offsets[1] - this.currentDragElement.offsetY) + "px";   
	},
	
	/**
	Check if the mouse button is no longer pressed, if not, call
	eventDropped. (IE specific)<b>
	*/ 
	__mouseStillDown: function(event)
	{
		/**
		Check that the mouse button is still down
		(used to detect roll off the screen in IE)
		*/
		//debug("check mouse down");
			//TODO refine this Check that element is really moving	
		if(!event.which && event.button == "0")
		{
			this.eventDropped(event);
			return true;
		}
		return false;
	},
	
		
	/**
	Handle mouseout of drag element
	*/
	elementMouseout: function(event)
	{
		//debug("mouseout");
		var target = Event.element( event );
		if(target.tagName.toLowerCase() == "iframe")
		{
			Event.stop(event);
			this.eventDropped(event);
		}
		
	},
	
	__dropElement: function(event)
	{
		this.isDragging = false;

	    Event.stopObserving(document, "mousemove", this.__mousemoveHandlerFunction);
	    Event.stopObserving(document, "mouseup", this.__dropElementFunction);
	    Event.stopObserving(document, "mouseout", this.eventMouseout);
	    this.__deactivateDragMask();
		this.currentDragElement.style.zIndex = this.currentDragElement.oldZIndex;
	},
	
	__dropElementWithTarget: function(event)
	{
		this.__dropElement(event);
	    
	    this.__dropTargetManager.dropElementWithTarget(event, this.currentDragElement, this.currentDropTarget);
	},
	
     
     /**
     Toggle drop indicator to show if item can be dropped
     @param accept {boolean} Indicates if item is accepted
     @param nodes {Array} Potential imageHolder nodes //TODO once indicator is decided on can be made more efficient
     */
     toggleDropIndicator: function(accept, nodes)
     {     	
		for(var j = 0 ; j < nodes.length ; j++)
		{
			if(nodes[j].imageHolder)
			{
				accept ? nodes[j].childNodes[0].style.display = "none" : nodes[j].childNodes[0].style.display = "block";
				accept ? nodes[j].childNodes[1].style.display = "block" : nodes[j].childNodes[1].style.display = "none";
				break;
			}
		}
     }
       
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频免费看| 国内精品不卡在线| 欧美一区二区观看视频| 日本最新不卡在线| 欧美一卡二卡在线观看| 美腿丝袜亚洲一区| 色婷婷狠狠综合| 精品国产区一区| 亚洲国产精品久久不卡毛片| 国产成人自拍高清视频在线免费播放| 日韩一区二区三区视频在线观看| 成人av免费在线播放| 精品国产一二三| 日本va欧美va精品发布| 欧美日韩精品欧美日韩精品一| 色综合视频在线观看| 国产精品丝袜黑色高跟| 国产美女精品在线| 精品国免费一区二区三区| 天堂成人国产精品一区| 欧美日韩一区二区在线观看| 国产精品系列在线| 国产福利91精品| 国产精品久久久久9999吃药| 国产suv精品一区二区6| 日本一区二区在线不卡| 豆国产96在线|亚洲| 国产精品久久久久久久久图文区 | 久久精品视频免费观看| 精品一区二区久久久| 日韩精品在线网站| 午夜日韩在线电影| 国产精品视频一二三区 | 人人精品人人爱| 2022国产精品视频| 一本色道亚洲精品aⅴ| 九色porny丨国产精品| 亚洲日本在线看| 国产女主播视频一区二区| 欧美日韩中文字幕精品| 成人免费av在线| 久久丁香综合五月国产三级网站| 欧美福利视频一区| 成人天堂资源www在线| 日韩vs国产vs欧美| 国产欧美日韩亚州综合| 欧美电视剧免费全集观看| 欧美性猛交xxxxxxxx| 99re6这里只有精品视频在线观看| 久久精品水蜜桃av综合天堂| 色综合网站在线| 国产一区不卡视频| 久久av中文字幕片| 香蕉加勒比综合久久| 亚洲柠檬福利资源导航| 国产精品素人视频| 国产日产亚洲精品系列| 久久综合九色综合97_久久久| 加勒比av一区二区| 日本中文字幕一区二区有限公司| 精品精品欲导航| 日韩免费一区二区三区在线播放| 蜜桃精品在线观看| 亚洲一区视频在线观看视频| 亚洲欧美一区二区三区久本道91| 欧美日韩国产天堂| 色综合久久综合| 日本韩国一区二区三区视频| 色综合 综合色| 91久久精品一区二区| 91行情网站电视在线观看高清版| 精品一区二区免费在线观看| 精品国产乱码久久久久久蜜臀| 中文字幕一区二区三区乱码在线| 99视频一区二区| 欧美日韩国产中文| 国产精品午夜在线观看| 裸体歌舞表演一区二区| 不卡一区在线观看| 精品国产一二三区| 婷婷亚洲久悠悠色悠在线播放| 亚洲欧美日韩综合aⅴ视频| 蓝色福利精品导航| 欧美日韩国产大片| 精品人在线二区三区| 国产精品久久一卡二卡| 午夜视黄欧洲亚洲| 成人h动漫精品| 日韩一区二区三区视频在线 | 欧美区视频在线观看| 91精品久久久久久久91蜜桃| 久久久久97国产精华液好用吗 | 国产mv日韩mv欧美| 欧美日韩国产综合久久| 国产亚洲一区字幕| 水蜜桃久久夜色精品一区的特点| 日本一区二区三区视频视频| 午夜欧美视频在线观看| 国产999精品久久久久久绿帽| 久久99精品国产.久久久久| 91麻豆国产精品久久| 久久久国产一区二区三区四区小说 | 亚洲一区二区中文在线| 国产不卡在线视频| 日韩精品资源二区在线| 亚洲婷婷在线视频| 丁香一区二区三区| 精品国产一区久久| 奇米777欧美一区二区| 欧美亚洲高清一区| 亚洲三级在线观看| 成人丝袜高跟foot| 久久影院视频免费| 国产在线播精品第三| 久久久精品一品道一区| 国产一区二区三区高清播放| 欧美一级xxx| 五月婷婷激情综合网| 欧美日韩成人综合天天影院 | 91精品国产品国语在线不卡| 国产精品日韩成人| 国产91精品露脸国语对白| 国产日产精品1区| 国产91色综合久久免费分享| 中文字幕国产精品一区二区| 国产成人欧美日韩在线电影| 久久网这里都是精品| 国产成人啪免费观看软件| 国产精品欧美一级免费| 99精品国产99久久久久久白柏| 欧美日韩一级视频| 视频一区中文字幕| 欧美大片顶级少妇| 成人av集中营| 亚欧色一区w666天堂| 欧美一级在线免费| 国产成人夜色高潮福利影视| 亚洲色图欧美在线| 欧美日韩中字一区| 精品无人码麻豆乱码1区2区| 国产拍欧美日韩视频二区| 91原创在线视频| 日韩高清不卡一区二区| 国产精品看片你懂得| 666欧美在线视频| 成人丝袜18视频在线观看| 亚洲第一主播视频| 亚洲国产成人一区二区三区| 制服丝袜中文字幕一区| 波波电影院一区二区三区| 午夜电影网一区| 亚洲男人的天堂网| 欧美电影免费观看完整版| 色婷婷国产精品久久包臀| 国产成人在线视频网站| 亚洲成人免费视| 亚洲三级在线看| 中文字幕不卡在线播放| 精品福利一区二区三区免费视频| 视频一区中文字幕| 亚洲日本乱码在线观看| 欧美草草影院在线视频| 在线观看国产精品网站| 97精品国产露脸对白| 成人三级伦理片| 国产精品一区免费在线观看| 久久精品国产色蜜蜜麻豆| 亚洲一区二区三区不卡国产欧美| 一本久久a久久精品亚洲| 国产91精品在线观看| 国产精品一区二区在线观看不卡| 日本一区二区成人在线| 精品精品欲导航| 亚洲国产高清aⅴ视频| 国产精品女同互慰在线看| 亚洲视频资源在线| 午夜久久久影院| 久久精品久久久精品美女| 国内偷窥港台综合视频在线播放| 日韩毛片视频在线看| 一区二区三区精品视频在线| 丝袜国产日韩另类美女| 国产精品一区专区| 成人一级视频在线观看| 在线中文字幕一区二区| 欧美一个色资源| 亚洲日本丝袜连裤袜办公室| 午夜精品久久久| 国产白丝网站精品污在线入口| 视频一区国产视频| 成人高清免费在线播放| 欧美福利视频导航| 中文字幕一区二区三区四区| 天堂av在线一区| 99riav一区二区三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 99re这里只有精品视频首页| 91女人视频在线观看| 欧美性色黄大片手机版| 日韩一区二区不卡|