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;
+ }
+ }
+ }
+}