ContextSensitive events now fired on base element, not document
authorMichael M Slusarz <slusarz@curecanti.org>
Wed, 16 Dec 2009 19:38:27 +0000 (12:38 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Wed, 16 Dec 2009 19:45:59 +0000 (12:45 -0700)
imp/js/ContextSensitive.js
imp/js/DimpBase.js
imp/js/DimpCore.js

index b2373cd..ade1783 100644 (file)
  *
  * Custom Events:
  * --------------
- * Custom events are triggered on the document element. The parameters given
+ * Custom events are triggered on the base element. The parameters given
  * below are available through the 'memo' property of the Event object.
  *
  * ContextSensitive:click
- *   Fired on TODO
- *   params: (object) TODO [base, elt, trigger]
+ *   Fired when a contextmenu element is clicked on.
+ *   params: (object) elt - (Element) The menu element clicked on.
+ *                    trigger - (string) The parent menu.
  *
  * ContextSensitive:show
- *   Fired on TODO
- *   params: (object) TODO [base, id]
+ *   Fired before a contextmenu is displayed.
+ *   params: (string) The DOM ID of the context menu.
  *
  *
  * Original code by Havard Eide (http://eide.org/) released under the MIT
@@ -191,7 +192,7 @@ var ContextSensitive = Class.create({
                     base = this.baseelt;
                     trigger = this.triggers.last();
                     this.close();
-                    document.fire('ContextSensitive:click', { base: base, elt: elt, trigger: trigger });
+                    base.fire('ContextSensitive:click', { elt: elt, trigger: trigger });
                 }
                 return;
             }
@@ -294,7 +295,7 @@ var ContextSensitive = Class.create({
                 : (v.width - size.width - 10);
         }
 
-        document.fire('ContextSensitive:show', { base: this.baseelt, id: id });
+        this.baseelt.fire('ContextSensitive:show', id);
 
         elt.setStyle({ left: x + 'px', top: y + 'px' })
 
index ee7f761..0daeb1d 100644 (file)
@@ -681,7 +681,7 @@ var DimpBase = {
     contextOnClick: function(parentfunc, e)
     {
         var flag, tmp,
-            baseelt = e.memo.base,
+            baseelt = e.element(),
             elt = e.memo.elt,
             id = elt.readAttribute('id'),
             menu = e.memo.trigger;
@@ -858,8 +858,8 @@ var DimpBase = {
     contextOnShow: function(parentfunc, e)
     {
         var elts, ob, sel, tmp,
-            baseelt = e.memo.base,
-            ctx_id = e.memo.id;
+            baseelt = e.element(),
+            ctx_id = e.memo;
 
         switch (ctx_id) {
         case 'ctx_folder':
index 97c9152..7c26561 100644 (file)
@@ -446,9 +446,9 @@ var DimpCore = {
     {
         var tmp;
 
-        switch (e.memo.id) {
+        switch (e.memo) {
         case 'ctx_contacts':
-            tmp = $(e.memo.id).down('DIV.contactAddr');
+            tmp = $(e.memo).down('DIV.contactAddr');
             if (tmp) {
                 tmp.next().remove();
                 tmp.remove();
@@ -456,10 +456,10 @@ var DimpCore = {
 
             // Add e-mail info to context menu if personal name is shown on
             // page.
-            if (e.memo.base.retrieve('personal')) {
-                $(e.memo.id)
+            if (e.element().retrieve('personal')) {
+                $(e.memo)
                     .insert({ top: new Element('DIV', { className: 'sep' }) })
-                    .insert({ top: new Element('DIV', { className: 'contactAddr' }).insert(e.memo.base.retrieve('email').escapeHTML()) });
+                    .insert({ top: new Element('DIV', { className: 'contactAddr' }).insert(e.element().retrieve('email').escapeHTML()) });
             }
             break;
         }
@@ -467,13 +467,15 @@ var DimpCore = {
 
     contextOnClick: function(e)
     {
+        var baseelt = e.element();
+
         switch (e.memo.elt.readAttribute('id')) {
         case 'ctx_contacts_new':
-            this.compose('new', { to: e.memo.baseelt.retrieve('address') });
+            this.compose('new', { to: baseelt.retrieve('address') });
             break;
 
         case 'ctx_contacts_add':
-            this.doAction('AddContact', { name: e.memo.baseelt.retrieve('personal'), email: e.memo.baseelt.retrieve('email') }, {}, true);
+            this.doAction('AddContact', { name: baseelt.retrieve('personal'), email: baseelt.retrieve('email') }, {}, true);
             break;
         }
     },