http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex/src/objects/HOWTO/SourceStyles.css ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex/src/objects/HOWTO/SourceStyles.css b/TourDeFlex/TourDeFlex/src/objects/HOWTO/SourceStyles.css new file mode 100644 index 0000000..639c39a --- /dev/null +++ b/TourDeFlex/TourDeFlex/src/objects/HOWTO/SourceStyles.css @@ -0,0 +1,146 @@ +/* + * 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. + */ +body { + font-family: Courier New, Courier, monospace; +} + +.CSS@font-face { + color: #990000; + font-weight: bold; +} + +.CSS@import { + color: #006666; + font-weight: bold; +} + +.CSS@media { + color: #663333; + font-weight: bold; +} + +.CSSComment { + color: #999999; +} + +.CSSDefault_Text { +} + +.CSSDelimiters { +} + +.CSSProperty_Name { + color: #330099; +} + +.CSSProperty_Value { + color: #3333cc; +} + +.CSSSelector { + color: #ff00ff; +} + +.CSSString { + color: #990000; +} + +.ActionScriptASDoc { + color: #3f5fbf; +} + +.ActionScriptBracket/Brace { +} + +.ActionScriptComment { + color: #009900; + font-style: italic; +} + +.ActionScriptDefault_Text { +} + +.ActionScriptMetadata { + color: #0033ff; + font-weight: bold; +} + +.ActionScriptOperator { +} + +.ActionScriptReserved { + color: #0033ff; + font-weight: bold; +} + +.ActionScriptString { + color: #990000; + font-weight: bold; +} + +.ActionScriptclass { + color: #9900cc; + font-weight: bold; +} + +.ActionScriptfunction { + color: #339966; + font-weight: bold; +} + +.ActionScriptinterface { + color: #9900cc; + font-weight: bold; +} + +.ActionScriptpackage { + color: #9900cc; + font-weight: bold; +} + +.ActionScripttrace { + color: #cc6666; + font-weight: bold; +} + +.ActionScriptvar { + color: #6699cc; + font-weight: bold; +} + +.MXMLComment { + color: #800000; +} + +.MXMLComponent_Tag { + color: #0000ff; +} + +.MXMLDefault_Text { +} + +.MXMLProcessing_Instruction { +} + +.MXMLSpecial_Tag { + color: #006633; +} + +.MXMLString { + color: #990000; +} +
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex/src/objects/SourceStyles.css ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex/src/objects/SourceStyles.css b/TourDeFlex/TourDeFlex/src/objects/SourceStyles.css new file mode 100644 index 0000000..639c39a --- /dev/null +++ b/TourDeFlex/TourDeFlex/src/objects/SourceStyles.css @@ -0,0 +1,146 @@ +/* + * 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. + */ +body { + font-family: Courier New, Courier, monospace; +} + +.CSS@font-face { + color: #990000; + font-weight: bold; +} + +.CSS@import { + color: #006666; + font-weight: bold; +} + +.CSS@media { + color: #663333; + font-weight: bold; +} + +.CSSComment { + color: #999999; +} + +.CSSDefault_Text { +} + +.CSSDelimiters { +} + +.CSSProperty_Name { + color: #330099; +} + +.CSSProperty_Value { + color: #3333cc; +} + +.CSSSelector { + color: #ff00ff; +} + +.CSSString { + color: #990000; +} + +.ActionScriptASDoc { + color: #3f5fbf; +} + +.ActionScriptBracket/Brace { +} + +.ActionScriptComment { + color: #009900; + font-style: italic; +} + +.ActionScriptDefault_Text { +} + +.ActionScriptMetadata { + color: #0033ff; + font-weight: bold; +} + +.ActionScriptOperator { +} + +.ActionScriptReserved { + color: #0033ff; + font-weight: bold; +} + +.ActionScriptString { + color: #990000; + font-weight: bold; +} + +.ActionScriptclass { + color: #9900cc; + font-weight: bold; +} + +.ActionScriptfunction { + color: #339966; + font-weight: bold; +} + +.ActionScriptinterface { + color: #9900cc; + font-weight: bold; +} + +.ActionScriptpackage { + color: #9900cc; + font-weight: bold; +} + +.ActionScripttrace { + color: #cc6666; + font-weight: bold; +} + +.ActionScriptvar { + color: #6699cc; + font-weight: bold; +} + +.MXMLComment { + color: #800000; +} + +.MXMLComponent_Tag { + color: #0000ff; +} + +.MXMLDefault_Text { +} + +.MXMLProcessing_Instruction { +} + +.MXMLSpecial_Tag { + color: #006633; +} + +.MXMLString { + color: #990000; +} + http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex/src/plugin/Component.as ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex/src/plugin/Component.as b/TourDeFlex/TourDeFlex/src/plugin/Component.as new file mode 100644 index 0000000..2cdbd93 --- /dev/null +++ b/TourDeFlex/TourDeFlex/src/plugin/Component.as @@ -0,0 +1,72 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package plugin +{ + //import merapi.messages.*; + + import mx.collections.ArrayCollection; + + [RemoteClass(alias="com.adobe.tourdeflex.core.Component")] + + public class Component //extends Message + { + // ---------------------------- variables --------------------- + private var __id : String; + private var __name : String; + private var __description : String; + private var __author : String; + + // ---------------------------- getters & setters --------------------- + + public function get id() : String + { + return __id; + } + public function set id( value : String ) : void + { + __id = value; + } + + public function get name() : String + { + return __name; + } + public function set name( value : String ) : void + { + __name = value; + } + public function get description() : String + { + return __description; + } + public function set description( value : String ) : void + { + __description = value; + } + public function get author() : String + { + return __author; + } + public function set author( value : String ) : void + { + __author = value; + } + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex/src/plugin/TDFPluginTransferObject.as ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex/src/plugin/TDFPluginTransferObject.as b/TourDeFlex/TourDeFlex/src/plugin/TDFPluginTransferObject.as new file mode 100644 index 0000000..1f59cf0 --- /dev/null +++ b/TourDeFlex/TourDeFlex/src/plugin/TDFPluginTransferObject.as @@ -0,0 +1,66 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package plugin +{ + import merapi.messages.*; + + import mx.collections.ArrayCollection; + + [RemoteClass(alias="com.adobe.tourdeflex.core.TDFPluginTransferObject")] + + public class TDFPluginTransferObject extends Message + { + // ---------------------------- variables --------------------- + private var __components : ArrayCollection; + private var __pluginDownloadPath : String; + private var __selectedComponentId : String; + + // ---------------------------- constructor --------------------- + public function TDFPluginTransferObject() : void + { + + } + + // ---------------------------- getters & setters --------------------- + public function get components() : ArrayCollection + { + return __components; + } + public function set components( value : ArrayCollection ) : void + { + __components = value; + } + public function get pluginDownloadPath() : String + { + return __pluginDownloadPath; + } + public function set pluginDownloadPath( value : String ) : void + { + __pluginDownloadPath = value; + } + public function get selectedComponentId() : String + { + return __selectedComponentId; + } + public function set selectedComponentId( value : String ) : void + { + __selectedComponentId = value; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex/src/styles.css ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex/src/styles.css b/TourDeFlex/TourDeFlex/src/styles.css new file mode 100644 index 0000000..4095871 --- /dev/null +++ b/TourDeFlex/TourDeFlex/src/styles.css @@ -0,0 +1,420 @@ +/* + * 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. + */ +@namespace mx "library://ns.adobe.com/flex/mx"; + +mx|Application +{ + theme-color:#E0E0E0; + modal-transparency:0.5; + modal-transparency-blur:0; +} + +/* todo: use apache font +@font-face { + src: url("assets/MyriadWebPro.ttf"); + fontFamily: eFontFamily; +} +*/ + +.mainWindow +{ + /* background-color:#262626; */ +} + +.mainBackground +{ + background-color:#262626; +} + +.applicationHeader +{ + borderSkin: Embed(skinClass='TopPanelWLogo'); +} + +.applicationFooter +{ + borderSkin: Embed(skinClass='FootPanel'); + color:#A4A4A4; +} + +.applicationCloseButton +{ + /* icon: Embed(skinClass='CloseIcon'); + skin: Embed(source="images/button_clear.png"); */ + skin: Embed(skinClass='CloseButton'); +} + +.applicationMaximizeButton +{ + /* icon: Embed(skinClass='WindowIcon'); + skin: Embed(source="images/button_clear.png"); */ + skin: Embed(skinClass='WindowButton'); +} + +.applicationMinimizeButton +{ + /* icon: Embed(skinClass='MinimizeIcon'); + skin: Embed(source="images/button_clear.png"); */ + skin: Embed(skinClass='MinimizeButton'); +} + +.aboutButton +{ + skin: Embed(skinClass='AboutButton'); +} + +.aboutComboBox +{ + skin: Embed(skinClass='DropMenu'); + color:#DDDDDD; + alternatingItemColors:#222222,#222222; +} + +mx|Alert +{ + color:#323232; + background-color:#E3E3E3; + border-color:#000000; + border-alpha: 0.7; + header-height:20; + theme-color: #848484; + title-style-name:alertTitle; +} + +.alertTitle +{ + color:#FFFFFF; + font-weight:bold; +} + +.outerDividedBoxes +{ + /* background-color:#D4CDCA; + corner-radius:8; + border-style:solid; + padding-bottom:8; + padding-left:8; + padding-right:8; + padding-top:8; */ + backgroundImage: Embed(skinClass='BoxSkin'); + backgroundSize: "100%"; + paddingTop: 7; + paddingLeft: 7; + paddingRight: 9; + paddingBottom: 16; +} + +.illustrationsBox +{ + background-color:#AFA7A1; + backgroundAlpha: 0.2; + corner-radius:5; + border-style:solid; + border-color:#C4C2C2; + border-alpha: 0.5; + padding-bottom:5; + padding-left:5; + padding-right:5; + padding-top:5; +} + +.illustrationTabs +{ + background-color:#AEAEAE; + border-color:#aea6a0; + background-alpha: 0.5; + padding-top:1; + horizontal-gap:2; + tab-height:20; +} + +.illustrationFirstTab +{ + border-color:#555555; + backgroundColor:#888888; + font-weight:normal; +} + +.illustrationLastTab +{ + border-color:#555555; + backgroundColor:#888888; + font-weight:normal; +} + +.illustrationTab +{ + border-color:#555555; + corner-radius:6; + backgroundColor:#888888; + font-weight:normal; +} + +.illustrationTabSelected +{ + color: #ffffff; + font-weight:bold; +} + +.documentTabs +{ + background-color:#AEAEAE; + border-color:#AFA7A1; + background-alpha: 0.7; + padding-top:1; + horizontal-gap:2; + tab-height:20; +} + +.documentFirstTab +{ + border-color:#555555; + backgroundColor:#888888; + font-weight:normal; +} + +.documentLastTab +{ + border-color:#555555; + backgroundColor:#888888; + font-weight:normal; +} + +.documentTab +{ + border-color:#555555; + corner-radius:6; + backgroundColor:#888888; + font-weight:normal; +} + +.documentTabSelected +{ + color: #ffffff; + font-weight:bold; +} + +.wipeWindow +{ + background-alpha:1.0; + /* background-color:#D4CDCA; */ + background-image: Embed(skinClass='BoxSkin'); + background-size: "100%"; + /* border-color:#D4CDCA; */ + /* border-style:solid; */ + corner-radius:8; + padding-bottom:12; + padding-left:8; + padding-right:24; + padding-top:8; +} + +.searchWindowTagBox +{ + background-color:#AFA7A1; + background-alpha: 0.2; + corner-radius:5; + border-style:solid; + border-color:#C4C2C2; + padding-bottom:8; + padding-left:8; + padding-right:8; + padding-top:8; +} + +.searchWindowTags +{ + background-color:#AEAEAE; + border-color:#AFA7A1; + background-alpha: 0.5; + corner-radius:5; + border-style:solid; + padding-bottom:8; + padding-left:8; + padding-right:8; + padding-top:8; +} + +.tagGridFirstRowItem +{ + padding-left:8; + padding-top:8; +} + +.tagGridFirstRow +{ + border-sides:left; + border-style:solid; + border-color:#ACACAC; + padding-left:8; + padding-top:8; +} + +.tagGridFirstItem +{ + border-sides:top; + border-style:solid; + border-color:#ACACAC; + padding-left:8; + padding-top:8; +} + +.tagGridItem +{ + border-sides:left,top; + border-style:solid; + border-color:#ACACAC; + padding-left:8; + padding-top:8; +} + +.tagCheckBox +{ + font-size:12; +} + +.headingLabel +{ + font-weight:bold; + font-size:12; +} + +mx|Button +{ + skin: Embed(skinClass='ButtonSkin'); +} + +mx|ComboBox +{ + skin: Embed(skinClass='DropDownSkin'); + fontWeight: "normal"; +} + +.buttonSkin +{ + skin: Embed(skinClass='ButtonSkin'); +} + +mx|ToggleButtonBar +{ + buttonStyleName: "toggleButtonBarButton"; + firstButtonStyleName: "toggleButtonBarFirstButton"; + lastButtonStyleName: "toggleButtonBarLastButton"; +} +.toggleButtonBarButton +{ + skin: Embed(skinClass="ToggleButtonBar$button_skin"); +} +.toggleButtonBarFirstButton +{ + skin: Embed(skinClass="ToggleButtonBar$firstButton_skin"); +} +.toggleButtonBarLastButton +{ + skin: Embed(skinClass="ToggleButtonBar$lastButton_skin"); +} + +mx|TabNavigator +{ + tabStyleName: "tabBarTab"; + firstTabStyleName: "tabBarTab"; + lastTabStyleName: "tabBarTab"; +} + +mx|TabBar +{ + tabStyleName: "tabBarTab"; + firstTabStyleName: "tabBarTab"; + lastTabStyleName: "tabBarTab"; +} +.tabBarTab +{ + skin: Embed(skinClass="TabBar$tab_skin"); +} + +.closeButton +{ + /* overSkin: Embed("images/button_close_overSkin.png"); + upSkin: Embed("images/button_close_upSkin.png"); + downSkin: Embed("images/button_close_downSkin.png"); */ + skin: Embed(skinClass='SearchCloseButton'); +} + +.commentButton +{ + icon: Embed("images/button_comment_icon.png"); + disabled-icon: Embed("images/button_commentDisabled_icon.png"); +} + +.downloadButton +{ + icon: Embed("images/button_download_icon.png"); + disabled-icon: Embed("images/button_downloadDisabled_icon.png"); +} + +.buttonBrowser +{ + icon: Embed("images/web.png"); + disabled-icon: Embed("images/web_disabled.png"); +} + +.maximizeButton +{ + icon: Embed("images/expand.png"); + disabled-icon: Embed("images/expand_disabled.png"); +} + +.searchButton +{ + /* icon: Embed("images/button_search_icon.png"); */ + icon: Embed(skinClass='SearchIcon'); + fontWeight: "normal"; +} + +.downloadWindow +{ + bar-color:#9D0B12; + background-color:#AFA7A1; + corner-radius:12; + border-style:solid; + rounded-bottom-corners:true; + padding-bottom:8; + padding-left:8; + padding-right:8; + padding-top:8; +} + +.cornerResizer +{ + overSkin: Embed("images/corner_resizer.png"); + upSkin: Embed("images/corner_resizer.png"); + downSkin: Embed("images/corner_resizer.png"); +} + +mx|Tree +{ + rollOverColor: #EEEEEE; + selectionColor: #E0E0E0; + indentation: 21; +} + +mx|List, mx|ComboBox +{ + rollOverColor: #EEEEEE; + selectionColor: #E0E0E0; +} + http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/README ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/README b/TourDeFlex/TourDeFlex3/README new file mode 100644 index 0000000..dda46cc --- /dev/null +++ b/TourDeFlex/TourDeFlex3/README @@ -0,0 +1,57 @@ +<!-- + +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. + +--> + + The Apache Flex Tour De Flex component explorer provides a sample set of working + Apache Flex examples. + + This application is based on work donated by Adobe and their component explorer and is + expected to be updated over time. + + +========================================================================================== +Initial Setup Required +========================================================================================== + + FLEX_HOME is the absolute path to the Apache Flex SDK + If you omit this argument, and the system environment variable, FLEX_HOME exists, + it is used. + +========================================================================================== +How to build the installer using ANT (no IDE is required) +========================================================================================== + +1. On Linux or Mac un tar/gzip the source distribution: + tar -zxvf apache-flex-tour-de-flex-component-explorer-1.0.tar.gz + Or if on windows unzip + apache-flex-tour-de-flex-component-explorer-1.0.zip + +2. In the base directory, run: + ant compile + +3. To optionally create a release source package, run: + ant package + +4. Open explorer.html in your browser of choice. + +Note Some browsers (such as Chrome) may not be able to view local content without further +configuration. + +5. To remove all of the compiled swfs: + ant clean + http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/RELEASE_NOTES ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/RELEASE_NOTES b/TourDeFlex/TourDeFlex3/RELEASE_NOTES new file mode 100644 index 0000000..d226039 --- /dev/null +++ b/TourDeFlex/TourDeFlex3/RELEASE_NOTES @@ -0,0 +1,24 @@ +<!-- + +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. + +--> + +------------------------------------------------ +Apache Flex Tour De Flex Component Explorer 1.0 +------------------------------------------------ + +Initial parity release for Adobe's Tour De Flex Component Explorer. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/build.xml ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/build.xml b/TourDeFlex/TourDeFlex3/build.xml new file mode 100644 index 0000000..45c54b8 --- /dev/null +++ b/TourDeFlex/TourDeFlex3/build.xml @@ -0,0 +1,453 @@ +<?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="TourDeFlex" default="compile" basedir="."> + + <property file="${basedir}/env.properties"/> + <property environment="env"/> + <property file="${basedir}/local.properties"/> + <property file="${basedir}/build.properties"/> + <condition property="FLEX_HOME" value="${env.FLEX_HOME}"> + <isset property="env.FLEX_HOME" /> + </condition> + <property name="version" value="1.0" /> + + <!-- additional tasks - mxmlc tag --> + <path id="flexTasks.path"> + <fileset dir="${FLEX_HOME}"> + <include name="lib/flexTasks.jar" /> + <include name="ant/lib/flexTasks.jar" /> + </fileset> + </path> + <taskdef resource="flexTasks.tasks" classpathref="flexTasks.path"/> + + <macrodef name="compile-mxml"> + <attribute name="example"/> + + <sequential> + <mxmlc file="${basedir}/src/@{example}.mxml" + output="${basedir}/src/@{example}.swf" fork="true" failonerror="true"> + <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> + </mxmlc> + </sequential> + </macrodef> + + <target name="compile" depends="compile-shell,compile-mx,compile-spark,compile-spark2,compile-spark3"> + </target> + + <target name="compile-shell"> + <compile-mxml example="/explorer"/> + <compile-mxml example="/loaderPanel"/> + <compile-mxml example="/SourceTab"/> + </target> + + <target name="compile-mx"> + <compile-mxml example="/mx/charts/BubbleChartExample"/> + <compile-mxml example="/mx/charts/CandlestickChartExample"/> + <compile-mxml example="/mx/charts/Column_BarChartExample"/> + <compile-mxml example="/mx/charts/DateTimeAxisExample"/> + <compile-mxml example="/mx/charts/GridLinesExample"/> + <compile-mxml example="/mx/charts/HLOCChartExample"/> + <compile-mxml example="/mx/charts/Line_AreaChartExample"/> + <compile-mxml example="/mx/charts/LogAxisExample"/> + <compile-mxml example="/mx/charts/PieChartExample"/> + <compile-mxml example="/mx/charts/PlotChartExample"/> + <compile-mxml example="/mx/charts/SeriesInterpolateExample"/> + <compile-mxml example="/mx/charts/SeriesSlideExample"/> + <compile-mxml example="/mx/charts/SeriesZoomExample"/> + <compile-mxml example="/mx/containers/AccordionExample"/> + <compile-mxml example="/mx/containers/DividedBoxExample"/> + <compile-mxml example="/mx/containers/FormExample"/> + <compile-mxml example="/mx/containers/GridLayoutExample"/> + <compile-mxml example="/mx/containers/HBoxExample"/> + <compile-mxml example="/mx/containers/HDividedBoxExample"/> + <compile-mxml example="/mx/containers/SimpleApplicationControlBarExample"/> + <compile-mxml example="/mx/containers/SimpleBoxExample"/> + <compile-mxml example="/mx/containers/SimpleCanvasExample"/> + <compile-mxml example="/mx/containers/SimpleControlBarExample"/> + <compile-mxml example="/mx/containers/SimplePanelExample"/> + <compile-mxml example="/mx/containers/SimpleTitleWindowExample"/> + <compile-mxml example="/mx/containers/TabNavigatorExample"/> + <compile-mxml example="/mx/containers/TileLayoutExample"/> + <compile-mxml example="/mx/containers/TitleWindowApp"/> + <compile-mxml example="/mx/containers/VBoxExample"/> + <compile-mxml example="/mx/containers/VDividedBoxExample"/> + <compile-mxml example="/mx/containers/ViewStackExample"/> + <compile-mxml example="/mx/controls/AdvancedDataGridExample"/> + <compile-mxml example="/mx/controls/ButtonBarExample"/> + <compile-mxml example="/mx/controls/ButtonExample"/> + <compile-mxml example="/mx/controls/CheckBoxExample"/> + <compile-mxml example="/mx/controls/ColorPickerExample"/> + <compile-mxml example="/mx/controls/DateChooserExample"/> + <compile-mxml example="/mx/controls/DateFieldExample"/> + <compile-mxml example="/mx/controls/HorizontalListExample"/> + <compile-mxml example="/mx/controls/HScrollBarExample"/> + <compile-mxml example="/mx/controls/LabelExample"/> + <compile-mxml example="/mx/controls/LinkBarExample"/> + <compile-mxml example="/mx/controls/LinkButtonExample"/> + <compile-mxml example="/mx/controls/Local"/> + <compile-mxml example="/mx/controls/MenuBarExample"/> + <compile-mxml example="/mx/controls/NumericStepperExample"/> + <compile-mxml example="/mx/controls/OLAPDataGridExample"/> + <compile-mxml example="/mx/controls/PopUpButtonExample"/> + <compile-mxml example="/mx/controls/PopUpButtonMenuExample"/> + <compile-mxml example="/mx/controls/RadioButtonExample"/> + <compile-mxml example="/mx/controls/RadioButtonGroupExample"/> + <compile-mxml example="/mx/controls/RichTextEditorExample"/> + <compile-mxml example="/mx/controls/SimpleAlert"/> + <compile-mxml example="/mx/controls/SimpleComboBox"/> + <compile-mxml example="/mx/controls/SimpleDataGrid"/> + <compile-mxml example="/mx/controls/SimpleHRule"/> + <compile-mxml example="/mx/controls/SimpleImage"/> + <compile-mxml example="/mx/controls/SimpleImageHSlider"/> + <compile-mxml example="/mx/controls/SimpleImageVSlider"/> + <compile-mxml example="/mx/controls/SimpleList"/> + <compile-mxml example="/mx/controls/SimpleLoader"/> + <compile-mxml example="/mx/controls/SimpleMenuExample"/> + <compile-mxml example="/mx/controls/SimpleProgressBar"/> + <compile-mxml example="/mx/controls/SimpleVRule"/> + <compile-mxml example="/mx/controls/SpacerExample"/> + <compile-mxml example="/mx/controls/TabBarExample"/> + <compile-mxml example="/mx/controls/TextAreaExample"/> + <compile-mxml example="/mx/controls/TextExample"/> + <compile-mxml example="/mx/controls/TextInputExample"/> + <compile-mxml example="/mx/controls/TileListExample"/> + <compile-mxml example="/mx/controls/ToggleButtonBarExample"/> + <compile-mxml example="/mx/controls/TreeExample"/> + <compile-mxml example="/mx/controls/VideoDisplayExample"/> + <compile-mxml example="/mx/controls/VScrollBarExample"/> + <compile-mxml example="/mx/core/RepeaterExample"/> + <compile-mxml example="/mx/core/SimpleApplicationExample"/> + <compile-mxml example="/mx/effects/AddItemActionEffectExample"/> + <compile-mxml example="/mx/effects/AnimatePropertyEffectExample"/> + <compile-mxml example="/mx/effects/BlurEffectExample"/> + <compile-mxml example="/mx/effects/CompositeEffectExample"/> + <compile-mxml example="/mx/effects/DefaultListEffectExample"/> + <compile-mxml example="/mx/effects/DefaultTileListEffectExample"/> + <compile-mxml example="/mx/effects/DissolveEffectExample"/> + <compile-mxml example="/mx/effects/FadeEffectExample"/> + <compile-mxml example="/mx/effects/GlowEffectExample"/> + <compile-mxml example="/mx/effects/IrisEffectExample"/> + <compile-mxml example="/mx/effects/MoveEffectExample"/> + <compile-mxml example="/mx/effects/ParallelEffectExample"/> + <compile-mxml example="/mx/effects/PauseEffectExample"/> + <compile-mxml example="/mx/effects/ResizeEffectExample"/> + <compile-mxml example="/mx/effects/RotateEffectExample"/> + <compile-mxml example="/mx/effects/SequenceEffectExample"/> + <compile-mxml example="/mx/effects/SimpleEffectExample"/> + <compile-mxml example="/mx/effects/SimpleTweenEffectExample"/> + <compile-mxml example="/mx/effects/SoundEffectExample"/> + <compile-mxml example="/mx/effects/WipeDownExample"/> + <compile-mxml example="/mx/effects/WipeLeftExample"/> + <compile-mxml example="/mx/effects/WipeRightExample"/> + <compile-mxml example="/mx/effects/WipeUpExample"/> + <compile-mxml example="/mx/effects/ZoomEffectExample"/> + <compile-mxml example="/mx/formatters/CurrencyFormatterExample"/> + <compile-mxml example="/mx/formatters/DateFormatterExample"/> + <compile-mxml example="/mx/formatters/NumberFormatterExample"/> + <compile-mxml example="/mx/formatters/PhoneFormatterExample"/> + <compile-mxml example="/mx/formatters/SimpleFormatterExample"/> + <compile-mxml example="/mx/formatters/SwitchSymbolFormatterExample"/> + <compile-mxml example="/mx/formatters/ZipCodeFormatterExample"/> + <compile-mxml example="/mx/printing/AdvancedPrintDataGridExample"/> + <compile-mxml example="/mx/printing/FormPrintFooter"/> + <compile-mxml example="/mx/printing/FormPrintHeader"/> + <compile-mxml example="/mx/printing/FormPrintView"/> + <compile-mxml example="/mx/printing/PrintDataGridExample"/> + <compile-mxml example="/mx/states/StatesExample"/> + <compile-mxml example="/mx/states/TransitionExample"/> + <compile-mxml example="/mx/validators/CreditCardValidatorExample"/> + <compile-mxml example="/mx/validators/CurrencyValidatorExample"/> + <compile-mxml example="/mx/validators/DateValidatorExample"/> + <compile-mxml example="/mx/validators/EmailValidatorExample"/> + <compile-mxml example="/mx/validators/NumberValidatorExample"/> + <compile-mxml example="/mx/validators/PhoneNumberValidatorExample"/> + <compile-mxml example="/mx/validators/RegExValidatorExample"/> + <compile-mxml example="/mx/validators/SimpleValidatorExample"/> + <compile-mxml example="/mx/validators/SocialSecurityValidatorExample"/> + <compile-mxml example="/mx/validators/StringValidatorExample"/> + <compile-mxml example="/mx/validators/ZipCodeValidatorExample"/> + </target> + + <target name="compile-spark"> + <compile-mxml example="/spark/controls/AccordionExample"/> + <compile-mxml example="/spark/controls/AdvancedDatagridExample"/> + <compile-mxml example="/spark/controls/ColorPickerExample"/> + <compile-mxml example="/spark/controls/ComboBoxExample"/> + <compile-mxml example="/spark/controls/DataGridExample"/> + <compile-mxml example="/spark/controls/DataGroupExample"/> + <compile-mxml example="/spark/controls/MenuExample"/> + <compile-mxml example="/spark/controls/RichEditableTextExample"/> + <compile-mxml example="/spark/controls/DateChooserExample"/> + <compile-mxml example="/spark/controls/DateFieldExample"/> + <compile-mxml example="/spark/controls/FormExample"/> + <compile-mxml example="/spark/controls/ImageExample"/> + <compile-mxml example="/spark/controls/LinkBarExample"/> + <compile-mxml example="/spark/controls/LinkButtonExample"/> + <compile-mxml example="/spark/controls/OLAPDataGridExample"/> + <compile-mxml example="/spark/controls/PopupButtonExample"/> + <compile-mxml example="/spark/controls/ProgressBarExample"/> + <!-- Currently broken <compile-mxml example="/spark/controls/SWFLoaderExample"/> --> + <compile-mxml example="/spark/controls/TitleWindowExample"/> + <compile-mxml example="/spark/controls/ToggleButtonBarExample"/> + <compile-mxml example="/spark/controls/ToolTipExample"/> + <compile-mxml example="/spark/controls/TreeExample"/> + <compile-mxml example="/spark/controls/ViewStackExample"/> + <compile-mxml example="/spark/controls/TextAreaExample"/> + <compile-mxml example="/spark/controls/TextInputExample"/> + <compile-mxml example="/spark/controls/TextLayout1Example"/> + <compile-mxml example="/spark/controls/TextLayout2Example"/> + <compile-mxml example="/spark/controls/TextLayout3Example"/> + <compile-mxml example="/spark/controls/TextLayout4Example"/> + + <compile-mxml example="/spark/css/CSSDescendantSelectorExample"/> + <compile-mxml example="/spark/css/CSSTypeClassSelectorExample"/> + + <compile-mxml example="/spark/layouts/CustomLayoutAnimatedExample"/> + <compile-mxml example="/spark/layouts/CustomLayoutFlickrWheelExample"/> + <compile-mxml example="/spark/layouts/CustomLayoutFlowExample"/> + <compile-mxml example="/spark/layouts/CustomLayoutHBaselineExample"/> + + <compile-mxml example="/spark/itemRenderers/ItemRenderer1Example"/> + <compile-mxml example="/spark/itemRenderers/ItemRenderer2Example"/> + + <compile-mxml example="/spark/fxg/BitmapImageExample"/> + <compile-mxml example="/spark/fxg/EclipseExample"/> + <compile-mxml example="/spark/fxg/LineExample"/> + <compile-mxml example="/spark/fxg/RectExample"/> + <compile-mxml example="/spark/fxg/RichTextExample"/> + + <compile-mxml example="/spark/containers/SampleHGroup"/> + <compile-mxml example="/spark/containers/SampleVGroup"/> + <compile-mxml example="/spark/containers/SampleVerticalHorizontalAlign"/> + <compile-mxml example="/spark/containers/SkinableDataContainerExample"/> + <compile-mxml example="/spark/containers/TileGroupExample"/> + + <compile-mxml example="/spark/effects/Move3DExample"/> + <compile-mxml example="/spark/effects/WipeExample"/> + + <compile-mxml example="/spark/charts/AreaChartExample"/> + <compile-mxml example="/spark/charts/BarChartExample"/> + <compile-mxml example="/spark/charts/BubbleChartExample"/> + <compile-mxml example="/spark/charts/CandleStickChartExample"/> + <compile-mxml example="/spark/charts/ColumnChartExample"/> + <compile-mxml example="/spark/charts/HLOCChartExample"/> + <compile-mxml example="/spark/charts/LineChartExample"/> + <compile-mxml example="/spark/charts/PieChartExample"/> + <compile-mxml example="/spark/charts/PlotChartExample"/> + <compile-mxml example="/spark/charts/SeriesInterpolateExample"/> + <compile-mxml example="/spark/charts/SeriesSlideExample"/> + <compile-mxml example="/spark/charts/SeriesZoomExample"/> + + <compile-mxml example="/spark/components/SearchExample"/> + <compile-mxml example="/spark/components/VideoPlayerExample"/> + + <compile-mxml example="/spark/validators/CreditCardValidatorExample"/> + <compile-mxml example="/spark/validators/CurrencyValidatorExample"/> + <compile-mxml example="/spark/validators/DateValidatorExample"/> + <compile-mxml example="/spark/validators/EmailValidatorExample"/> + <compile-mxml example="/spark/validators/NumberValidatorExample"/> + <compile-mxml example="/spark/validators/RegExpValidatorExample"/> + <compile-mxml example="/spark/validators/SocialSecurityValidatorExample"/> + <compile-mxml example="/spark/validators/StringValidatorExample"/> + <compile-mxml example="/spark/validators/FormValidatorExample"/> + <compile-mxml example="/spark/validators/ZipCodeValidatorExample"/> + + <compile-mxml example="/spark/formatters/CurrencyFormatterExample"/> + <compile-mxml example="/spark/formatters/DateFormatterExample"/> + <compile-mxml example="/spark/formatters/NumberFormatterExample"/> + <compile-mxml example="/spark/formatters/PhoneFormatterExample"/> + <compile-mxml example="/spark/formatters/SwitchFormatterExample"/> + <compile-mxml example="/spark/formatters/ZipCodeFormatterExample"/> + + <compile-mxml example="/spark/other/Cursor1Example"/> + <compile-mxml example="/spark/other/Cursor2Example"/> + <compile-mxml example="/spark/other/DragAndDrop1Example"/> + <compile-mxml example="/spark/other/DragAndDrop2Example"/> + <compile-mxml example="/spark/other/FilterExample"/> + <compile-mxml example="/spark/other/RepeaterExample"/> + <compile-mxml example="/spark/other/ScrollBarsExample"/> + + <compile-mxml example="/spark/events/EventExample1"/> + <compile-mxml example="/spark/events/EventExample2"/> + <compile-mxml example="/spark/events/EventExample3"/> + <compile-mxml example="/spark/events/EventExample4"/> + <compile-mxml example="/spark/events/EventExample5"/> + <compile-mxml example="/spark/events/EventExample6"/> + + <compile-mxml example="/spark/modules/ModuleExample"/> + <compile-mxml example="/spark/modules/Module1"/> + <compile-mxml example="/spark/modules/Module2"/> + + <!-- currently broken <compile-mxml example="/spark/tlf/TextLayoutEditorSample"/> --> + </target> + + <target name="compile-spark2"> + <compile-mxml example="/spark/i18n/SparkCollatorExample"/> + <compile-mxml example="/spark/i18n/SparkCollator2Example"/> + <compile-mxml example="/spark/i18n/SparkCurrencyValidatorExample"/> + <compile-mxml example="/spark/i18n/SparkCurrencyValidator2Example"/> + <compile-mxml example="/spark/i18n/SparkNumberValidatorExample"/> + <compile-mxml example="/spark/i18n/SparkNumberValidator2Example"/> + <compile-mxml example="/spark/i18n/SparkDateTimeFormatterExample"/> + <compile-mxml example="/spark/i18n/SparkDateTimeFormatter2Example"/> + <compile-mxml example="/spark/i18n/SparkCurrencyFormatterExample"/> + <compile-mxml example="/spark/i18n/SparkCurrencyFormatter2Example"/> + <compile-mxml example="/spark/i18n/SparkNumberFormatterExample"/> + <compile-mxml example="/spark/i18n/SparkNumberFormatter2Example"/> + <compile-mxml example="/spark/i18n/SparkSortandSortFieldExample"/> + <compile-mxml example="/spark/i18n/SparkSortandSortField2Example"/> + <compile-mxml example="/spark/i18n/SparkStringToolsExample"/> + <compile-mxml example="/spark/i18n/SparkFormatterExample"/> + + <compile-mxml example="/spark/controls/DataGridCustomRendererExample"/> + <compile-mxml example="/spark/controls/DataGridCustomRendererPrepareExample"/> + <compile-mxml example="/spark/controls/DataGridCustomSkinExample"/> + <compile-mxml example="/spark/controls/DataGridExample2"/> + <compile-mxml example="/spark/controls/DataGridSimpleColumnsExample"/> + <compile-mxml example="/spark/controls/DataGridSimpleNoWrapExample"/> + <compile-mxml example="/spark/controls/DataGridSizingExample"/> + + <compile-mxml example="/spark/controls/ListDataPagingExample"/> + + <compile-mxml example="/spark/controls/SampleHelpFormExample"/> + <compile-mxml example="/spark/controls/SampleSequenceFormExample"/> + <compile-mxml example="/spark/controls/SampleSimpleFormExample"/> + <compile-mxml example="/spark/controls/SampleStackedFormExample"/> + + <compile-mxml example="/spark/controls/OSMFExample"/> + </target> + + <target name="compile-spark3"> + <compile-mxml example="/spark/other/BidirectionalBinding1Example"/> + <compile-mxml example="/spark/other/BidirectionalBinding2Example"/> + <compile-mxml example="/spark/other/ControllingViewportExample"/> + <compile-mxml example="/spark/itemRenderers/ListItemRendererExample"/> + <compile-mxml example="/spark/effects/AnimatePropertiesExample"/> + <compile-mxml example="/spark/effects/AnimateTransformExample"/> + <compile-mxml example="/spark/effects/CrossFadeExample"/> + <compile-mxml example="/spark/effects/FadeExample"/> + <compile-mxml example="/spark/effects/Rotate3DExample"/> + <compile-mxml example="/spark/effects/Scale3DExample"/> + <compile-mxml example="/spark/fxg/EllipseTransformExample"/> + <compile-mxml example="/spark/fxg/DropShadowGraphicExample"/> + <compile-mxml example="/spark/fxg/LinearGradientsSpreadMethodExample"/> + <compile-mxml example="/spark/fxg/StaticFXGExample"/> + <compile-mxml example="/spark/containers/BorderExample"/> + <compile-mxml example="/spark/containers/GroupExample"/> + <compile-mxml example="/spark/containers/PanelExample"/> + <compile-mxml example="/spark/containers/TabNavigator1Example"/> + <compile-mxml example="/spark/containers/TabNavigator2Example"/> + <compile-mxml example="/spark/skinning/ButtonWithIconExample"/> + <compile-mxml example="/spark/skinning/SkinningApplication1Example"/> + <compile-mxml example="/spark/skinning/SkinningApplication2Example"/> + <compile-mxml example="/spark/skinning/SkinningApplication3Example"/> + <compile-mxml example="/spark/skinning/SkinningContainerExample"/> + <compile-mxml example="/spark/css/CSSIDSelectorExample"/> + <compile-mxml example="/spark/controls/ButtonExample"/> + <compile-mxml example="/spark/controls/ButtonBarExample"/> + <compile-mxml example="/spark/controls/PopUpAnchor1Example"/> + <compile-mxml example="/spark/controls/PopUpAnchor2Example"/> + <compile-mxml example="/spark/controls/ToggleButtonExample"/> + <compile-mxml example="/spark/controls/CheckboxExample"/> + <compile-mxml example="/spark/controls/DropdownExample"/> + <compile-mxml example="/spark/controls/NumericStepperExample"/> + <compile-mxml example="/spark/controls/RadioButtonExample"/> + <compile-mxml example="/spark/controls/ToggleButton2Example"/> + <compile-mxml example="/spark/controls/ScrollBarExample"/> + <compile-mxml example="/spark/controls/Scroller1Example"/> + <compile-mxml example="/spark/controls/Scroller2Example"/> + <compile-mxml example="/spark/controls/SliderExample"/> + <compile-mxml example="/spark/controls/SpinnerExample"/> + <compile-mxml example="/spark/controls/VideoPlayerExample"/> + <compile-mxml example="/spark/controls/ListExample"/> + </target> + + <target name="package" description="package up all source files" depends="package-dir,package-tar,package-zip"> + </target> + + <target name="package-dir"> + <delete dir="${basedir}/out"/> + <mkdir dir="${basedir}/out"/> + </target> + + <target name="package-tar" description="tar up all source files"> + <tar destfile="${basedir}/out/apache-flex-tour-de-flex-component-explorer-src-${version}.tar.gz" + compression="gzip" + longfile="gnu"> + <tarfileset dir="${basedir}/.."> + <include name="LICENSE" /> + <include name="NOTICE" /> + </tarfileset> + <tarfileset dir="${basedir}"> + <include name="README" /> + <include name="RELEASE_NOTES" /> + <include name="build.xml" /> + <include name="src/explorer.html" /> + <include name="src/explorer.xml" /> + <include name="src/AC_OETags.js" /> + <include name="**/*.mxml" /> + <include name="**/*.as" /> + <include name="**/*.jpg" /> + <include name="**/*.png" /> + <include name="**/*.gif" /> + <include name="**/*.ttf" /> + <include name="**/*.mp4" /> + <include name="**/*.mp3" /> + <include name="**/*.fxg" /> + <include name="**/*.xml" /> + <exclude name="**/*.swf" /> + </tarfileset> + </tar> + </target> + + <target name="package-zip" description="zip up all source files"> + <zip destfile="${basedir}/out/apache-flex-tour-de-flex-component-explorer-src-${version}.zip"> + <fileset dir="${basedir}/.."> + <include name="LICENSE" /> + <include name="NOTICE" /> + </fileset> + <fileset dir="${basedir}"> + <include name="README" /> + <include name="RELEASE_NOTES" /> + <include name="build.xml" /> + <include name="src/explorer.html" /> + <include name="src/explorer.xml" /> + <include name="src/AC_OETags.js" /> + <include name="**/*.mxml" /> + <include name="**/*.as" /> + <include name="**/*.jpg" /> + <include name="**/*.png" /> + <include name="**/*.gif" /> + <include name="**/*.ttf" /> + <include name="**/*.mp4" /> + <include name="**/*.mp3" /> + <include name="**/*.fxg" /> + <include name="**/*.xml" /> + <exclude name="**/*.swf" /> + </fileset> + </zip> + </target> + + <target name="clean" description="clean up"> + <delete> + <fileset dir="${basedir}" includes="**/*.swf" /> + </delete> + </target> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/html-template/history/history.css ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/html-template/history/history.css b/TourDeFlex/TourDeFlex3/html-template/history/history.css new file mode 100755 index 0000000..913d444 --- /dev/null +++ b/TourDeFlex/TourDeFlex3/html-template/history/history.css @@ -0,0 +1,22 @@ +/* + * 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. + */ +/* This CSS stylesheet defines styles used by required elements in a flex application page that supports browser history */ + +#ie_historyFrame { width: 0px; height: 0px; display:none } +#firefox_anchorDiv { width: 0px; height: 0px; display:none } +#safari_formDiv { width: 0px; height: 0px; display:none } +#safari_rememberDiv { width: 0px; height: 0px; display:none } http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/html-template/history/history.js ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/html-template/history/history.js b/TourDeFlex/TourDeFlex3/html-template/history/history.js new file mode 100755 index 0000000..3167c82 --- /dev/null +++ b/TourDeFlex/TourDeFlex3/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-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/html-template/history/historyFrame.html ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/html-template/history/historyFrame.html b/TourDeFlex/TourDeFlex3/html-template/history/historyFrame.html new file mode 100755 index 0000000..a06035f --- /dev/null +++ b/TourDeFlex/TourDeFlex3/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-utilities/blob/e1f9d1df/TourDeFlex/TourDeFlex3/html-template/index.template.html ---------------------------------------------------------------------- diff --git a/TourDeFlex/TourDeFlex3/html-template/index.template.html b/TourDeFlex/TourDeFlex3/html-template/index.template.html new file mode 100755 index 0000000..304cbca --- /dev/null +++ b/TourDeFlex/TourDeFlex3/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>