All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.myfaces.custom.dojo.resource.src.widget.ResizeHandle.js Maven / Gradle / Ivy

/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

dojo.provide("dojo.widget.ResizeHandle");

dojo.require("dojo.widget.*");
dojo.require("dojo.html.layout");
dojo.require("dojo.event.*");

dojo.widget.defineWidget(
	"dojo.widget.ResizeHandle",
	dojo.widget.HtmlWidget,
{
	// summary
	//	The handle on the bottom-right corner of FloatingPane or other widgets that allows
	//	the widget to be resized.
	//	Typically not used directly.

	// targetElmId: String
	//	id of the Widget OR DomNode that I will size
	targetElmId: '',

	templateCssPath: dojo.uri.dojoUri("src/widget/templates/ResizeHandle.css"),
	templateString: '
', postCreate: function(){ dojo.event.connect(this.domNode, "onmousedown", this, "_beginSizing"); }, _beginSizing: function(/*Event*/ e){ if (this._isSizing){ return false; } // get the target dom node to adjust. targetElmId can refer to either a widget or a simple node this.targetWidget = dojo.widget.byId(this.targetElmId); this.targetDomNode = this.targetWidget ? this.targetWidget.domNode : dojo.byId(this.targetElmId); if (!this.targetDomNode){ return; } this._isSizing = true; this.startPoint = {'x':e.clientX, 'y':e.clientY}; var mb = dojo.html.getMarginBox(this.targetDomNode); this.startSize = {'w':mb.width, 'h':mb.height}; dojo.event.kwConnect({ srcObj: dojo.body(), srcFunc: "onmousemove", targetObj: this, targetFunc: "_changeSizing", rate: 25 }); dojo.event.connect(dojo.body(), "onmouseup", this, "_endSizing"); e.preventDefault(); }, _changeSizing: function(/*Event*/ e){ // On IE, if you move the mouse above/to the left of the object being resized, // sometimes clientX/Y aren't set, apparently. Just ignore the event. try{ if(!e.clientX || !e.clientY){ return; } }catch(e){ // sometimes you get an exception accessing above fields... return; } var dx = this.startPoint.x - e.clientX; var dy = this.startPoint.y - e.clientY; var newW = this.startSize.w - dx; var newH = this.startSize.h - dy; // minimum size check if (this.minSize) { var mb = dojo.html.getMarginBox(this.targetDomNode); if (newW < this.minSize.w) { newW = mb.width; } if (newH < this.minSize.h) { newH = mb.height; } } if(this.targetWidget){ this.targetWidget.resizeTo(newW, newH); }else{ dojo.html.setMarginBox(this.targetDomNode, { width: newW, height: newH}); } e.preventDefault(); }, _endSizing: function(/*Event*/ e){ dojo.event.disconnect(dojo.body(), "onmousemove", this, "_changeSizing"); dojo.event.disconnect(dojo.body(), "onmouseup", this, "_endSizing"); this._isSizing = false; } });




© 2015 - 2024 Weber Informatics LLC | Privacy Policy