http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/html-template/history/history.js
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/html-template/history/history.js 
b/tourdeflexmodules/html-template/history/history.js
new file mode 100755
index 0000000..1f41c7f
--- /dev/null
+++ b/tourdeflexmodules/html-template/history/history.js
@@ -0,0 +1,694 @@
+/*
+ * 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.
+ */
+BrowserHistoryUtils = {
+    addEvent: function(elm, evType, fn, useCapture) {
+        useCapture = useCapture || false;
+        if (elm.addEventListener) {
+            elm.addEventListener(evType, fn, useCapture);
+            return true;
+        }
+        else if (elm.attachEvent) {
+            var r = elm.attachEvent('on' + evType, fn);
+            return r;
+        }
+        else {
+            elm['on' + evType] = fn;
+        }
+    }
+}
+
+BrowserHistory = (function() {
+    // type of browser
+    var browser = {
+        ie: false, 
+        ie8: false, 
+        firefox: false, 
+        safari: false, 
+        opera: false, 
+        version: -1
+    };
+
+    // Default app state URL to use when no fragment ID present
+    var defaultHash = '';
+
+    // Last-known app state URL
+    var currentHref = document.location.href;
+
+    // Initial URL (used only by IE)
+    var initialHref = document.location.href;
+
+    // Initial URL (used only by IE)
+    var initialHash = document.location.hash;
+
+    // History frame source URL prefix (used only by IE)
+    var historyFrameSourcePrefix = 'history/historyFrame.html?';
+
+    // History maintenance (used only by Safari)
+    var currentHistoryLength = -1;
+    
+    // Flag to denote the existence of onhashchange
+    var browserHasHashChange = false;
+
+    var historyHash = [];
+
+    var initialState = createState(initialHref, initialHref + '#' + 
initialHash, initialHash);
+
+    var backStack = [];
+    var forwardStack = [];
+
+    var currentObjectId = null;
+
+    //UserAgent detection
+    var useragent = navigator.userAgent.toLowerCase();
+
+    if (useragent.indexOf("opera") != -1) {
+        browser.opera = true;
+    } else if (useragent.indexOf("msie") != -1) {
+        browser.ie = true;
+        browser.version = 
parseFloat(useragent.substring(useragent.indexOf('msie') + 4));
+        if (browser.version == 8)
+        {
+            browser.ie = false;
+            browser.ie8 = true;
+        }
+    } else if (useragent.indexOf("safari") != -1) {
+        browser.safari = true;
+        browser.version = 
parseFloat(useragent.substring(useragent.indexOf('safari') + 7));
+    } else if (useragent.indexOf("gecko") != -1) {
+        browser.firefox = true;
+    }
+
+    if (browser.ie == true && browser.version == 7) {
+        window["_ie_firstload"] = false;
+    }
+
+    function hashChangeHandler()
+    {
+        currentHref = document.location.href;
+        var flexAppUrl = getHash();
+        //ADR: to fix multiple
+        if (typeof BrowserHistory_multiple != "undefined" && 
BrowserHistory_multiple == true) {
+            var pl = getPlayers();
+            for (var i = 0; i < pl.length; i++) {
+                pl[i].browserURLChange(flexAppUrl);
+            }
+        } else {
+            getPlayer().browserURLChange(flexAppUrl);
+        }
+    }
+
+    // Accessor functions for obtaining specific elements of the page.
+    function getHistoryFrame()
+    {
+        return document.getElementById('ie_historyFrame');
+    }
+
+    function getFormElement()
+    {
+        return document.getElementById('safari_formDiv');
+    }
+
+    function getRememberElement()
+    {
+        return document.getElementById("safari_remember_field");
+    }
+
+    // Get the Flash player object for performing ExternalInterface callbacks.
+    // Updated for changes to SWFObject2.
+    function getPlayer(id) {
+        var i;
+
+               if (id && document.getElementById(id)) {
+                       var r = document.getElementById(id);
+                       if (typeof r.SetVariable != "undefined") {
+                               return r;
+                       }
+                       else {
+                               var o = r.getElementsByTagName("object");
+                               var e = r.getElementsByTagName("embed");
+                for (i = 0; i < o.length; i++) {
+                    if (typeof o[i].browserURLChange != "undefined")
+                        return o[i];
+                }
+                for (i = 0; i < e.length; i++) {
+                    if (typeof e[i].browserURLChange != "undefined")
+                        return e[i];
+                }
+                       }
+               }
+               else {
+                       var o = document.getElementsByTagName("object");
+                       var e = document.getElementsByTagName("embed");
+            for (i = 0; i < e.length; i++) {
+                if (typeof e[i].browserURLChange != "undefined")
+                {
+                    return e[i];
+                }
+            }
+            for (i = 0; i < o.length; i++) {
+                if (typeof o[i].browserURLChange != "undefined")
+                {
+                    return o[i];
+                }
+            }
+               }
+               return undefined;
+       }
+    
+    function getPlayers() {
+        var i;
+        var players = [];
+        if (players.length == 0) {
+            var tmp = document.getElementsByTagName('object');
+            for (i = 0; i < tmp.length; i++)
+            {
+                if (typeof tmp[i].browserURLChange != "undefined")
+                    players.push(tmp[i]);
+            }
+        }
+        if (players.length == 0 || players[0].object == null) {
+            var tmp = document.getElementsByTagName('embed');
+            for (i = 0; i < tmp.length; i++)
+            {
+                if (typeof tmp[i].browserURLChange != "undefined")
+                    players.push(tmp[i]);
+            }
+        }
+        return players;
+    }
+
+       function getIframeHash() {
+               var doc = getHistoryFrame().contentWindow.document;
+               var hash = String(doc.location.search);
+               if (hash.length == 1 && hash.charAt(0) == "?") {
+                       hash = "";
+               }
+               else if (hash.length >= 2 && hash.charAt(0) == "?") {
+                       hash = hash.substring(1);
+               }
+               return hash;
+       }
+
+    /* Get the current location hash excluding the '#' symbol. */
+    function getHash() {
+       // It would be nice if we could use document.location.hash here,
+       // but it's faulty sometimes.
+       var idx = document.location.href.indexOf('#');
+       return (idx >= 0) ? document.location.href.substr(idx+1) : '';
+    }
+
+    /* Get the current location hash excluding the '#' symbol. */
+    function setHash(hash) {
+       // It would be nice if we could use document.location.hash here,
+       // but it's faulty sometimes.
+       if (hash == '') hash = '#'
+       document.location.hash = hash;
+    }
+
+    function createState(baseUrl, newUrl, flexAppUrl) {
+        return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': 
flexAppUrl, 'title': null };
+    }
+
+    /* Add a history entry to the browser.
+     *   baseUrl: the portion of the location prior to the '#'
+     *   newUrl: the entire new URL, including '#' and following fragment
+     *   flexAppUrl: the portion of the location following the '#' only
+     */
+    function addHistoryEntry(baseUrl, newUrl, flexAppUrl) {
+
+        //delete all the history entries
+        forwardStack = [];
+
+        if (browser.ie) {
+            //Check to see if we are being asked to do a navigate for the first
+            //history entry, and if so ignore, because it's coming from the 
creation
+            //of the history iframe
+            if (flexAppUrl == defaultHash && document.location.href == 
initialHref && window['_ie_firstload']) {
+                currentHref = initialHref;
+                return;
+            }
+            if ((!flexAppUrl || flexAppUrl == defaultHash) && 
window['_ie_firstload']) {
+                newUrl = baseUrl + '#' + defaultHash;
+                flexAppUrl = defaultHash;
+            } else {
+                // for IE, tell the history frame to go somewhere without a '#'
+                // in order to get this entry into the browser history.
+                getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl;
+            }
+            setHash(flexAppUrl);
+        } else {
+
+            //ADR
+            if (backStack.length == 0 && initialState.flexAppUrl == 
flexAppUrl) {
+                initialState = createState(baseUrl, newUrl, flexAppUrl);
+            } else if(backStack.length > 0 && backStack[backStack.length - 
1].flexAppUrl == flexAppUrl) {
+                backStack[backStack.length - 1] = createState(baseUrl, newUrl, 
flexAppUrl);
+            }
+
+            if (browser.safari && !browserHasHashChange) {
+                // for Safari, submit a form whose action points to the 
desired URL
+                if (browser.version <= 419.3) {
+                    var file = window.location.pathname.toString();
+                    file = file.substring(file.lastIndexOf("/")+1);
+                    getFormElement().innerHTML = '<form name="historyForm" 
action="'+file+'#' + flexAppUrl + '" method="GET"></form>';
+                    //get the current elements and add them to the form
+                    var qs = window.location.search.substring(1);
+                    var qs_arr = qs.split("&");
+                    for (var i = 0; i < qs_arr.length; i++) {
+                        var tmp = qs_arr[i].split("=");
+                        var elem = document.createElement("input");
+                        elem.type = "hidden";
+                        elem.name = tmp[0];
+                        elem.value = tmp[1];
+                        document.forms.historyForm.appendChild(elem);
+                    }
+                    document.forms.historyForm.submit();
+                } else {
+                    top.location.hash = flexAppUrl;
+                }
+                // We also have to maintain the history by hand for Safari
+                historyHash[history.length] = flexAppUrl;
+                _storeStates();
+            } else {
+                // Otherwise, just tell the browser to go there
+                setHash(flexAppUrl);
+            }
+        }
+        backStack.push(createState(baseUrl, newUrl, flexAppUrl));
+    }
+
+    function _storeStates() {
+        if (browser.safari) {
+            getRememberElement().value = historyHash.join(",");
+        }
+    }
+
+    function handleBackButton() {
+        //The "current" page is always at the top of the history stack.
+        var current = backStack.pop();
+        if (!current) { return; }
+        var last = backStack[backStack.length - 1];
+        if (!last && backStack.length == 0){
+            last = initialState;
+        }
+        forwardStack.push(current);
+    }
+
+    function handleForwardButton() {
+        //summary: private method. Do not call this directly.
+
+        var last = forwardStack.pop();
+        if (!last) { return; }
+        backStack.push(last);
+    }
+
+    function handleArbitraryUrl() {
+        //delete all the history entries
+        forwardStack = [];
+    }
+
+    /* Called periodically to poll to see if we need to detect navigation that 
has occurred */
+    function checkForUrlChange() {
+
+        if (browser.ie) {
+            if (currentHref != document.location.href && currentHref + '#' != 
document.location.href) {
+                //This occurs when the user has navigated to a specific URL
+                //within the app, and didn't use browser back/forward
+                //IE seems to have a bug where it stops updating the URL it
+                //shows the end-user at this point, but programatically it
+                //appears to be correct.  Do a full app reload to get around
+                //this issue.
+                if (browser.version < 7) {
+                    currentHref = document.location.href;
+                    document.location.reload();
+                } else {
+                                       if (getHash() != getIframeHash()) {
+                                               // this.iframe.src = 
this.blankURL + hash;
+                                               var sourceToSet = 
historyFrameSourcePrefix + getHash();
+                                               getHistoryFrame().src = 
sourceToSet;
+                        currentHref = document.location.href;
+                                       }
+                }
+            }
+        }
+
+        if (browser.safari && !browserHasHashChange) {
+            // For Safari, we have to check to see if history.length changed.
+            if (currentHistoryLength >= 0 && history.length != 
currentHistoryLength) {
+                //alert("did change: " + history.length + ", " + 
historyHash.length + "|" + historyHash[history.length] + "|>" + 
historyHash.join("|"));
+                var flexAppUrl = getHash();
+                if (browser.version < 528.16 /* Anything earlier than Safari 
4.0 */)
+                {    
+                    // If it did change and we're running Safari 3.x or 
earlier, 
+                    // then we have to look the old state up in our 
hand-maintained 
+                    // array since document.location.hash won't have changed, 
+                    // then call back into BrowserManager.
+                currentHistoryLength = history.length;
+                    flexAppUrl = historyHash[currentHistoryLength];
+                }
+
+                //ADR: to fix multiple
+                if (typeof BrowserHistory_multiple != "undefined" && 
BrowserHistory_multiple == true) {
+                    var pl = getPlayers();
+                    for (var i = 0; i < pl.length; i++) {
+                        pl[i].browserURLChange(flexAppUrl);
+                    }
+                } else {
+                    getPlayer().browserURLChange(flexAppUrl);
+                }
+                _storeStates();
+            }
+        }
+        if (browser.firefox && !browserHasHashChange) {
+            if (currentHref != document.location.href) {
+                var bsl = backStack.length;
+
+                var urlActions = {
+                    back: false, 
+                    forward: false, 
+                    set: false
+                }
+
+                if ((window.location.hash == initialHash || 
window.location.href == initialHref) && (bsl == 1)) {
+                    urlActions.back = true;
+                    // FIXME: could this ever be a forward button?
+                    // we can't clear it because we still need to check for 
forwards. Ugg.
+                    // clearInterval(this.locationTimer);
+                    handleBackButton();
+                }
+                
+                // first check to see if we could have gone forward. We always 
halt on
+                // a no-hash item.
+                if (forwardStack.length > 0) {
+                    if (forwardStack[forwardStack.length-1].flexAppUrl == 
getHash()) {
+                        urlActions.forward = true;
+                        handleForwardButton();
+                    }
+                }
+
+                // ok, that didn't work, try someplace back in the history 
stack
+                if ((bsl >= 2) && (backStack[bsl - 2])) {
+                    if (backStack[bsl - 2].flexAppUrl == getHash()) {
+                        urlActions.back = true;
+                        handleBackButton();
+                    }
+                }
+                
+                if (!urlActions.back && !urlActions.forward) {
+                    var foundInStacks = {
+                        back: -1, 
+                        forward: -1
+                    }
+
+                    for (var i = 0; i < backStack.length; i++) {
+                        if (backStack[i].flexAppUrl == getHash() && i != (bsl 
- 2)) {
+                            arbitraryUrl = true;
+                            foundInStacks.back = i;
+                        }
+                    }
+                    for (var i = 0; i < forwardStack.length; i++) {
+                        if (forwardStack[i].flexAppUrl == getHash() && i != 
(bsl - 2)) {
+                            arbitraryUrl = true;
+                            foundInStacks.forward = i;
+                        }
+                    }
+                    handleArbitraryUrl();
+                }
+
+                // Firefox changed; do a callback into BrowserManager to tell 
it.
+                currentHref = document.location.href;
+                var flexAppUrl = getHash();
+                //ADR: to fix multiple
+                if (typeof BrowserHistory_multiple != "undefined" && 
BrowserHistory_multiple == true) {
+                    var pl = getPlayers();
+                    for (var i = 0; i < pl.length; i++) {
+                        pl[i].browserURLChange(flexAppUrl);
+                    }
+                } else {
+                    getPlayer().browserURLChange(flexAppUrl);
+                }
+            }
+        }
+    }
+
+    var _initialize = function () {
+        
+        browserHasHashChange = ("onhashchange" in document.body);
+        
+        if (browser.ie)
+        {
+            var scripts = document.getElementsByTagName('script');
+            for (var i = 0, s; s = scripts[i]; i++) {
+                if (s.src.indexOf("history.js") > -1) {
+                    var iframe_location = (new 
String(s.src)).replace("history.js", "historyFrame.html");
+                }
+            }
+            historyFrameSourcePrefix = iframe_location + "?";
+            var src = historyFrameSourcePrefix;
+
+            var iframe = document.createElement("iframe");
+            iframe.id = 'ie_historyFrame';
+            iframe.name = 'ie_historyFrame';
+            iframe.src = 'javascript:false;'; 
+
+            try {
+                document.body.appendChild(iframe);
+            } catch(e) {
+                setTimeout(function() {
+                    document.body.appendChild(iframe);
+                }, 0);
+            }
+        }
+
+        if (browser.safari && !browserHasHashChange)
+        {
+            var rememberDiv = document.createElement("div");
+            rememberDiv.id = 'safari_rememberDiv';
+            document.body.appendChild(rememberDiv);
+            rememberDiv.innerHTML = '<input type="text" 
id="safari_remember_field" style="width: 500px;">';
+
+            var formDiv = document.createElement("div");
+            formDiv.id = 'safari_formDiv';
+            document.body.appendChild(formDiv);
+
+            var reloader_content = document.createElement('div');
+            reloader_content.id = 'safarireloader';
+            var scripts = document.getElementsByTagName('script');
+            for (var i = 0, s; s = scripts[i]; i++) {
+                if (s.src.indexOf("history.js") > -1) {
+                    html = (new String(s.src)).replace(".js", ".html");
+                }
+            }
+            reloader_content.innerHTML = '<iframe id="safarireloader-iframe" 
src="about:blank" frameborder="no" scrolling="no"></iframe>';
+            document.body.appendChild(reloader_content);
+            reloader_content.style.position = 'absolute';
+            reloader_content.style.left = reloader_content.style.top = 
'-9999px';
+            iframe = reloader_content.getElementsByTagName('iframe')[0];
+
+            if (document.getElementById("safari_remember_field").value != "" ) 
{
+                historyHash = 
document.getElementById("safari_remember_field").value.split(",");
+            }
+        }
+
+        if (browserHasHashChange)        
+            document.body.onhashchange = hashChangeHandler;
+    }
+
+    return {
+        historyHash: historyHash, 
+        backStack: function() { return backStack; }, 
+        forwardStack: function() { return forwardStack }, 
+        getPlayer: getPlayer, 
+        initialize: function(src) {
+            _initialize(src);
+        }, 
+        setURL: function(url) {
+            document.location.href = url;
+        }, 
+        getURL: function() {
+            return document.location.href;
+        }, 
+        getTitle: function() {
+            return document.title;
+        }, 
+        setTitle: function(title) {
+            try {
+                backStack[backStack.length - 1].title = title;
+            } catch(e) { }
+            //if on safari, set the title to be the empty string. 
+            if (browser.safari) {
+                if (title == "") {
+                    try {
+                    var tmp = window.location.href.toString();
+                    title = tmp.substring((tmp.lastIndexOf("/")+1), 
tmp.lastIndexOf("#"));
+                    } catch(e) {
+                        title = "";
+                    }
+                }
+            }
+            document.title = title;
+        }, 
+        setDefaultURL: function(def)
+        {
+            defaultHash = def;
+            def = getHash();
+            //trailing ? is important else an extra frame gets added to the 
history
+            //when navigating back to the first page.  Alternatively could 
check
+            //in history frame navigation to compare # and ?.
+            if (browser.ie)
+            {
+                window['_ie_firstload'] = true;
+                var sourceToSet = historyFrameSourcePrefix + def;
+                var func = function() {
+                    getHistoryFrame().src = sourceToSet;
+                    window.location.replace("#" + def);
+                    setInterval(checkForUrlChange, 50);
+                }
+                try {
+                    func();
+                } catch(e) {
+                    window.setTimeout(function() { func(); }, 0);
+                }
+            }
+
+            if (browser.safari)
+            {
+                currentHistoryLength = history.length;
+                if (historyHash.length == 0) {
+                    historyHash[currentHistoryLength] = def;
+                    var newloc = "#" + def;
+                    window.location.replace(newloc);
+                } else {
+                    //alert(historyHash[historyHash.length-1]);
+                }
+                setInterval(checkForUrlChange, 50);
+            }
+            
+            
+            if (browser.firefox || browser.opera)
+            {
+                var reg = new RegExp("#" + def + "$");
+                if (window.location.toString().match(reg)) {
+                } else {
+                    var newloc ="#" + def;
+                    window.location.replace(newloc);
+                }
+                setInterval(checkForUrlChange, 50);
+            }
+
+        }, 
+
+        /* Set the current browser URL; called from inside BrowserManager to 
propagate
+         * the application state out to the container.
+         */
+        setBrowserURL: function(flexAppUrl, objectId) {
+            if (browser.ie && typeof objectId != "undefined") {
+                currentObjectId = objectId;
+            }
+           //fromIframe = fromIframe || false;
+           //fromFlex = fromFlex || false;
+           //alert("setBrowserURL: " + flexAppUrl);
+           //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ;
+
+           var pos = document.location.href.indexOf('#');
+           var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : 
document.location.href;
+           var newUrl = baseUrl + '#' + flexAppUrl;
+
+           if (document.location.href != newUrl && document.location.href + 
'#' != newUrl) {
+               currentHref = newUrl;
+               addHistoryEntry(baseUrl, newUrl, flexAppUrl);
+               currentHistoryLength = history.length;
+           }
+        }, 
+
+        browserURLChange: function(flexAppUrl) {
+            var objectId = null;
+            if (browser.ie && currentObjectId != null) {
+                objectId = currentObjectId;
+            }
+            
+            if (typeof BrowserHistory_multiple != "undefined" && 
BrowserHistory_multiple == true) {
+                var pl = getPlayers();
+                for (var i = 0; i < pl.length; i++) {
+                    try {
+                        pl[i].browserURLChange(flexAppUrl);
+                    } catch(e) { }
+                }
+            } else {
+                try {
+                    getPlayer(objectId).browserURLChange(flexAppUrl);
+                } catch(e) { }
+            }
+
+            currentObjectId = null;
+        },
+        getUserAgent: function() {
+            return navigator.userAgent;
+        },
+        getPlatform: function() {
+            return navigator.platform;
+        }
+
+    }
+
+})();
+
+// Initialization
+
+// Automated unit testing and other diagnostics
+
+function setURL(url)
+{
+    document.location.href = url;
+}
+
+function backButton()
+{
+    history.back();
+}
+
+function forwardButton()
+{
+    history.forward();
+}
+
+function goForwardOrBackInHistory(step)
+{
+    history.go(step);
+}
+
+//BrowserHistoryUtils.addEvent(window, "load", function() { 
BrowserHistory.initialize(); });
+(function(i) {
+    var u =navigator.userAgent;var e=/*@cc_on!@*/false; 
+    var st = setTimeout;
+    if(/webkit/i.test(u)){
+        st(function(){
+            var dr=document.readyState;
+            if(dr=="loaded"||dr=="complete"){i()}
+            else{st(arguments.callee,10);}},10);
+    } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || 
(/opera/i.test(u))){
+        document.addEventListener("DOMContentLoaded",i,false);
+    } else if(e){
+    (function(){
+        var t=document.createElement('doc:rdy');
+        try{t.doScroll('left');
+            i();t=null;
+        }catch(e){st(arguments.callee,0);}})();
+    } else{
+        window.onload=i;
+    }
+})( function() {BrowserHistory.initialize();} );

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/html-template/history/historyFrame.html
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/html-template/history/historyFrame.html 
b/tourdeflexmodules/html-template/history/historyFrame.html
new file mode 100755
index 0000000..255339f
--- /dev/null
+++ b/tourdeflexmodules/html-template/history/historyFrame.html
@@ -0,0 +1,45 @@
+<!--
+  ~ 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.
+  -->
+<html>
+    <head>
+        <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
+        <META HTTP-EQUIV="Expires" CONTENT="-1"> 
+    </head>
+    <body>
+    <script>
+        function processUrl()
+        {
+
+            var pos = url.indexOf("?");
+            url = pos != -1 ? url.substr(pos + 1) : "";
+            if (!parent._ie_firstload) {
+                parent.BrowserHistory.setBrowserURL(url);
+                try {
+                    parent.BrowserHistory.browserURLChange(url);
+                } catch(e) { }
+            } else {
+                parent._ie_firstload = false;
+            }
+        }
+
+        var url = document.location.href;
+        processUrl();
+        document.write(encodeURIComponent(url));
+    </script>
+    Hidden frame for Browser History support.
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/html-template/index.template.html
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/html-template/index.template.html 
b/tourdeflexmodules/html-template/index.template.html
new file mode 100755
index 0000000..b064431
--- /dev/null
+++ b/tourdeflexmodules/html-template/index.template.html
@@ -0,0 +1,124 @@
+<!--
+  ~ 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.
+  -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<!-- saved from url=(0014)about:internet -->
+<html xmlns="http://www.w3.org/1999/xhtml"; lang="en" xml:lang="en"> 
+    <!-- 
+    Smart developers always View Source. 
+    
+    This application was built using Apache Flex, an open source framework
+    for building rich Internet applications that get delivered via the
+    Flash Player or to desktops via Adobe AIR. 
+    
+    Learn more about Flex at http://flex.org 
+    // -->
+    <head>
+        <title>${title}</title>
+        <meta name="google" value="notranslate" />         
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+        <!-- Include CSS to eliminate any default margins/padding and set the 
height of the html element and 
+             the body element to 100%, because Firefox, or any Gecko based 
browser, interprets percentage as 
+             the percentage of the height of its parent container, which has 
to be set explicitly.  Fix for
+             Firefox 3.6 focus border issues.  Initially, don't display 
flashContent div so it won't show 
+             if JavaScript disabled.
+        -->
+        <style type="text/css" media="screen"> 
+            html, body  { height:100%; }
+            body { margin:0; padding:0; overflow:auto; text-align:center; 
+                   background-color: ${bgcolor}; }   
+            object:focus { outline:none; }
+            #flashContent { display:none; }
+        </style>
+        
+        <!-- Enable Browser History by replacing useBrowserHistory tokens with 
two hyphens -->
+        <!-- BEGIN Browser History required section -->
+        <link rel="stylesheet" type="text/css" href="history/history.css" />
+        <script type="text/javascript" src="history/history.js"></script>
+        <!-- END Browser History required section -->  
+            
+        <script type="text/javascript" src="swfobject.js"></script>
+        <script type="text/javascript">
+            // For version detection, set to min. required Flash Player 
version, or 0 (or 0.0.0), for no version detection. 
+            var swfVersionStr = 
"${version_major}.${version_minor}.${version_revision}";
+            // To use express install, set to playerProductInstall.swf, 
otherwise the empty string. 
+            var xiSwfUrlStr = "playerProductInstall.swf";
+            var flashvars = {};
+            var params = {};
+            params.quality = "high";
+            params.bgcolor = "${bgcolor}";
+            params.allowscriptaccess = "sameDomain";
+            params.allowfullscreen = "true";
+            var attributes = {};
+            attributes.id = "${application}";
+            attributes.name = "${application}";
+            attributes.align = "middle";
+            swfobject.embedSWF(
+                "${swf}.swf", "flashContent", 
+                "${width}", "${height}", 
+                swfVersionStr, xiSwfUrlStr, 
+                flashvars, params, attributes);
+            // JavaScript enabled so display the flashContent div in case it 
is not replaced with a swf object.
+            swfobject.createCSS("#flashContent", 
"display:block;text-align:left;");
+        </script>
+    </head>
+    <body>
+        <!-- SWFObject's dynamic embed method replaces this alternative HTML 
content with Flash content when enough 
+             JavaScript and Flash plug-in support is available. The div is 
initially hidden so that it doesn't show
+             when JavaScript is disabled.
+        -->
+        <div id="flashContent">
+            <p>
+                To view this page ensure that Adobe Flash Player version 
+                ${version_major}.${version_minor}.${version_revision} or 
greater is installed. 
+            </p>
+            <script type="text/javascript"> 
+                var pageHost = ((document.location.protocol == "https:") ? 
"https://"; : "http://";); 
+                document.write("<a 
href='http://www.adobe.com/go/getflashplayer'><img src='" 
+                                + pageHost + 
"www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get 
Adobe Flash player' /></a>" ); 
+            </script> 
+        </div>
+        
+        <noscript>
+            <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
width="${width}" height="${height}" id="${application}">
+                <param name="movie" value="${swf}.swf" />
+                <param name="quality" value="high" />
+                <param name="bgcolor" value="${bgcolor}" />
+                <param name="allowScriptAccess" value="sameDomain" />
+                <param name="allowFullScreen" value="true" />
+                <!--[if !IE]>-->
+                <object type="application/x-shockwave-flash" data="${swf}.swf" 
width="${width}" height="${height}">
+                    <param name="quality" value="high" />
+                    <param name="bgcolor" value="${bgcolor}" />
+                    <param name="allowScriptAccess" value="sameDomain" />
+                    <param name="allowFullScreen" value="true" />
+                <!--<![endif]-->
+                <!--[if gte IE 6]>-->
+                    <p> 
+                        Either scripts and active content are not permitted to 
run or Adobe Flash Player version
+                        ${version_major}.${version_minor}.${version_revision} 
or greater is not installed.
+                    </p>
+                <!--<![endif]-->
+                    <a href="http://www.adobe.com/go/getflashplayer";>
+                        <img 
src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"; 
alt="Get Adobe Flash Player" />
+                    </a>
+                <!--[if !IE]>-->
+                </object>
+                <!--<![endif]-->
+            </object>
+        </noscript>     
+   </body>
+</html>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/installer.xml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/installer.xml b/tourdeflexmodules/installer.xml
new file mode 100644
index 0000000..02a26a6
--- /dev/null
+++ b/tourdeflexmodules/installer.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<!--
+
+  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.
+
+-->
+
+<project name="tour-de-flex_install" default="install" basedir=".">
+    
+    <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
+    <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
+    <!-- local.d32 is set/used in build.properties so this needs to be done 
first. -->
+    <condition property="local.d32" value="-d32">
+        <and>
+            <os family="windows"/>
+            <equals arg1="${sun.arch.data.model}" arg2="64"/>
+            <equals arg1="${os.arch}" arg2="x86_64"/>
+            <equals arg1="${ant.java.version}" arg2="1.6"/>
+        </and>
+    </condition>
+       
+    <condition property="isMacOrLinux" value="mac">
+       <or>
+               <os family="mac" />
+               <os family="unix" />
+       </or>
+    </condition>
+    <condition property="isWindows" value="windows">
+        <os family="windows" />
+    </condition>
+               
+       <property environment="env"/>
+    <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
+        <isset property="env.FLEX_HOME" />
+    </condition>
+
+    <property file="${FLEX_HOME}/local.properties"/>
+    <property file="${FLEX_HOME}/build.properties"/>
+    <property file="${basedir}/${bundle}.properties"/>
+
+       <property name="download.dir" value="${FLEX_HOME}/in"/>
+       <property name="unpack.dir" value="${FLEX_HOME}/tour-de-flex"/>
+       <property name="mirror.url" 
value="http://flex.apache.org/single-mirror-url.cgi"; />
+       
+    <property name="tour-de-flex.url.folder" value="flex/tourdeflex/1.1" />
+   
+    <target name="file-setup-win" if="isWindows">
+       <property name="tour-de-flex.url.file" 
value="apache-flex-tour-de-flex-component-explorer-1.1-src.zip" />
+       <property name="tour-de-flex.url.md5" 
value="95b9895120eebac1f2cd09929629ba2c" />
+    </target>
+       
+    <target name="file-setup-unix" if="isMacOrLinux">
+       <property name="tour-de-flex.url.file" 
value="apache-flex-tour-de-flex-component-explorer-1.1-src.tar.gz" />
+       <property name="tour-de-flex.url.md5" 
value="95b9895120eebac1f2cd09929629ba2c" />
+    </target>
+
+    <target name="install" 
depends="file-setup-win,file-setup-unix,tour-de-flex-download-unpack" 
description="Adds tour-de-flex to an Apache Flex SDK">
+        <delete dir="${download.dir}" />
+        <echo>Tour De Flex installed</echo>
+    </target>
+    
+    <target name="tour-de-flex-download-unpack" description="Downloads 
tour-de-flex and copies into the Apache Flex SDK">
+        <mkdir dir="${download.dir}"/>
+       
+       <get src="${mirror.url}" dest="${download.dir}/mirror.txt" />
+       <replace file="${download.dir}/mirror.txt" token="&lt;p&gt;" />
+       <replace file="${download.dir}/mirror.txt" token="&lt;/p&gt;" />
+       <loadfile property="tour-de-flex.url.server" 
srcFile="${download.dir}/mirror.txt" />
+       
+       <echo>Downloading 
${tour-de-flex.url.server}/${tour-de-flex.url.folder}/${tour-de-flex.url.file}</echo>
+        
+       <antcall target="download-check-md5">
+            <param name="domain" value="${tour-de-flex.url.server}" />
+            <param name="folder" value="${tour-de-flex.url.folder}" />
+            <param name="file" value="${tour-de-flex.url.file}" />
+            <param name="dest" 
value="${download.dir}/${tour-de-flex.url.file}"/>
+                       <param name="failmessage" value="Tour De Flex download 
failed" />
+                       <param name="md5" value="${tour-de-flex.url.md5}" />
+        </antcall>
+       
+       <mkdir dir="${unpack.dir}"/>
+       <antcall target="files-unzip" />
+       <antcall target="files-untar" />
+    </target>
+                       
+    <target name="files-unzip" if="isWindows">
+       <unzip dest="${unpack.dir}">
+               <fileset file="${download.dir}/${tour-de-flex.url.file}" />
+       </unzip>
+    </target>
+       
+    <target name="files-untar" if="isMacOrLinux">
+       <untar dest="${unpack.dir}" compression="gzip">
+               <fileset file="${download.dir}/${tour-de-flex.url.file}" />
+       </untar>
+    </target>
+
+    <target name="download-check-md5" description="Downloads file, and 
verifies checksum.">     
+       <tstamp />
+       <property name="ts" value="${DSTAMP}${TSTAMP}" />
+        <get src="${domain}/${folder}/${file}?ts=${ts}" dest="${dest}" 
verbose="true" />
+        <antcall target="check-md5" />
+    </target>
+
+    <target name="check-md5" description="Verifies MD5 checksum, and fails if 
checksum doesn't match">
+        <echo>Checking ${dest} matches ${md5}</echo>
+        <checksum file="${dest}" algorithm="MD5" verifyproperty="md5.failed" 
property="${md5}" />
+        <fail message="${failmessage}">
+            <condition>
+                <equals arg1="${md5.failed}" arg2="false" />
+            </condition>
+        </fail>
+    </target>
+</project>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/3rdparty.xml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/3rdparty.xml 
b/tourdeflexmodules/src/3rdparty.xml
new file mode 100755
index 0000000..93078e4
--- /dev/null
+++ b/tourdeflexmodules/src/3rdparty.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+
+<compTree>
+       <node label="3rd Party Components">
+               <node label="Ardisia">
+                       <node thirdParty="true" label="Ardisia Component 
Library" app="http://www.ardisialabs.com/tourDeFlex/tour-de-flex.jpg"; src="" 
link="http://www.ardisialabs.com/tour-de-flex"; />
+               </node>
+               <node label="Flexicious">
+                       <node thirdParty="true" label="Dashboard Framework" 
app="http://www.flexicious.com/dashboard.jpg"; src="" 
link="http://www.flexicious.com/Home/Dashboard"/>
+                       <node thirdParty="true" label="Ultimate DataGrid" 
app="http://www.flexicious.com/ultimate.jpg"; src="" 
link="http://www.flexicious.com/Home/Ultimate"; />
+                       <node thirdParty="true" label="Classic DataGrid" 
app="http://www.flexicious.com/classic.jpg"; src="" 
link="http://www.flexicious.com/Home/DemoFlex4"/>
+               </node>
+       </node>
+</compTree>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/SourceTab.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/SourceTab.mxml 
b/tourdeflexmodules/src/SourceTab.mxml
new file mode 100755
index 0000000..874ed18
--- /dev/null
+++ b/tourdeflexmodules/src/SourceTab.mxml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  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.
+  -->
+
+<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009";
+                xmlns:mx="library://ns.adobe.com/flex/mx"
+                width="100%" height="100%">
+
+    <fx:Script>
+        <![CDATA[
+
+        import mx.rpc.events.ResultEvent;
+        import mx.rpc.events.FaultEvent;
+        import mx.controls.Alert;
+
+               public var app:String;
+                       
+        public function set source(file:String):void
+        {
+            label = file.substring(file.lastIndexOf("/")+1);
+            srv.url = file;
+            srv.send();
+                       ta.verticalScrollPosition = 19; // at end of header
+        }
+
+        private function resultHandler(event:ResultEvent):void
+        {
+            var str:String = String(event.result);
+            var r:RegExp = new RegExp("\r\n", "gs");
+            str = str.replace(r, "\r");
+            ta.text = str;
+        }
+
+        private function faultHandler(event:FaultEvent):void
+        {
+            Alert.show("Error loading source file");
+        }
+                       
+               private function copyCode():void
+        {
+               System.setClipboard(ta.text);
+        }
+               
+               private function copyLink():void
+        {
+                       var linkText:String = 
"http://flex.apache.org/tourdeflex/?app="; + app;
+                       
+               System.setClipboard(linkText);
+        }
+                       
+               private function viewInGitHub():void
+               {
+                       var gitHubLink:String = 
"https://github.com/apache/flex-utilities/tree/master/TourDeFlex/TourDeFlex3/src/";
 + srv.url;
+                       var urlRequest:URLRequest = new URLRequest(gitHubLink);
+                       navigateToURL(urlRequest, "_blank");
+               }
+
+        ]]>
+    </fx:Script>
+
+       <fx:Declarations>
+       <mx:HTTPService id="srv" useProxy="false" resultFormat="text" 
result="resultHandler(event)" fault="faultHandler(event)"/>
+       </fx:Declarations>
+       
+    <mx:TextArea id="ta" color="#0000A0" fontFamily="Courier" editable="false" 
wordWrap="false" width="100%" height="100%"/>
+       <mx:HBox width="100%" paddingBottom="5" paddingRight="20">
+               <mx:Spacer width="100%" />
+               <mx:Button label="Copy" click="copyCode()" />
+               <mx:Button label="Copy Link" click="copyLink()" />
+               <mx:Button label="GitHub" click="viewInGitHub()" />
+       </mx:HBox>
+</mx:VBox>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/SpellingConfig.xml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/SpellingConfig.xml 
b/tourdeflexmodules/src/SpellingConfig.xml
new file mode 100644
index 0000000..dfae724
--- /dev/null
+++ b/tourdeflexmodules/src/SpellingConfig.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding='UTF-8'?>
+<!--
+
+  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.
+
+-->
+<SpellingConfig>
+  <LanguageResource language="English (British)" languageCode="en_GB" 
ruleFile="./dictionaries/en_GB/en_GB.aff" 
dictionaryFile="./dictionaries/en_GB/en_GB.dic"/>
+  <LanguageResource language="English (US)" languageCode="en_US" 
ruleFile="./dictionaries/en_US/en_US.aff" 
dictionaryFile="./dictionaries/en_US/en_US.dic"/>
+</SpellingConfig>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/ThirdPartyTab.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/ThirdPartyTab.mxml 
b/tourdeflexmodules/src/ThirdPartyTab.mxml
new file mode 100644
index 0000000..29f7860
--- /dev/null
+++ b/tourdeflexmodules/src/ThirdPartyTab.mxml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  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.
+  -->
+
+<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009";
+                xmlns:mx="library://ns.adobe.com/flex/mx"
+                xmlns:s="library://ns.adobe.com/flex/spark"
+                label="3rd Party Example"
+                paddingTop="10" paddingBottom="10" paddingLeft="20" 
paddingRight="20"
+                borderStyle="solid"
+                width="100%" height="100%">
+
+       <s:RichText width="100%" height="100%">
+               <s:p>This example or component has been developed by a 3rd 
party and is hosted outside of the Tour De Flex site and may contain links to 
non ASF sites. It's code may not be Open Source or may be under a license other 
than the Apache license so please check carefully before using it. Neither the 
ASF or the Apache Flex PMC can endorse or recommend using this example but you 
may still find it useful.</s:p>
+       </s:RichText>
+</mx:VBox>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/Welcome.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/Welcome.mxml 
b/tourdeflexmodules/src/Welcome.mxml
new file mode 100644
index 0000000..6b86e04
--- /dev/null
+++ b/tourdeflexmodules/src/Welcome.mxml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+  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.
+  -->
+
+<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009";
+                               xmlns:mx="library://ns.adobe.com/flex/mx"
+                               xmlns:s="library://ns.adobe.com/flex/spark"
+                               paddingBottom="0" paddingTop="0" 
paddingLeft="0" paddingRight="0"
+                               height="100%" width="100%">
+
+    <mx:Panel title="Welcome to Tour De Flex"
+                         paddingBottom="10" paddingTop="10" paddingLeft="10" 
paddingRight="10"
+                         height="100%" width="100%">
+               <s:HGroup>
+                       <s:Image 
source="@Embed('/apache/assets/ApacheFlexLogo.png')" width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Tour De Flex" 
fontSize="20" fontWeight="bold" />
+                       </s:VGroup>     
+               </s:HGroup>
+                       
+               <s:RichText width="100%" height="100%">
+                       <s:p />
+                       <s:p>The Apache Flex Tour De Flex component explorer 
provides a sample set of working
+         Apache Flex examples.</s:p>
+                       <s:p />
+                       <s:p>New in this version:</s:p>
+                       <s:list>
+                               <s:li>Added this welcome page</s:li>
+                               <s:li>Changed examples look and feel to be more 
consistent</s:li>
+                               <s:li>Added support for 3rd party 
examples</s:li>
+                               <s:li>Added Squiggly spelling engine 
examples</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+    </mx:Panel>
+</mx:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_10_0.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_10_0.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_10_0.mxml
new file mode 100644
index 0000000..18e90e8
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_10_0.mxml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.10" width="100%" height="100%">           
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.10" fontSize="20" 
fontWeight="bold" />
+                               <s:Label text="Released Aug 6, 2013" /> 
+                       </s:VGroup>     
+               </s:HGroup>
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.10.0.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights include:</s:p>
+                       <s:list>
+                               <s:li>Support for latest versions of Flash 
Player (up to 11.8) and AIR runtimes (up to 3.8)</s:li>
+                               <s:li>Improved support for older Flash Player 
versions (down to 10.2)</s:li>
+                               <s:li>Linux support</s:li>
+                               <s:li>15 new Spark components</s:li>
+                               <s:li>Advanced telemetry support</s:li>
+                               <s:li>480 dpi mobile skins</s:li>
+                               <s:li>Over 200 bugs fixeds</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+               <s:Label text="Content from Wikipedia licenced under a Creative 
Commons Attribution-ShareAlike 3.0 Unported License" fontSize="9" />
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_11_0.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_11_0.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_11_0.mxml
new file mode 100644
index 0000000..e462b72
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_11_0.mxml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.11" width="100%" height="100%">   
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.11" fontSize="20" 
fontWeight="bold" />
+                               <s:Label text="Released Oct 28, 2013" />
+                       </s:VGroup>     
+               </s:HGroup>     
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.11.0.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights include:</s:p>
+                       <s:list>
+                               <s:li>Support for Flash Player 11.9 and AIR 
runtime 3.9</s:li>
+                               <s:li>mx:AdvancedDataGrid and mx:DataGrid speed 
improvements</s:li>
+                               <s:li>Updated OSMF to latest version</s:li>
+                               <s:li>Mobile datagrid component</s:li>
+                               <s:li>120 and 640 dpi mobile skins</s:li>
+                               <s:li>Desktop callout component</s:li>
+                               <s:li>Over 50 bugs fixed</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+               <s:Label text="Content from Wikipedia licenced under a Creative 
Commons Attribution-ShareAlike 3.0 Unported License" fontSize="9" />
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_12_1.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_12_1.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_12_1.mxml
new file mode 100644
index 0000000..275e910
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_12_1.mxml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.12" width="100%" height="100%">   
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.12" fontSize="20" 
fontWeight="bold" />
+                               <s:Label text="Released May 3, 2014" />
+                       </s:VGroup>     
+               </s:HGroup>     
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.12.1.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights in 4.12.0 and 4.12.1 
include:</s:p>
+                       <s:list>
+                               <s:li>Support for Flash Player 12.0 and 13.0 
and AIR runtime 4.0 and 13.0</s:li>
+                               <s:li>Fixed Adobe Flash Builder bug, which 
inserts a incorrect attribute while creating a new project that uses Apache 
Flex SDK</s:li>
+                               <s:li>Extended mobile media query support</s:li>
+                               <s:li>Improved mobile memory 
usage/performance</s:li>
+                               <s:li>Improved iPad and iOS7 support</s:li>
+                               <s:li>mx:AdvancedDataGrid and mx:DataGrid 
performance improvements</s:li>
+                               <s:li>New MaskedTextinput component</s:li>
+                               <s:li>JSON support for ArrayCollection and 
ArrayList</s:li>
+                               <s:li>Over 100 bugs fixed</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+               <s:Label text="Content from Wikipedia licenced under a Creative 
Commons Attribution-ShareAlike 3.0 Unported License" fontSize="9" />
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_13_0.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_13_0.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_13_0.mxml
new file mode 100644
index 0000000..047d6b5
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_13_0.mxml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.13" width="100%" height="100%">   
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.13" fontSize="20" 
fontWeight="bold" />
+                               <s:Label text="Released Jul 28, 2014" />
+                       </s:VGroup>     
+               </s:HGroup>
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.13.0.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights include:</s:p>
+                       <s:list>
+                               <s:li>Support for Flash Player 14.0 and AIR 
runtime 14.0</s:li>
+                               <s:li>FDB supports debugging ActionScript 
Workers</s:li>
+                               <s:li>percentWidth for GridColumn</s:li>
+                               <s:li>Add Chinese translations for all the 
installers of Flex</s:li>
+                               <s:li>Over 30 bugs fixed</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+               <s:Label text="Content from Wikipedia licenced under a Creative 
Commons Attribution-ShareAlike 3.0 Unported License" fontSize="9" />
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_14_0.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_14_0.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_14_0.mxml
new file mode 100644
index 0000000..4571431
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_14_0.mxml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.14" width="100%" height="100%">   
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.14" fontSize="20" 
fontWeight="bold" />
+                               <s:Label text="Released Feb 03, 2014" />
+                       </s:VGroup>     
+               </s:HGroup>
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.14.0.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights include:</s:p>
+                       <s:list>
+                               <s:li>Support for Flash Player 15.0, 16.0 and 
AIR runtime 15.0, 16.0</s:li>
+                               <s:li>iOS7 and Android 4.x mobile themess</s:li>
+                               <s:li>FlatSpark skins and components</s:li>
+                               <s:li>Native support for tables in TLF</s:li>
+                               <s:li>New spark RichTextEditor component</s:li>
+                               <s:li>Over 50 bugs fixed</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_8_0.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_8_0.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_8_0.mxml
new file mode 100644
index 0000000..2850eac
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_8_0.mxml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.8 (incubating)" width="100%" 
height="100%">
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.8 (incubating)" 
fontSize="20" fontWeight="bold" />
+                               <s:Label text="Released Jul 25, 2012" />
+                       </s:VGroup>     
+               </s:HGroup>
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.8.0 
incubating and it as a parity release with Adobe Flex 4.6.0. This is the first 
release under the incubator of the Apache Software Foundation and represents 
the initial donation of Adobe Flex 4.6 by Adobe System Inc.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights include:</s:p>
+                       <s:list>
+                               <s:li>Flex trademark issues are largely cleared 
up</s:li>
+                               <s:li>Bug-tracking / issue-tracking system 
(JIRA) transferred from the Adobe bug tracker to Apache bug tracker</s:li>
+                               <s:li>Mustela test suite is donated to 
Apache</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+               <s:Label text="Content from Wikipedia licenced under a Creative 
Commons Attribution-ShareAlike 3.0 Unported License" fontSize="9" />    
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/ApacheFlex4_9_0.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/ApacheFlex4_9_0.mxml 
b/tourdeflexmodules/src/apache/ApacheFlex4_9_0.mxml
new file mode 100644
index 0000000..2113db3
--- /dev/null
+++ b/tourdeflexmodules/src/apache/ApacheFlex4_9_0.mxml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Flex 4.9" width="100%" height="100%">
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex 4.9" fontSize="20" 
fontWeight="bold" />
+                               <s:Label text="Released Jan 11, 2013" />
+                       </s:VGroup>     
+               </s:HGroup>
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Flex 4.9.0. This is 
the first release since Apache Flex became a top level project of the Apache 
Software Foundation.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights include:</s:p>
+                       <s:list>
+                               <s:li>New locales for Apache Flex including 
Australian, British, Canadian, Greek, Switzerland (German) and Portuguese</s:li>
+                               <s:li>Apache Flex SDK can be compiled for any 
version of the Flash Player from 10.2 to 11.5</s:li>
+                               <s:li>New PostCodeFormatter and 
PostCodeValidator classes for international postcode formatting and 
validation</s:li>
+                               <s:li>New VectorList and VectorCollection 
classes for lists and collections of vectors</s:li>
+                               <s:li>New version of the TLF (Text Layout 
Framework), the TLF 3.0.33 source code is now included as it is now part of the 
Apache Flex donation</s:li>
+                               <s:li>Can use Java 7 to compile SDK (see README 
for instructions)</s:li>
+                               <s:li>Many improvements and updates to Mustella 
tests</s:li>
+                               <s:li>An SDK installer has also been created 
and is the recommended way of installing the Apache Flex SDK in an IDE</s:li>
+                               <s:li>Various important bug fixes</s:li>
+                       </s:list>
+                       <s:p />
+                       <s:p>For a full list of changes please see the 
README.</s:p>
+                       <s:p />
+               </s:RichText>
+               <s:Label text="Content from Wikipedia licenced under a Creative 
Commons Attribution-ShareAlike 3.0 Unported License" fontSize="9" />
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/Squiggly1_1.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/Squiggly1_1.mxml 
b/tourdeflexmodules/src/apache/Squiggly1_1.mxml
new file mode 100644
index 0000000..3184711
--- /dev/null
+++ b/tourdeflexmodules/src/apache/Squiggly1_1.mxml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <s:Panel title="Apache Squiggly 1.1" width="100%" height="100%">        
        
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Image source="@Embed('/assets/ApacheFlexLogo.png')" 
width="50" height="50" />
+                       <s:VGroup height="100%" verticalAlign="middle">
+                               <s:Label text="Apache Flex Squiggly 1.1" 
fontSize="20" fontWeight="bold" />
+                               <s:Label text="Released Oct 28, 2014" />        
+                       </s:VGroup>     
+               </s:HGroup>
+               <s:RichText width="100%">
+                       <s:p />
+                       <s:p>Apache Flex community releases Squiggly 1.1</s:p>
+                       <s:p />
+                       <s:p>Apache Flex Squiggly is a ActionScript spell 
checking library.</s:p>
+                       <s:p />
+                       <s:p>Differences and highlights from 1.0 include:</s:p>
+                       <s:list>
+                               <s:li>Mavenized version of Squiggly</s:li>
+                               <s:li>Added installer ant file</s:li>
+                               <s:li>Added en_US and en_GB dictionaries</s:li>
+                               <s:li>Now works with both halo and spark 
components</s:li>
+                       </s:list>
+               </s:RichText>
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/assets/ApacheFlexLogo.png
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/assets/ApacheFlexLogo.png 
b/tourdeflexmodules/src/apache/assets/ApacheFlexLogo.png
new file mode 100644
index 0000000..4ff037f
Binary files /dev/null and 
b/tourdeflexmodules/src/apache/assets/ApacheFlexLogo.png differ

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/containers/CalloutExample.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/containers/CalloutExample.mxml 
b/tourdeflexmodules/src/apache/containers/CalloutExample.mxml
new file mode 100644
index 0000000..fa34ae2
--- /dev/null
+++ b/tourdeflexmodules/src/apache/containers/CalloutExample.mxml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009"; 
+                          xmlns:s="library://ns.adobe.com/flex/spark" 
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+
+       <fx:Declarations>
+               <s:Callout id="callout">
+                       <s:VGroup horizontalAlign="center">
+                               <s:Label text="Callout - click close" />
+                               <s:Button label="Close" click="callout.close()" 
/>
+                       </s:VGroup>
+               </s:Callout>
+       </fx:Declarations>
+       
+       <s:Panel title="Callout Example" width="100%" height="100%">
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup>
+                       <s:Button id="show" label="Show Callout" 
click="callout.open(show)" />
+               </s:HGroup>
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/controls/MaskedTextInputExample.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmodules/src/apache/controls/MaskedTextInputExample.mxml 
b/tourdeflexmodules/src/apache/controls/MaskedTextInputExample.mxml
new file mode 100644
index 0000000..cbf5d50
--- /dev/null
+++ b/tourdeflexmodules/src/apache/controls/MaskedTextInputExample.mxml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009";
+                          xmlns:s="library://ns.adobe.com/flex/spark"
+                          xmlns:mx="library://ns.adobe.com/flex/mx"
+                          xmlns:x="http://flex.apache.org/experimental/ns";>
+       
+       <s:Panel title="Masked TextInput Example" width="100%" height="100%">
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup verticalAlign="bottom">
+                       <s:Label text="Phone Number:" />
+                       <x:MaskedTextInput maskText="####-####" />
+               </s:HGroup>
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/controls/SparkRichTextEditorExample.mxml
----------------------------------------------------------------------
diff --git 
a/tourdeflexmodules/src/apache/controls/SparkRichTextEditorExample.mxml 
b/tourdeflexmodules/src/apache/controls/SparkRichTextEditorExample.mxml
new file mode 100644
index 0000000..78cab09
--- /dev/null
+++ b/tourdeflexmodules/src/apache/controls/SparkRichTextEditorExample.mxml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009";
+                          xmlns:s="library://ns.adobe.com/flex/spark"
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+       <fx:Script>
+               <![CDATA[
+                       import spark.components.RichTextEditor;
+                       import spark.events.TextOperationEvent;
+
+                       private var rte:RichTextEditor;
+
+                       protected override function createChildren():void
+                       {
+                               super.createChildren();
+                               rte = new RichTextEditor();
+                               rte.htmlText = '<b>This is great!</b><br/><font 
color="#FF0000">Another Line.</font>';
+                               rte.addEventListener(TextOperationEvent.CHANGE, 
handleChange);
+                               container.addElementAt(rte, 0);
+                               handleChange();
+                       }
+
+                       private function handleChange(e:TextOperationEvent = 
null):void
+                       {
+                               richTextEditorOutput.text = rte.htmlText;
+                       }
+               ]]>
+       </fx:Script>
+
+       <s:Panel title="RichTextEditor Sample" width="100%" height="100%">
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+
+               <s:VGroup id="container" width="600" paddingBottom="10" 
paddingLeft="10" paddingRight="10" paddingTop="10">
+                       <s:Label text="HTML Output:" fontSize="20"/>
+                       <s:Label id="richTextEditorOutput" width="100%"/>
+               </s:VGroup>
+       </s:Panel>
+</s:Module>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/9343d391/tourdeflexmodules/src/apache/formatters/PostCodeFormatterExample.mxml
----------------------------------------------------------------------
diff --git 
a/tourdeflexmodules/src/apache/formatters/PostCodeFormatterExample.mxml 
b/tourdeflexmodules/src/apache/formatters/PostCodeFormatterExample.mxml
new file mode 100644
index 0000000..00ef002
--- /dev/null
+++ b/tourdeflexmodules/src/apache/formatters/PostCodeFormatterExample.mxml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  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.
+
+-->
+<s:Module xmlns:fx="http://ns.adobe.com/mxml/2009";
+                          xmlns:s="library://ns.adobe.com/flex/spark"
+                          xmlns:mx="library://ns.adobe.com/flex/mx">
+       <s:layout>
+               <s:HorizontalLayout verticalAlign="middle" 
horizontalAlign="center" />
+       </s:layout>
+       
+       <fx:Script>
+               <![CDATA[       
+                       import org.apache.flex.formatters.PostCodeFormatter;
+                       
+                       private var formatter:PostCodeFormatter;
+                       
+                       protected function formatPostCode(event:MouseEvent):void
+                       {
+                               formatter = new PostCodeFormatter();
+                               
+                               if (aust.selected) {
+                                       formatted.text = 
checkAustralianPostCode(postcode.text);
+                               }
+                               else if (uk.selected) {
+                                       formatted.text = 
checkUKPostCode(postcode.text);
+                               }
+                               else if (can.selected) {
+                                       formatted.text = 
checkCanadianPostCode(postcode.text);
+                               }                       
+                       }
+                       
+                       public function 
checkAustralianPostCode(postcode:String):String {
+                               formatter.formats = ["NNNN"];
+                               
+                               return formatter.format(postcode);
+                       }
+                               
+                       public function checkUKPostCode(postcode:String):String 
{
+                               formatter.formats = ["AN NAA", "ANN NAA", "AAN 
NAA", "ANA NAA", "AANN NAA", "AANA NAA"];
+                               
+                               return formatter.format(postcode);
+                       }
+                       
+                       public function 
checkCanadianPostCode(postcode:String):String {
+                               formatter.formatString = "ANA NAN";
+       
+                               return formatter.format(postcode);
+                       }
+               ]]>
+       </fx:Script>
+       
+       <s:Panel title="Postcode Formatter Example" width="100%" height="100%"> 
        
+               <s:layout>
+                       <s:VerticalLayout paddingLeft="10" paddingRight="10" 
paddingTop="10" paddingBottom="10"/>
+               </s:layout>
+               <s:HGroup verticalAlign="middle">
+                       <s:Label text="Postcode" />
+                       <s:TextInput id="postcode" text=""/>
+               </s:HGroup>
+               <s:HGroup verticalAlign="middle">
+                       <s:Label text="Country" />
+                       <s:RadioButton id="aust" label="Australia" 
selected="true" />   
+                       <s:RadioButton id="uk" label="UK" />    
+                       <s:RadioButton id="can" label="Canada" />       
+               </s:HGroup>
+               <s:Button label="Show Formatted Postcode" 
click="formatPostCode(event)" />
+               <s:HGroup>
+                       <s:Label text="Formatted Postcode" />
+                       <s:Label id="formatted" />
+               </s:HGroup>
+       </s:Panel>
+</s:Module>

Reply via email to