Show
Ignore:
Timestamp:
12/19/06 08:35:42 (3 years ago)
Author:
ddavis
Message:

changed the groups flyout to a component transient, updated list to reset unselectable items, added a delegator mixin, changed app to use the mixin, changed organize, compose and view to use the group flyout, and updated post create and post save to save the groups passed in. BugzID: 45639

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/common/Component.js

    r97 r100  
    137137     
    138138    addEventListener: function( object, eventName, methodName, useCapture ) { 
    139         if( !this[ methodName ] || this[ methodName ] === Function.stub ) 
     139        if ( !this[ methodName ] || this[ methodName ] === Function.stub ) 
    140140            return; 
    141141        DOM.addEventListener( object, eventName,  
     
    505505    } 
    506506} ); 
     507 
     508 
     509 
     510Component.Delegator = { 
     511     
     512    DEFAULT_NAMESPACE: "core", 
     513 
     514    setupDelegates: function( object ) { 
     515        /* this needs more testing before enabling 
     516        if ( object && !object.delegateParent ) 
     517            object.delegateParent = this; 
     518        */ 
     519         
     520        if ( !this.delegateListeners ) 
     521            this.delegateListeners = {}; 
     522             
     523        if ( !this.delegates ) 
     524            this.delegates = {}; 
     525 
     526        if ( !defined( this.NAMESPACE ) ) 
     527            this.NAMESPACE = ( window.app && app.NAMESPACE ) 
     528                ? app.NAMESPACE : this.DEFAULT_NAMESPACE; 
     529    }, 
     530     
     531 
     532    addEventListener: function( object, eventName, methodName, useCapture ) { 
     533        DOM.addEventListener( object, eventName,  
     534            (this.useClosures 
     535                ? this.getEventListener( methodName ) 
     536                : this.getIndirectEventListener( methodName ) ), 
     537            useCapture ); 
     538    }, 
     539 
     540 
     541    /* delegate functions */ 
     542    setDelegate: function( name, object ) { 
     543        this.setupDelegates( object ); 
     544        this.delegates[ name ] = object; 
     545        return object; 
     546    }, 
     547     
     548     
     549    setDelegateListener: function( eventName, delegateName ) { 
     550        this.setupDelegates(); 
     551        this.delegateListeners[ eventName ] = delegateName; 
     552    }, 
     553     
     554     
     555    delegateEvent: function( event, eventName ) { 
     556        var delegate = DOM.getMouseEventAttribute( event, this.NAMESPACE + ":delegate" ); 
     557             
     558        if ( !delegate ) { 
     559            if ( this.delegateListeners && this.delegateListeners.hasOwnProperty( eventName ) ) 
     560                delegate = this.delegateListeners[ eventName ]; 
     561            else 
     562                return undefined; 
     563        } else 
     564            delegate = delegate.cssToJS(); 
     565         
     566        if ( this.delegates && this.delegates.hasOwnProperty( delegate ) && this.delegates[ delegate ][ eventName ] ) 
     567            return this.delegates[ delegate ][ eventName ]( event, this ); 
     568    }, 
     569     
     570     
     571    getIndirectEventListener: function( methodName ) { 
     572        if( !this.indirectEventListeners ) 
     573            this.indirectEventListeners = {}; 
     574        var method = this[ methodName ]; 
     575        var indirectIndex = this.getIndirectIndex(); 
     576        if( !this.indirectEventListeners[ methodName ] ) { 
     577            return this.indirectEventListeners[ methodName ] = new Function( "event", 
     578                "try { event = Event.prep( event ); } catch( e ) {}" + 
     579                "var o = indirectObjects[" + indirectIndex + "];" + 
     580                "var r = o.delegateEvent( event, '" + methodName + 
     581                "' ); if ( r ) return r; if ( o[ '" + methodName + 
     582                "' ] ) return o." + methodName + ".call( o, event );" ); 
     583        } 
     584         
     585        return this.indirectEventListeners[ methodName ]; 
     586    } 
     587 
     588 
     589};