This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/royale-asjs.wiki.git
The following commit(s) were added to refs/heads/master by this push:
new d23843d Updated Emulation Components (markdown)
d23843d is described below
commit d23843d79a8bc0ef4d77cd4264be45fd75483ad5
Author: aharui <[email protected]>
AuthorDate: Tue May 29 22:25:27 2018 -0700
Updated Emulation Components (markdown)
---
Emulation-Components.md | 36 +++++++++++++++++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/Emulation-Components.md b/Emulation-Components.md
index b91d21b..616d637 100644
--- a/Emulation-Components.md
+++ b/Emulation-Components.md
@@ -1,5 +1,12 @@
The Emulation Components are components designed to emulate, but not guarantee
100% backward-compatibility with Flex components. There are two sets right
now: MXRoyale contains emulations of UIComponent and other MX components.
SparkRoyale will contain emulation of Spark components
+This document has the following sections:
+[Creating An Emulation Component](#creating-an-emulation-component)
+[Getting An Emulation Component to Run](#getting-an-emulation-component-to-run)
+[Finishing An Emulation Component](#finishing-an-emulation-component)
+
+## Creating An Emulation Component
+
The plan is to quickly create classes with stubs for APIs we know our
migrating users are using based on -api-reports sent in by these users. The
current list is at the end of this page. The goal is not to try to get every
line of code in an existing MX or Spark component to work in Royale. Instead,
we just want to get the public APIs that are actually used to work.
But first, we want to try to get the migrating user's app to compile. So the
process is to quickly create a class of the same package name and class name as
the Flex component and either copy in Royale APIs (renaming if necessary),
copying in the API from the flex-sdk repo (if it will work as is) or copying in
the API from the flex-sdk repo and removing all of the code and leaving a TODO.
@@ -2203,4 +2210,31 @@ spark.skins.SparkSkin:mxmlContent 28
spark.skins.SparkSkin:states 13
spark.skins.SparkSkin:updateDisplayList 45
spark.skins.SparkSkin:useChromeColor 18
-```
\ No newline at end of file
+```
+
+## Getting An Emulation Component To Run
+
+Once you have finished the stubs for an emulation component, that component
should allow the migration application to compile without errors about that
component. But to get the component to actually work, you have to implement
code for those stubs. The key principle for doing that is the use of
Composition instead of Inheritance.
+
+Royale's Basic and Express component sets are comprised of "Top Level
Components" hereafter abbreviated as TLCs. These are the components that most
folks reference in their applications, such as Label, TextInput, ComboBox,
HBox, VBox, Group, etc. Even Application. But unlike Flex TLCs of the same or
similar name which are subclasses of UIComponent or something else and the
method bodies are full of code that you commented out to create the Emulation
Component, Royale TLCs are composed [...]
+
+It is important for Emulation Components that are UI components to subclass
mx.core.UIComponent or one of its subclasses because we need to emulate the
class hierarchy of the Flex components. That is more important than trying to
re-use code by subclassing a Basic or Express component, so Emulation
Components that are UI TLCs should not subclass an Basic or Express component.
+
+But, if there is little code in the Basic or Express version of a component,
then getting the Emulation Component to run should be as simple as:
+1) copying the little bits of code from the Basic or Express version into the
right stub in the Emulation Component
+2) copying the CSS from Basic or Express defaults.css into the MXRoyale or
SparkRoyale defaults.css
+
+Those two steps should "re-compose" the Basic/Express beads onto the Emulation
strand and it should "just work". If you are lucky it will but odds are that
it won't. There are often unexpected assumptions made in the beads about what
kind of strand they are on. These are bugs and should be fixed in the
Basic/Express beads. But sometimes you will be better off subclassing the
Basic/Express bead in the MXRoyale or MXSpark package and overriding or adding
something, especially if you ha [...]
+
+So far, the mx:Button, mx:CheckBox, mx:RadioButton, mx:TextInput, mx:TextArea,
mx:ComboBox and s:Button have been made to put something up on the screen in
both SWF and JS output. You can look at the GitHub history and see what
changes were needed to get them to run.
+
+## Finishing An Emulation Component
+
+The current set of running components are not finished. They do not appear on
the screen at roughly the same size and appearance as the Flex components. We
may not bother matching the appearance pixel-for-pixel and we may not match
sizes exactly, but we do want the UI controls to be in the same places such
that scrollbars aren't forced to appear.
+
+We haven't finished any component yet. As we do so and better understand good
practices for doing so, we will update this section. But first, we want to see
if we can get a migrated app to launch and put something up on the screen
without any exceptions being thrown.
+
+
+
+
+
--
To stop receiving notification emails like this one, please contact
[email protected].