Subversion Repositories Applications.papyrus

Rev

Rev 1987 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        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, {targetElmId:"", templateCssString:".dojoHtmlResizeHandle {\n\tfloat: right;\n\tposition: absolute;\n\tright: 2px;\n\tbottom: 2px;\n\twidth: 13px;\n\theight: 13px;\n\tz-index: 20;\n\tcursor: nw-resize;\n\tbackground-image: url(grabCorner.gif);\n\tline-height: 0px;\n}\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ResizeHandle.css"), templateString:"<div class=\"dojoHtmlResizeHandle\"><div></div></div>", postCreate:function () {
        dojo.event.connect(this.domNode, "onmousedown", this, "_beginSizing");
}, _beginSizing:function (e) {
        if (this._isSizing) {
                return false;
        }
        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 (e) {
        try {
                if (!e.clientX || !e.clientY) {
                        return;
                }
        }
        catch (e) {
                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;
        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 (e) {
        dojo.event.disconnect(dojo.body(), "onmousemove", this, "_changeSizing");
        dojo.event.disconnect(dojo.body(), "onmouseup", this, "_endSizing");
        this._isSizing = false;
}});