incubator-flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From andrei apostolache <apostolache.and...@gmail.com>
Subject Re: Fix to get DropDownList working on Mobile
Date Fri, 20 Jan 2012 09:34:21 GMT
Hi.

An issue that I had with DropDownList is the exclusion of selectedItems in
the DropDownListBase. I had to do some workarounds to be able to have
multiple selections in a DropDownList.

Regards,
Andrei.

On Fri, Jan 20, 2012 at 12:01 AM, Ryan Frishberg <frishy@gmail.com> wrote:

> Hey Tink,
>
> I can't say for sure if I'll be here or not in May.  My current lease
> expires in April, and if it's easy to find a short lease, I may stay a bit
> longer.  Otherwise, I'll pack myself back to the states :-)  I'll
> stay-tuned for the Spoon announcement and attempt to atleast make one
> London flex user group meeting.  If I can't make anything, I'll try and
> arrange some drinks for the PPMC members here.
>
> Cheers,
> Ryan
>
> On Wed, Jan 18, 2012 at 8:07 AM, Tink <flex@tink.ws> wrote:
>
> > On 18 Jan 2012, at 02:27, Jeffry Houser wrote:
> >
> >
> >> The Flextras Mobile DropDownList extends the Flex DropDownList.   The
> >> problems related to how the drop down opens and closes with mouse up and
> >> mouse down events.  I had a lot of weird issues trying to get that to
> work.
> >>  I ended up remapping everything to mouse click.
> >>
> >> This is how we got it working on mobile:
> >>
> >> 1) In partAdded, I added event listeners for [partRemoved removed said
> >> listeners]:
> >>
> >>
> dataGroup.addEventListener(**RendererExistenceEvent.**RENDERER_ADD,
> >> dataGroup_rendererAddHandler_**Extended);
> >>
> dataGroup.addEventListener(**RendererExistenceEvent.**RENDERER_REMOVE,
> >> dataGroup_**rendererRemoveHandler_**Extended);
> >>
> >> [These lines are 'from' the similar to what happens in the list
> class--up
> >> the hierarchy.  The dataGroup adds event listeners for the
> >> dataGroup_rendererAddHandler method which adds an event listener to a
> >> **private** method item_mouseEventHandler.  I'm pretty sure the private
> >> mouse event handler was the problem; but memory is hazy.
> >>
> >> 2) The dataGroup_rendererAddHandler_**Extended method is based on the
> >> dataGroup_RendererAddHandler method.  Except I'm listening for the click
> >> event.
> >>
> >>       protected function
> dataGroup_rendererAddHandler_**Extended(event:**
> >> RendererExistenceEvent):void
> >>       {
> >>           var index:int = event.index;
> >>           var renderer:IVisualElement = event.renderer;
> >>
> >>           if (!renderer)
> >>               return;
> >>
> >>           renderer.addEventListener(**MouseEvent.CLICK,
> >> item_clickHandler);
> >>       }
> >>
> >>
> >> 3) the item_ClickHandler makes use of the super methods for handling the
> >> opening and closing the DropDownList:
> >>
> >>       protected function item_clickHandler(event:**MouseEvent):void{
> >>           // this is a replacement for the mouse down handler;
> >>           // so we do actualy want to run the mouse down handler code in
> >> this mouse click event
> >>           super.item_mouseDownHandler(**event);
> >>
> >>           // immediately call the mouse up handler; because it seems to
> >> be holding off selection until the
> >>           // mouse up event fires; which doesn't appear to happen
> >>           super.mouseUpHandler(event);
> >>       }
> >>
> >>
> >> 4) And then make sure the mouse down handler does nothing:
> >>
> >>       override protected function item_mouseDownHandler(event:**
> >> MouseEvent):void
> >>       {
> >>           // do nothing because mouse up and mouse down handlers don't
> >> work quite right on mobile devices
> >>           // rewrote all of this to use the click event
> >>       }
> >>
> >>
> >> I've had clients use our extended component both in web and mobile
> >> projects.
> >>
> >> You can see our web sample: https://www.flextras.com/**
> >> MobileComponents/Samples/**MobileDropDownList/<
> https://www.flextras.com/MobileComponents/Samples/MobileDropDownList/>
> >> The default is like a traditional Flex DropDownList.
> >> But, click the Change Renderer button and select Radio Button Renderer;
> >> then select Change Skins and select Pop Up Skin 2.   that is my
> preferred
> >> approach.
> >>
> >> We ended up adding a bunch of extra skin parts; and a handful of
> >> ActionScript skin options; but I'd love to make the SDK handle the
> mobile /
> >> touch use case a lot easier.
> >>
> >> I'll see if I can get something simple checked in either tomorrow or
> >> Thursday.  Unfortunately today slipped by without me trying to figure
> out
> >> my SVN access and all that.
> >>
> >> --
> >> Jeffry Houser
> >> Technical Entrepreneur
> >> 203-379-0773
> >> --
> >> http://www.flextras.com?c=104
> >> UI Flex Components: Tested! Supported! Ready!
> >> --
> >> http://www.theflexshow.com
> >> http://www.jeffryhouser.com
> >> http://www.asktheflexpert.com
> >> --
> >> Part of the DotComIt Brain Trust
> >>
> >
> > Hey Jeffry
> >
> > I'm proposing we fix the bug in DropDownListBase.
> >
> > This fix requires 2 additional 'if' statements and 2 extra lines of code.
> >
> > It means the DropDownList will continue to work the same on desktop, but
> > will also work on mobile.
> >
> > As with all Spark based Lists in Flex, users can specify a custom
> > itemRenderer or custom skin.
> >
> > Tink
> >
> >
> > P.S. Ryan, sorry I missed your note. I've been thinking of getting a
> > special event together at LFPUG in May on 'The Future of Flex' and
> thought
> > I'd see if I could get the London PPMC members down (you, me , Espen &
> > Peter are all in London), although I might see If I can try and involve
> > Spoon as well (see "Spoon Community Call Feb 2nd" thread). Are you still
> > around in May, and you be up for that? Maybe I should create a separate
> > thread.
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message