You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/01/28 09:34:29 UTC

[royale-asjs] branch develop updated: ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 93c5612  ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697
93c5612 is described below

commit 93c5612fb36e8c450d6b8c2ff2b69b789c8461ee
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue Jan 28 10:34:22 2020 +0100

    ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697
---
 .../royale/itemRenderers/IconListItemRenderer.mxml |  27 +----
 .../Jewel/src/main/resources/jewel-manifest.xml    |   2 +
 .../itemRenderers/ToolTipRemovalWhenItemRemoved.as | 116 +++++++++++++++++++++
 3 files changed, 119 insertions(+), 26 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml b/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
index 906630b..b7c54d0 100644
--- a/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
@@ -29,32 +29,6 @@ limitations under the License.
 			import org.apache.royale.jewel.beads.views.ListView;
 
 			import vos.IconListVO;
-
-            private var host:List;
-
-            /**
-             * listen to "itemRemoved" event dispatched from the List
-             */
-            override public function addedToParent():void
-            {
-                super.addedToParent();
-
-                var view:ListView = this.itemRendererParent as ListView;
-                host = view.host as List;
-                IEventDispatcher(host).addEventListener("itemRemoved", handleItemRemoved);
-            }
-
-            /**
-             * check if the renderer (item) is the current and in that case ensure remove listener and tip.
-             */
-            protected function handleItemRemoved(event:ItemRemovedEvent):void
-            {
-                if(event.item == this)
-                {
-                    IEventDispatcher(host).removeEventListener("itemRemoved", handleItemRemoved);
-                    tt.removeTip();
-                }
-            }
             
             [Bindable("dataChange")]
             public function get iconList():IconListVO
@@ -83,6 +57,7 @@ limitations under the License.
     <j:beads>
         <js:ItemRendererDataBinding />
         <j:ToolTip localId="tt" toolTip="{getToolTip(text)}"/>
+        <j:ToolTipRemovalWhenItemRemoved tooltip="{tt}"/>
     </j:beads>
 
     <js:FontIcon text="{iconList ? iconList.icon : ''}" material="true" visible="{iconList ? iconList.icon != null : false}" click="clickCloseButton()"/>
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 1b6d9a9..44d1bce 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -222,6 +222,8 @@
     <component id="UpdateTableRowForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.UpdateTableRowForArrayListData" />
 
     <component id="RemoveAllItemRendererForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.RemoveAllItemRendererForArrayListData" />
+    
+    <component id="ToolTipRemovalWhenItemRemoved" class="org.apache.royale.jewel.beads.itemRenderers.ToolTipRemovalWhenItemRemoved" />
 
     <!-- <component id="JewelLabelViewBead" class="org.apache.royale.jewel.beads.views.JewelLabelViewBead"/> -->
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
new file mode 100644
index 0000000..2ddeb2d
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
@@ -0,0 +1,116 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.royale.jewel.beads.itemRenderers
+{
+	import org.apache.royale.core.IBead;
+	import org.apache.royale.core.IBeadView;
+	import org.apache.royale.core.IItemRenderer;
+	import org.apache.royale.core.IStrand;
+	import org.apache.royale.core.IUIBase;
+	import org.apache.royale.events.IEventDispatcher;
+	import org.apache.royale.events.ItemRemovedEvent;
+	import org.apache.royale.jewel.beads.controls.ToolTip;
+
+    /**
+     *  The ToolTipRemovalWhenItemRemoved class can be used in renderers that
+     *  can be removed and uses ToolTip, to ensure the tooltip popup is removed
+     *  with the item renderer.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.7
+     */
+	public class ToolTipRemovalWhenItemRemoved implements IBead
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+		public function ToolTipRemovalWhenItemRemoved()
+		{
+		}
+
+		private var _strand:IStrand;
+        private var host:IUIBase;
+		
+        /**
+         *  listen to "itemRemoved" event dispatched from the List
+         *  
+         *  @copy org.apache.royale.core.IBead#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+
+            var view:IBeadView = (_strand as IItemRenderer).itemRendererParent as IBeadView;
+            host = view.host as IUIBase;
+            IEventDispatcher(host).addEventListener("itemRemoved", handleItemRemoved);
+		}
+
+        /**
+         * check if the renderer (item) is the current and in that case ensure remove listener and tip.
+         */
+        protected function handleItemRemoved(event:ItemRemovedEvent):void
+        {
+            if(event.item == this)
+            {
+                IEventDispatcher(host).removeEventListener("itemRemoved", handleItemRemoved);
+                if(tooltip)
+                {
+                    tooltip.removeTip();
+                }
+            }
+        }
+
+        private var _tooltip:ToolTip = null;
+        /**
+         *  The ToolTip that manages the tip popup to be removed
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+		public function get tooltip():ToolTip
+		{
+			return _tooltip;
+		}
+
+        /**
+         *  @private
+         */
+		public function set tooltip(value:ToolTip):void
+		{
+			if (value != _tooltip)
+			{
+                _tooltip = value;
+			}
+		}
+	}
+}


Re: [royale-asjs] branch develop updated: ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697

Posted by Carlos Rovira <ca...@codeoscopic.com>.
Hi Yishay,
please go ahead and do the changes
thanks!

El mar., 28 ene. 2020 a las 11:55, Yishay Weiss (<yi...@hotmail.com>)
escribió:

> Thanks for adding this. Since this behavior could be desirable in all
> component sets I’d like to suggest the following:
>
>
>   1.  Move it to Basic
>   2.  Create an interface ITooltipBead which includes removeTip()
>   3.  Have all tooltip beads implement it
>   4.  Use strand.getBeadByType(ITooltipBead) instead of requiring a
> tooltip param
>
> Do you agree?
>
> If you don’t have time I can do this.
>
> From: carlosrovira@apache.org<ma...@apache.org>
> Sent: Tuesday, January 28, 2020 11:34 AM
> To: commits@royale.apache.org<ma...@royale.apache.org>
> Subject: [royale-asjs] branch develop updated:
> ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased
> in #697
>
> This is an automated email from the ASF dual-hosted git repository.
>
> carlosrovira pushed a commit to branch develop
> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
>
>
> The following commit(s) were added to refs/heads/develop by this push:
>      new 93c5612  ToolTipRemovalWhenItemRemoved: new bead to abstract best
> practice showcased in #697
> 93c5612 is described below
>
> commit 93c5612fb36e8c450d6b8c2ff2b69b789c8461ee
> Author: Carlos Rovira <ca...@apache.org>
> AuthorDate: Tue Jan 28 10:34:22 2020 +0100
>
>     ToolTipRemovalWhenItemRemoved: new bead to abstract best practice
> showcased in #697
> ---
>  .../royale/itemRenderers/IconListItemRenderer.mxml |  27 +----
>  .../Jewel/src/main/resources/jewel-manifest.xml    |   2 +
>  .../itemRenderers/ToolTipRemovalWhenItemRemoved.as | 116
> +++++++++++++++++++++
>  3 files changed, 119 insertions(+), 26 deletions(-)
>
> diff --git
> a/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
> b/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
> index 906630b..b7c54d0 100644
> ---
> a/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
> +++
> b/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
> @@ -29,32 +29,6 @@ limitations under the License.
>                          import
> org.apache.royale.jewel.beads.views.ListView;
>
>                          import vos.IconListVO;
> -
> -            private var host:List;
> -
> -            /**
> -             * listen to "itemRemoved" event dispatched from the List
> -             */
> -            override public function addedToParent():void
> -            {
> -                super.addedToParent();
> -
> -                var view:ListView = this.itemRendererParent as ListView;
> -                host = view.host as List;
> -                IEventDispatcher(host).addEventListener("itemRemoved",
> handleItemRemoved);
> -            }
> -
> -            /**
> -             * check if the renderer (item) is the current and in that
> case ensure remove listener and tip.
> -             */
> -            protected function
> handleItemRemoved(event:ItemRemovedEvent):void
> -            {
> -                if(event.item == this)
> -                {
> -
> IEventDispatcher(host).removeEventListener("itemRemoved",
> handleItemRemoved);
> -                    tt.removeTip();
> -                }
> -            }
>
>              [Bindable("dataChange")]
>              public function get iconList():IconListVO
> @@ -83,6 +57,7 @@ limitations under the License.
>      <j:beads>
>          <js:ItemRendererDataBinding />
>          <j:ToolTip localId="tt" toolTip="{getToolTip(text)}"/>
> +        <j:ToolTipRemovalWhenItemRemoved tooltip="{tt}"/>
>      </j:beads>
>
>      <js:FontIcon text="{iconList ? iconList.icon : ''}" material="true"
> visible="{iconList ? iconList.icon != null : false}"
> click="clickCloseButton()"/>
> diff --git
> a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
> b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
> index 1b6d9a9..44d1bce 100644
> --- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
> +++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
> @@ -222,6 +222,8 @@
>      <component id="UpdateTableRowForArrayListData"
> class="org.apache.royale.jewel.beads.itemRenderers.UpdateTableRowForArrayListData"
> />
>
>      <component id="RemoveAllItemRendererForArrayListData"
> class="org.apache.royale.jewel.beads.itemRenderers.RemoveAllItemRendererForArrayListData"
> />
> +
> +    <component id="ToolTipRemovalWhenItemRemoved"
> class="org.apache.royale.jewel.beads.itemRenderers.ToolTipRemovalWhenItemRemoved"
> />
>
>      <!-- <component id="JewelLabelViewBead"
> class="org.apache.royale.jewel.beads.views.JewelLabelViewBead"/> -->
>
> diff --git
> a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
> b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
> new file mode 100644
> index 0000000..2ddeb2d
> --- /dev/null
> +++
> b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
> @@ -0,0 +1,116 @@
>
> +////////////////////////////////////////////////////////////////////////////////
> +//
> +//  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 org.apache.royale.jewel.beads.itemRenderers
> +{
> +       import org.apache.royale.core.IBead;
> +       import org.apache.royale.core.IBeadView;
> +       import org.apache.royale.core.IItemRenderer;
> +       import org.apache.royale.core.IStrand;
> +       import org.apache.royale.core.IUIBase;
> +       import org.apache.royale.events.IEventDispatcher;
> +       import org.apache.royale.events.ItemRemovedEvent;
> +       import org.apache.royale.jewel.beads.controls.ToolTip;
> +
> +    /**
> +     *  The ToolTipRemovalWhenItemRemoved class can be used in renderers
> that
> +     *  can be removed and uses ToolTip, to ensure the tooltip popup is
> removed
> +     *  with the item renderer.
> +     *
> +     *  @langversion 3.0
> +     *  @playerversion Flash 10.2
> +     *  @playerversion AIR 2.6
> +     *  @productversion Royale 0.9.7
> +     */
> +       public class ToolTipRemovalWhenItemRemoved implements IBead
> +       {
> +        /**
> +         *  Constructor.
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion Royale 0.9.7
> +         */
> +               public function ToolTipRemovalWhenItemRemoved()
> +               {
> +               }
> +
> +               private var _strand:IStrand;
> +        private var host:IUIBase;
> +
> +        /**
> +         *  listen to "itemRemoved" event dispatched from the List
> +         *
> +         *  @copy org.apache.royale.core.IBead#strand
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion Royale 0.9.7
> +         */
> +               public function set strand(value:IStrand):void
> +               {
> +                       _strand = value;
> +
> +            var view:IBeadView = (_strand as
> IItemRenderer).itemRendererParent as IBeadView;
> +            host = view.host as IUIBase;
> +            IEventDispatcher(host).addEventListener("itemRemoved",
> handleItemRemoved);
> +               }
> +
> +        /**
> +         * check if the renderer (item) is the current and in that case
> ensure remove listener and tip.
> +         */
> +        protected function handleItemRemoved(event:ItemRemovedEvent):void
> +        {
> +            if(event.item == this)
> +            {
> +                IEventDispatcher(host).removeEventListener("itemRemoved",
> handleItemRemoved);
> +                if(tooltip)
> +                {
> +                    tooltip.removeTip();
> +                }
> +            }
> +        }
> +
> +        private var _tooltip:ToolTip = null;
> +        /**
> +         *  The ToolTip that manages the tip popup to be removed
> +         *
> +         *  @langversion 3.0
> +         *  @playerversion Flash 10.2
> +         *  @playerversion AIR 2.6
> +         *  @productversion Royale 0.9.7
> +         */
> +               public function get tooltip():ToolTip
> +               {
> +                       return _tooltip;
> +               }
> +
> +        /**
> +         *  @private
> +         */
> +               public function set tooltip(value:ToolTip):void
> +               {
> +                       if (value != _tooltip)
> +                       {
> +                _tooltip = value;
> +                       }
> +               }
> +       }
> +}
>
>

-- 



Carlos Rovira

Presidente Ejecutivo

M: +34 607 22 60 05

http://www.codeoscopic.com


Conócenos en 1 minuto! <https://avant2.es/#video>


AVISO LEGAL: La información contenida en este correo electrónico, y en su
caso en los documentos adjuntos, es información privilegiada para uso
exclusivo de la persona y/o personas a las que va dirigido. No está
permitido el acceso a este mensaje a cualquier otra persona distinta a los
indicados. Si Usted no es uno de los destinatarios, cualquier duplicación,
reproducción, distribución, así como cualquier uso de la información
contenida en él o cualquiera otra acción u omisión tomada en relación con
el mismo, está prohibida y puede ser ilegal. En dicho caso, por favor,
notifíquelo al remitente y proceda a la eliminación de este correo
electrónico, así como de sus adjuntos si los hubiere. En cumplimiento de la
legislación española vigente en materia de protección de datos de carácter
personal y del RGPD 679/2016 le informamos que sus datos están siendo
objeto de tratamiento por parte de CODEOSCOPIC S.A. con CIFA85677342, con
la finalidad del mantenimiento y gestión de relaciones comerciales y
administrativas. La base jurídica del tratamiento es el interés legítimo de
la empresa. No se prevén cesiones de sus datos, salvo que exista una
obligación legal. Para ejercitar sus derechos puede dirigirse a CODEOSCOPIC
S.A., domiciliada enPaseo de la Habana, 9-11, 28036 de Madrid (MADRID), o
bien por email adpd@codeoscopic.com, con el fin de ejercer sus derechos de
acceso, rectificación, supresión (derecho al olvido), limitación de
tratamiento, portabilidad de los datos, oposición, y a no ser objeto de
decisiones automatizadas, indicando como Asunto: “Derechos Ley Protección
de Datos”, y adjuntando fotocopia de su DNI. Delegado de protección de
datos:dpd@codeoscopic.com

RE: [royale-asjs] branch develop updated: ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697

Posted by Yishay Weiss <yi...@hotmail.com>.
Thanks for adding this. Since this behavior could be desirable in all component sets I’d like to suggest the following:


  1.  Move it to Basic
  2.  Create an interface ITooltipBead which includes removeTip()
  3.  Have all tooltip beads implement it
  4.  Use strand.getBeadByType(ITooltipBead) instead of requiring a tooltip param

Do you agree?

If you don’t have time I can do this.

From: carlosrovira@apache.org<ma...@apache.org>
Sent: Tuesday, January 28, 2020 11:34 AM
To: commits@royale.apache.org<ma...@royale.apache.org>
Subject: [royale-asjs] branch develop updated: ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 93c5612  ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697
93c5612 is described below

commit 93c5612fb36e8c450d6b8c2ff2b69b789c8461ee
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Tue Jan 28 10:34:22 2020 +0100

    ToolTipRemovalWhenItemRemoved: new bead to abstract best practice showcased in #697
---
 .../royale/itemRenderers/IconListItemRenderer.mxml |  27 +----
 .../Jewel/src/main/resources/jewel-manifest.xml    |   2 +
 .../itemRenderers/ToolTipRemovalWhenItemRemoved.as | 116 +++++++++++++++++++++
 3 files changed, 119 insertions(+), 26 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml b/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
index 906630b..b7c54d0 100644
--- a/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/itemRenderers/IconListItemRenderer.mxml
@@ -29,32 +29,6 @@ limitations under the License.
                         import org.apache.royale.jewel.beads.views.ListView;

                         import vos.IconListVO;
-
-            private var host:List;
-
-            /**
-             * listen to "itemRemoved" event dispatched from the List
-             */
-            override public function addedToParent():void
-            {
-                super.addedToParent();
-
-                var view:ListView = this.itemRendererParent as ListView;
-                host = view.host as List;
-                IEventDispatcher(host).addEventListener("itemRemoved", handleItemRemoved);
-            }
-
-            /**
-             * check if the renderer (item) is the current and in that case ensure remove listener and tip.
-             */
-            protected function handleItemRemoved(event:ItemRemovedEvent):void
-            {
-                if(event.item == this)
-                {
-                    IEventDispatcher(host).removeEventListener("itemRemoved", handleItemRemoved);
-                    tt.removeTip();
-                }
-            }

             [Bindable("dataChange")]
             public function get iconList():IconListVO
@@ -83,6 +57,7 @@ limitations under the License.
     <j:beads>
         <js:ItemRendererDataBinding />
         <j:ToolTip localId="tt" toolTip="{getToolTip(text)}"/>
+        <j:ToolTipRemovalWhenItemRemoved tooltip="{tt}"/>
     </j:beads>

     <js:FontIcon text="{iconList ? iconList.icon : ''}" material="true" visible="{iconList ? iconList.icon != null : false}" click="clickCloseButton()"/>
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 1b6d9a9..44d1bce 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -222,6 +222,8 @@
     <component id="UpdateTableRowForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.UpdateTableRowForArrayListData" />

     <component id="RemoveAllItemRendererForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.RemoveAllItemRendererForArrayListData" />
+
+    <component id="ToolTipRemovalWhenItemRemoved" class="org.apache.royale.jewel.beads.itemRenderers.ToolTipRemovalWhenItemRemoved" />

     <!-- <component id="JewelLabelViewBead" class="org.apache.royale.jewel.beads.views.JewelLabelViewBead"/> -->

diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
new file mode 100644
index 0000000..2ddeb2d
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/ToolTipRemovalWhenItemRemoved.as
@@ -0,0 +1,116 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.royale.jewel.beads.itemRenderers
+{
+       import org.apache.royale.core.IBead;
+       import org.apache.royale.core.IBeadView;
+       import org.apache.royale.core.IItemRenderer;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.core.IUIBase;
+       import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.events.ItemRemovedEvent;
+       import org.apache.royale.jewel.beads.controls.ToolTip;
+
+    /**
+     *  The ToolTipRemovalWhenItemRemoved class can be used in renderers that
+     *  can be removed and uses ToolTip, to ensure the tooltip popup is removed
+     *  with the item renderer.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.7
+     */
+       public class ToolTipRemovalWhenItemRemoved implements IBead
+       {
+        /**
+         *  Constructor.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+               public function ToolTipRemovalWhenItemRemoved()
+               {
+               }
+
+               private var _strand:IStrand;
+        private var host:IUIBase;
+
+        /**
+         *  listen to "itemRemoved" event dispatched from the List
+         *
+         *  @copy org.apache.royale.core.IBead#strand
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+
+            var view:IBeadView = (_strand as IItemRenderer).itemRendererParent as IBeadView;
+            host = view.host as IUIBase;
+            IEventDispatcher(host).addEventListener("itemRemoved", handleItemRemoved);
+               }
+
+        /**
+         * check if the renderer (item) is the current and in that case ensure remove listener and tip.
+         */
+        protected function handleItemRemoved(event:ItemRemovedEvent):void
+        {
+            if(event.item == this)
+            {
+                IEventDispatcher(host).removeEventListener("itemRemoved", handleItemRemoved);
+                if(tooltip)
+                {
+                    tooltip.removeTip();
+                }
+            }
+        }
+
+        private var _tooltip:ToolTip = null;
+        /**
+         *  The ToolTip that manages the tip popup to be removed
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+               public function get tooltip():ToolTip
+               {
+                       return _tooltip;
+               }
+
+        /**
+         *  @private
+         */
+               public function set tooltip(value:ToolTip):void
+               {
+                       if (value != _tooltip)
+                       {
+                _tooltip = value;
+                       }
+               }
+       }
+}