Changeset 521

Show
Ignore:
Timestamp:
01/18/06 14:11:36 (3 years ago)
Author:
therve@gmail.com
Message:

Add MochiKit.Signal and use it.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • mochikit/branches/scriptaculous/MochiKit/DragAndDrop.js

    r520 r521  
    1515    dojo.require('MochiKit.Effect'); 
    1616    dojo.require('MochiKit.Iter'); 
     17    dojo.require('MochiKit.Signal'); 
    1718} 
    1819 
     
    2223    JSAN.use("MochiKit.Effect", []); 
    2324    JSAN.use("MochiKit.Iter", []); 
     25    JSAN.use("MochiKit.Signal", []); 
    2426} 
    2527 
     
    2830        typeof(MochiKit.DOM) == 'undefined' || 
    2931        typeof(MochiKit.Effect) == 'undefined' || 
    30         typeof(MochiKit.Iter) == 'undefined') { 
     32        typeof(MochiKit.Iter) == 'undefined' || 
     33        typeof(MochiKit.Signal) == 'undefined') { 
    3134        throw ""; 
    3235    } 
    3336} catch (e) { 
    34     throw "MochiKit.DragAndDrop depends on MochiKit.Base, MochiKit.DOM, MochiKit.Effect and MochiKit.Iter!"; 
     37    throw "MochiKit.DragAndDrop depends on MochiKit.Base, MochiKit.DOM, MochiKit.Effect, MochiKit.Iter and MochiKit.Signal!"; 
    3538} 
    3639 
     
    118121        MochiKit.Position.prepare(); 
    119122 
    120         if (this.last_active.isAffected([MochiKit.Event.pointerX(event), 
    121                 MochiKit.Event.pointerY(event)], element)) { 
     123        if (this.last_active.isAffected([event.pageX, event.pageY], element)) { 
    122124            if (this.last_active.options.onDrop) { 
    123125                this.last_active.options.onDrop(element, 
     
    245247    register: function (draggable) { 
    246248        if (this.drags.length === 0) { 
    247             this.eventMouseUp = MochiKit.DOM.bindAsEventListener( 
    248                                     this.endDrag, this); 
    249             this.eventMouseMove = MochiKit.DOM.bindAsEventListener( 
    250                                     this.updateDrag, this); 
    251             this.eventKeypress = MochiKit.DOM.bindAsEventListener( 
    252                                     this.keyPress, this); 
    253  
    254             MochiKit.Event.observe(document, 'mouseup', this.eventMouseUp); 
    255             MochiKit.Event.observe(document, 'mousemove', this.eventMouseMove); 
    256             MochiKit.Event.observe(document, 'keypress', this.eventKeypress); 
     249            this.eventMouseUp = MochiKit.Base.bind(this.endDrag, this); 
     250            this.eventMouseMove = MochiKit.Base.bind(this.updateDrag, this); 
     251            this.eventKeypress = MochiKit.Base.bind(this.keyPress, this); 
     252            MochiKit.Signal.connect(document, 'onmouseup', this.eventMouseUp); 
     253            MochiKit.Signal.connect(document, 'onmousemove', this.eventMouseMove); 
     254            MochiKit.Signal.connect(document, 'onkeypress', this.eventKeypress); 
    257255        } 
    258256        this.drags.push(draggable); 
     
    264262        }, this.drags); 
    265263        if (this.drags.length === 0) { 
    266             MochiKit.Event.stopObserving(document, 'mouseup', 
    267                                          this.eventMouseUp); 
    268             MochiKit.Event.stopObserving(document, 'mousemove', 
    269                                          this.eventMouseMove); 
    270             MochiKit.Event.stopObserving(document, 'keypress', 
    271                                          this.eventKeypress); 
     264            MochiKit.Signal.disconnect(document, 'onmouseup', 
     265                                       this.eventMouseUp); 
     266            MochiKit.Signal.disconnect(document, 'onmousemove', 
     267                                       this.eventMouseMove); 
     268            MochiKit.Signal.disconnect(document, 'onkeypress', 
     269                                       this.eventKeypress); 
    272270        } 
    273271    }, 
     
    288286            return; 
    289287        } 
    290         var pointer = [MochiKit.Event.pointerX(event)
    291                        MochiKit.Event.pointerY(event)]; 
     288        var pointer = [event.pageX
     289                       event.pageY]; 
    292290        // Mozilla-based browsers fire successive mousemove events with 
    293291        // the same coordinates, prevent needless redrawing (moz bug?) 
     
    405403        this.dragging = false; 
    406404 
    407         this.eventMouseDown = MochiKit.DOM.bindAsEventListener(this.initDrag, 
    408                                                                this); 
    409         MochiKit.Event.observe(this.handle, 'mousedown', this.eventMouseDown); 
     405        this.eventMouseDown = MochiKit.Base.bind(this.initDrag, this); 
     406        MochiKit.Signal.connect(this.handle, 'onmousedown', this.eventMouseDown); 
    410407        MochiKit.DragAndDrop.Draggables.register(this); 
    411408    }, 
    412409 
    413410    destroy: function () { 
    414         MochiKit.Event.stopObserving(this.handle, 'mousedown', 
     411        MochiKit.Signal.disconnect(this.handle, 'onmousedown', 
    415412                                     this.eventMouseDown); 
    416413        MochiKit.DragAndDrop.Draggables.unregister(this); 
     
    424421 
    425422    initDrag: function (event) { 
    426         if (!MochiKit.Event.isLeftClick(event)) { 
     423        if (!event.isLeftClick) { 
    427424            return; 
    428425        } 
    429426        // abort on form elements, fixes a Firefox issue 
    430         var src = MochiKit.Event.element(event)
     427        var src = event.target
    431428        if (src.tagName && ( 
    432429            src.tagName == 'INPUT' || 
     
    442439        } 
    443440 
    444         var pointer = [MochiKit.Event.pointerX(event), 
    445                        MochiKit.Event.pointerY(event)]; 
     441        var pointer = [event.pageX, event.pageY]; 
    446442        var pos = MochiKit.Position.cumulativeOffset(this.element); 
    447443        this.offset = MochiKit.Base.map(function (i) { 
     
    450446 
    451447        MochiKit.DragAndDrop.Draggables.activate(this); 
    452         MochiKit.Event.stop(event); 
    453448    }, 
    454449 
     
    493488            window.scrollBy(0, 0); 
    494489        } 
    495         MochiKit.Event.stop(event); 
    496490    }, 
    497491 
     
    542536 
    543537    keyPress: function (event) { 
    544         if (event.keyCode != MochiKit.Event.KEY_ESC) { 
     538        if (event.keyString != "KEY_ESCAPE") { 
    545539            return; 
    546540        } 
    547541        this.finishDrag(event, false); 
    548         MochiKit.Event.stop(event); 
    549542    }, 
    550543 
     
    554547        } 
    555548        this.finishDrag(event, true); 
    556         MochiKit.Event.stop(event); 
    557549    }, 
    558550