This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 97e33c52fb9f1f69d23f5b58c38fc5a16cc388d1
Author: Alex Harui <[email protected]>
AuthorDate: Tue Feb 18 16:53:29 2020 -0800

    distinguish between clicking on open/close icon or label of Tree 
ItemRenderer.  Should fix #670
---
 .../TreeSingleSelectionMouseController.as          | 26 +++++-
 .../MXRoyale/src/main/resources/defaults.css       |  2 +-
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |  1 +
 .../beads/TreeItemRendererMouseController.as       | 96 ++++++++++++++++++++++
 .../mx/controls/treeClasses/TreeItemRenderer.as    |  2 +-
 5 files changed, 123 insertions(+), 4 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/TreeSingleSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/TreeSingleSelectionMouseController.as
index 9636991..a0cd0d0 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/TreeSingleSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/TreeSingleSelectionMouseController.as
@@ -20,7 +20,10 @@ package org.apache.royale.html.beads.controllers
 {
        import org.apache.royale.collections.ITreeData;
        import org.apache.royale.core.IStrand;
+       import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.events.ItemAddedEvent;
        import org.apache.royale.events.ItemClickedEvent;
+       import org.apache.royale.events.ItemRemovedEvent;
        import org.apache.royale.utils.sendStrandEvent;
 
        /**
@@ -63,7 +66,7 @@ package org.apache.royale.html.beads.controllers
                /**
                 * @private
                 */
-               override protected function 
selectedHandler(event:ItemClickedEvent):void
+               protected function expandedHandler(event:ItemClickedEvent):void
                {
                        var treeData:ITreeData = listModel.dataProvider as 
ITreeData;
                        if (treeData == null) return;
@@ -78,10 +81,29 @@ package org.apache.royale.html.beads.controllers
                                        treeData.openNode(node);
                                }
                        }
-                       
+                       /** what is this for? was in selectedHandler
                        // reset the selection
                        listModel.selectedItem = node;
                        sendStrandEvent(_strand,"change");
+                       */
+               }
+               
+               /**
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                */
+               override protected function 
handleItemAdded(event:ItemAddedEvent):void
+               {
+                       super.handleItemAdded(event);
+                       
IEventDispatcher(event.item).addEventListener("itemExpanded", expandedHandler);
+               }
+               
+               /**
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                */
+               override protected function 
handleItemRemoved(event:ItemRemovedEvent):void
+               {
+                       super.handleItemRemoved(event);
+                       
IEventDispatcher(event.item).removeEventListener("itemExpanded", 
expandedHandler);
                }
        }
 }
diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 6e83a85..b0f4e39 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -449,7 +449,7 @@ Tree
 
 TreeItemRenderer
 {
-       IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ItemRendererMouseController");
+       IBeadController: 
ClassReference("mx.controls.beads.TreeItemRendererMouseController");
        cursor: pointer;
 }
 
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as 
b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 8547ab9..cd54e79 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -179,6 +179,7 @@ internal class MXRoyaleClasses
     import mx.controls.beads.layouts.AdvancedDataGridLayout; 
AdvancedDataGridLayout;
     import mx.controls.beads.layouts.DataGridLayout; DataGridLayout;
     import 
mx.controls.beads.layouts.AdvancedDataGridVirtualListVerticalLayout; 
AdvancedDataGridVirtualListVerticalLayout;
+    import mx.controls.beads.TreeItemRendererMouseController; 
TreeItemRendererMouseController;
        import mx.formatters.Formatter; Formatter;
        import mx.formatters.IFormatter; IFormatter;
        import mx.formatters.NumberBase; NumberBase;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererMouseController.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererMouseController.as
new file mode 100644
index 0000000..6c17086
--- /dev/null
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/TreeItemRendererMouseController.as
@@ -0,0 +1,96 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package mx.controls.beads
+{      
+       import org.apache.royale.core.IBeadController;
+       import org.apache.royale.core.IIndexedItemRenderer;
+    import org.apache.royale.core.ISelectableItemRenderer;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.core.IUIBase;
+COMPILE::SWF {
+       import org.apache.royale.events.Event;
+       import org.apache.royale.events.MouseEvent;
+}
+COMPILE::JS {
+       import org.apache.royale.core.WrappedHTMLElement;
+       import org.apache.royale.events.BrowserEvent;
+       import goog.events.Event;
+       import goog.events.EventType;
+       import goog.events;
+}    
+    import 
org.apache.royale.html.beads.controllers.ItemRendererMouseController;
+       import org.apache.royale.events.ItemClickedEvent;
+       import org.apache.royale.utils.sendEvent;
+       import mx.controls.treeClasses.TreeItemRenderer;
+           
+       /**
+        *  The TreeItemRendererMouseController class handles mouse events for 
item renderers
+     *  in tree classes.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.0
+        */
+       public class TreeItemRendererMouseController extends 
ItemRendererMouseController
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function TreeItemRendererMouseController()
+               {
+               }
+                               
+               /**
+                * @private
+                * @royaleemitcoercion 
org.apache.royale.core.IIndexedItemRenderer
+                */
+               COMPILE::JS
+               override protected function 
handleMouseClick(event:BrowserEvent):void
+               {
+                       var target:IIndexedItemRenderer = event.currentTarget 
as IIndexedItemRenderer;
+                       if (target)
+                       {
+                               if (target is TreeItemRenderer)
+                               {
+                                       var expandIcon:IUIBase = (target as 
TreeItemRenderer).disclosureIcon;
+                                       if (event.target == expandIcon)
+                                       {
+                                               var 
expandEvent:ItemClickedEvent = new ItemClickedEvent("itemExpanded");
+                                               expandEvent.data = target.data;
+                                               expandEvent.index = 
target.index;
+                                               sendEvent(target,expandEvent);
+                                               return;
+                                       }
+                               }
+                               var newEvent:ItemClickedEvent = new 
ItemClickedEvent("itemClicked");
+                               newEvent.data = target.data;
+                               newEvent.index = target.index;
+
+                               sendEvent(target,newEvent);
+                       }
+               }
+                       
+       }
+}
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
index f3daf68..146d621 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/treeClasses/TreeItemRenderer.as
@@ -169,7 +169,7 @@ public class TreeItemRenderer extends UIComponent
      *  @playerversion AIR 1.1
      *  @productversion Flex 3
      */
-    protected var disclosureIcon:Label;
+    public var disclosureIcon:Label;
 
     
//--------------------------------------------------------------------------
     //

Reply via email to