Alex,
> 1) It is hard to follow these threads without more context. I think Royale
> is going to require that folks make it clear which components they are using.
> Flex always had a primary set (MX then later, Spark) so we could make
> assumptions about what components you are referencing.
That makes sense, on our Flex side of the house we stayed as much as we
could on the spark components. If you needed a complete listing of those we
could produce one, but probably wouldn't be helpful in this thread since I was
referencing Royale items and more specifically Jewel versions of them for the
most part when I references the "Alert, PopUp, SnackBar, ToolTip" part. I was
not being clear enough when talking about the Apache based projects vice our
own corporate internal resources / libraries. I will work at being more clear
between all of these but making references to Royale, Jewel, Flex, or Air for
SDK clarity and can use terms like internal / organization for our end user
requirements.
> 2) The Basic components don't have a PopUpManager (yet) because nobody needed
> one. Simple stacking and unstacking of popups doesn't require a
> PopUpManager. In Basic you use org.apache.royale.utils.UIUtils. The
> emulation (MXRoyale) set has a PopUpManager that tries to emulate the Flex
> PopUpManager. I just saw it work. Jewel can have its own way of managing
> popups.
Our organizational popup management is more complicated than stacking and
unstacking. We will require something that manages popups and layers / sets of
popups. For issues we have seen internally such as having things like
notifications appearing behind a modal popup because of the Flex PopUpManager
opened the notification/popups at the same time. Or maybe there is a longer
term notification showing file uploads / download status that needs to always
be in the foreground. In the Flex side we added an additional manager which
would correct layering issues by reordering items in the stack if it detected a
problem, but that required something checking or updating after each popup or
notification is created / removed. If we have to reinvent the wheel for our
organization while using Royale we might create our own PopUpManager. We
definitely will not use something that emulates the Flex PopUpManager since we
could make one that handles all the different sets of layers we use to ensure
certain types of popups are always on top regardless of the current stack.
That would combine some of our managers and make it much more efficient for us
internally.
Array stacks like using zindexes in a way to keep certain items on top of each
other. (Value ranges shown just for being descriptive of the concept)
zIndex of 1000 - 1999 Standard popups and modal background layers.
zIndex of 2000 - 2999 Notifications, toasts, and snackbar's layers.
zIndex of 3000 - 4000 Critical application errors / complete stoppages / etc...
> 3) mx.collections.ArrayList and mx.collections.ArrayCollection are emulations
> of the Flex version. I'm not inclined to add new features to it. However,
> there should be no hardcoding of those classes ?outside of the emulation
> components, so folks not using the emulation set should be able to just use a
> different collection implementation, and if they use the same classAlias,
> Royale's AMF should be able to use it now that Greg got IExternalizable
> working. So, if you want a different way of handling changes to the
> collections, take a look at the Basic collections or write a new
> implementation. In ?Royale, we want to try to make it such that there is no
> one single implementation that everyone must use.
Sounds like a good idea, we will just write our own organizational
Collection class so we can add/remove functionality. We do not like the way
Flex ListCollectionView did business with queued events in a giant pile
(example being the private function handlePendingUpdates in
ListCollectionView.as), we had to add special handling to some of our
components that would ignore these events sent by a ListCollectionView and wait
for a separate event to handle the changes. The only event that the
ListCollectionView took into was the CollectionEventKind.UPDATE. It would
create an array of those queued collection events and send out 1 event with all
the changes in it. There are even comments in the ListCollectionView.as file
describing a need to come back and optimize the way it handles events, because
whom ever created that piece of code/sdk knew there could be times it would
send out a large volume of events.
I agree we don't need the Royale / SDK copy to be hard coded, it can stay
the way it is now and is intended to be. Our internal organizational libraries
will all be hard coded to standardize the features available. We chose to keep
the bead strand usage because we liked the way the beads were encapsulating
segments of code, so we hard coded the bead assignment internally. An example
of an organization component we've created for our test is an inherited copy of
a jewel TextInput. We hardcoded it with the Disabled / Restrict / TextPrompt /
ToolTip beads references to make it always contain those features and allowed
us to put in convenience getters/setters for things like
enabled/restrict/prompt/toolTip. However the references are null until a
setter is used the first time then it creates / adds the bead one time, so
processing wise its lighter until used, even if the download is larger.
Just to be clear, I'm not looking to use the emulation component to replace
stuff like this. I would like to use some of the new SDK components, but with
added compatibility we gain from making inherited organizational versions. I
just want the standard properties to exist by name so when we do our app
conversions (18 apps) later this year we only will have to change library
references, some support code for the views, 100% of the layout containers for
the views.
-Mark K
-----Original Message-----
From: Alex Harui [mailto:[email protected]]
Sent: Wednesday, March 20, 2019 5:00 PM
To: [email protected]
Subject: [Non-DoD Source] Re: PopUpManager question
A few thoughts...
1) It is hard to follow these threads without more context. I think Royale is
going to require that folks make it clear which components they are using.
Flex always had a primary set (MX then later, Spark) so we could make
assumptions about what components you are referencing.
2) The Basic components don't have a PopUpManager (yet) because nobody needed
one. Simple stacking and unstacking of popups doesn't require a PopUpManager.
In Basic you use org.apache.royale.utils.UIUtils. The emulation (MXRoyale) set
has a PopUpManager that tries to emulate the Flex PopUpManager. I just saw it
work. Jewel can have its own way of managing popups.
3) mx.collections.ArrayList and mx.collections.ArrayCollection are emulations
of the Flex version. I'm not inclined to add new features to it. However,
there should be no hardcoding of those classes outside of the emulation
components, so folks not using the emulation set should be able to just use a
different collection implementation, and if they use the same classAlias,
Royale's AMF should be able to use it now that Greg got IExternalizable
working. So, if you want a different way of handling changes to the
collections, take a look at the Basic collections or write a new
implementation. In Royale, we want to try to make it such that there is no one
single implementation that everyone must use.
HTH,
-Alex