emergent-core 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (349) hide show
  1. data/.bnsignore +16 -0
  2. data/History.txt +4 -0
  3. data/Manifest.txt +348 -0
  4. data/README.rdoc +47 -0
  5. data/Rakefile +39 -0
  6. data/app_generators/emergent_core/USAGE +5 -0
  7. data/app_generators/emergent_core/emergent_core_generator.rb +73 -0
  8. data/app_generators/emergent_core/templates/core/actionscript.properties +16 -0
  9. data/app_generators/emergent_core/templates/core/actionscriptair.properties +16 -0
  10. data/app_generators/emergent_core/templates/core/app.yaml.erb +12 -0
  11. data/app_generators/emergent_core/templates/core/default_tasks.rake +51 -0
  12. data/app_generators/emergent_core/templates/core/empty.txt +0 -0
  13. data/app_generators/emergent_core/templates/core/expressInstall.swf +0 -0
  14. data/app_generators/emergent_core/templates/core/flex.properties +2 -0
  15. data/app_generators/emergent_core/templates/core/generate.rb +17 -0
  16. data/app_generators/emergent_core/templates/core/html-template/AC_OETags.js +276 -0
  17. data/app_generators/emergent_core/templates/core/html-template/history/history.css +6 -0
  18. data/app_generators/emergent_core/templates/core/html-template/history/history.js +645 -0
  19. data/app_generators/emergent_core/templates/core/html-template/history/historyFrame.html +29 -0
  20. data/app_generators/emergent_core/templates/core/html-template/index.template.html +121 -0
  21. data/app_generators/emergent_core/templates/core/html-template/playerProductInstall.swf +0 -0
  22. data/app_generators/emergent_core/templates/core/index.html.erb +18 -0
  23. data/app_generators/emergent_core/templates/core/index.yaml +11 -0
  24. data/app_generators/emergent_core/templates/core/mainair-app.xml +134 -0
  25. data/app_generators/emergent_core/templates/core/mainapp-config.xml +21 -0
  26. data/app_generators/emergent_core/templates/core/mainapp.mxml +106 -0
  27. data/app_generators/emergent_core/templates/core/project-textmate.erb +52 -0
  28. data/app_generators/emergent_core/templates/core/project.properties +18 -0
  29. data/app_generators/emergent_core/templates/core/projectair.properties +24 -0
  30. data/app_generators/emergent_core/templates/core/swfobject.js +5 -0
  31. data/bin/emergent +17 -0
  32. data/lib/emergent_core.rb +49 -0
  33. data/lib/restfulx/active_foo.rb +194 -0
  34. data/lib/restfulx/active_record_tasks.rb +81 -0
  35. data/lib/restfulx/configuration.rb +76 -0
  36. data/lib/restfulx/datamapper_foo.rb +31 -0
  37. data/lib/restfulx/rails/recipes.rb +60 -0
  38. data/lib/restfulx/rails/swf_helper.rb +60 -0
  39. data/lib/restfulx/tasks.rb +85 -0
  40. data/lib/restfulx.rb +117 -0
  41. data/rails_generators/emergent_cms/USAGE +5 -0
  42. data/rails_generators/emergent_cms/emergent_cms_generator.rb +21 -0
  43. data/rails_generators/emergent_cms/templates/PagesEditModel.as +114 -0
  44. data/rails_generators/emergent_cms/templates/PagesEditView.mxml +102 -0
  45. data/rails_generators/emergent_config/USAGE +5 -0
  46. data/rails_generators/emergent_config/emergent_config_generator.rb +330 -0
  47. data/rails_generators/emergent_config/templates/app/controllers/accounts_controller.rb +104 -0
  48. data/rails_generators/emergent_config/templates/app/controllers/addresses_controller.rb +97 -0
  49. data/rails_generators/emergent_config/templates/app/controllers/application.rb +26 -0
  50. data/rails_generators/emergent_config/templates/app/controllers/assets_controller.rb +1 -0
  51. data/rails_generators/emergent_config/templates/app/controllers/content_assignments_controller.rb +97 -0
  52. data/rails_generators/emergent_config/templates/app/controllers/contents_controller.rb +114 -0
  53. data/rails_generators/emergent_config/templates/app/controllers/sessions_controller.rb +72 -0
  54. data/rails_generators/emergent_config/templates/app/controllers/sites_controller.rb +1 -0
  55. data/rails_generators/emergent_config/templates/app/controllers/users_controller.rb +97 -0
  56. data/rails_generators/emergent_config/templates/app/flex/application/controllers/command/ICommand.as +16 -0
  57. data/rails_generators/emergent_config/templates/app/flex/application/controllers/command/Undoable.as +46 -0
  58. data/rails_generators/emergent_config/templates/app/flex/application/controllers/command/UpdateDocumentCommand.as +73 -0
  59. data/rails_generators/emergent_config/templates/app/flex/application/controllers/event/DocumentEvent.as +46 -0
  60. data/rails_generators/emergent_config/templates/app/flex/application/controllers/event/NavigationEvent.as +31 -0
  61. data/rails_generators/emergent_config/templates/app/flex/application/controllers/event/ResourceEvent.as +27 -0
  62. data/rails_generators/emergent_config/templates/app/flex/application/controllers/event/UndoEvent.as +36 -0
  63. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/AboutUsManager.as +15 -0
  64. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/AccountManager.as +31 -0
  65. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/AuthenticationManager.as +76 -0
  66. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/ContentManager.as +92 -0
  67. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/DocumentManager.as +131 -0
  68. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/DocumentsManager.as +156 -0
  69. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/HomeManager.as +18 -0
  70. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/MainManager.as +23 -0
  71. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/PagesManager.as +71 -0
  72. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/ResourceManager.as +195 -0
  73. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/SiteManager.as +25 -0
  74. data/rails_generators/emergent_config/templates/app/flex/application/controllers/manager/UndoManager.as +143 -0
  75. data/rails_generators/emergent_config/templates/app/flex/application/controllers/map/DocumentMap.mxml +123 -0
  76. data/rails_generators/emergent_config/templates/app/flex/application/controllers/map/DocumentsMap.mxml +134 -0
  77. data/rails_generators/emergent_config/templates/app/flex/application/controllers/map/ManagerPresentationModelMap.mxml +59 -0
  78. data/rails_generators/emergent_config/templates/app/flex/application/controllers/map/ObjectMap.mxml +75 -0
  79. data/rails_generators/emergent_config/templates/app/flex/application/controllers/map/PresentationModelViewMap.mxml +81 -0
  80. data/rails_generators/emergent_config/templates/app/flex/application/controllers/map/PresenterViewMap.mxml +67 -0
  81. data/rails_generators/emergent_config/templates/app/flex/application/models/constant/DocumentType.as +52 -0
  82. data/rails_generators/emergent_config/templates/app/flex/application/models/constant/Resource.as +25 -0
  83. data/rails_generators/emergent_config/templates/app/flex/application/models/constant/ResourceAction.as +28 -0
  84. data/rails_generators/emergent_config/templates/app/flex/application/models/constant/ResourceResult.as +8 -0
  85. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Account.as +32 -0
  86. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Address.as +26 -0
  87. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Asset.as +25 -0
  88. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/AssetAssignment.as +25 -0
  89. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Content.as +46 -0
  90. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/ContentAssignment.as +33 -0
  91. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Document.as +131 -0
  92. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/PlainDocument.as +19 -0
  93. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/RichDocument.as +19 -0
  94. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Session.as +13 -0
  95. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/Snapshot.as +21 -0
  96. data/rails_generators/emergent_config/templates/app/flex/application/models/domain/User.as +28 -0
  97. data/rails_generators/emergent_config/templates/app/flex/application/models/factory/DocumentFactory.as +61 -0
  98. data/rails_generators/emergent_config/templates/app/flex/application/models/factory/DocumentViewFactory.as +59 -0
  99. data/rails_generators/emergent_config/templates/app/flex/application/models/factory/ResourceFactory.as +28 -0
  100. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/AboutUsModel.as +22 -0
  101. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/AccountModel.as +68 -0
  102. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/AuthenticationModel.as +44 -0
  103. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/ContactUsModel.as +45 -0
  104. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/ContentModel.as +70 -0
  105. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/DocumentModel.as +235 -0
  106. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/DocumentsModel.as +169 -0
  107. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/HomeModel.as +23 -0
  108. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/MainModel.as +35 -0
  109. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/PagesModel.as +44 -0
  110. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/ProfileModel.as +99 -0
  111. data/rails_generators/emergent_config/templates/app/flex/application/models/presentation/ResourceModel.as +100 -0
  112. data/rails_generators/emergent_config/templates/app/flex/application/views/about_us/about_us.mxml +105 -0
  113. data/rails_generators/emergent_config/templates/app/flex/application/views/account/account.mxml +97 -0
  114. data/rails_generators/emergent_config/templates/app/flex/application/views/contact_us/contact_us.mxml +65 -0
  115. data/rails_generators/emergent_config/templates/app/flex/application/views/document/document.mxml +71 -0
  116. data/rails_generators/emergent_config/templates/app/flex/application/views/document/documents.mxml +201 -0
  117. data/rails_generators/emergent_config/templates/app/flex/application/views/document/plain_document.mxml +9 -0
  118. data/rails_generators/emergent_config/templates/app/flex/application/views/document/rich_document.mxml +12 -0
  119. data/rails_generators/emergent_config/templates/app/flex/application/views/gallery/gallery.mxml +37 -0
  120. data/rails_generators/emergent_config/templates/app/flex/application/views/home/home.mxml +58 -0
  121. data/rails_generators/emergent_config/templates/app/flex/application/views/home/home_presenter.as +81 -0
  122. data/rails_generators/emergent_config/templates/app/flex/application/views/home/home_troparchy.mxml +71 -0
  123. data/rails_generators/emergent_config/templates/app/flex/application/views/login/login.mxml +50 -0
  124. data/rails_generators/emergent_config/templates/app/flex/application/views/main/main.mxml +131 -0
  125. data/rails_generators/emergent_config/templates/app/flex/application/views/main/main_presenter.as +166 -0
  126. data/rails_generators/emergent_config/templates/app/flex/application/views/main/main_troparchy.mxml +74 -0
  127. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_bottom_model.as +13 -0
  128. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_bottom_presenter.as +10 -0
  129. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_bottom_view.mxml +48 -0
  130. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_left_model.as +13 -0
  131. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_left_presenter.as +10 -0
  132. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_left_view.mxml +43 -0
  133. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_right_model.as +13 -0
  134. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_right_presenter.as +10 -0
  135. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_right_view.mxml +47 -0
  136. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_top_model.as +13 -0
  137. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_top_presenter.as +10 -0
  138. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bar_top_view.mxml +49 -0
  139. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bars_presenter.as +63 -0
  140. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bars_troparchy.mxml +63 -0
  141. data/rails_generators/emergent_config/templates/app/flex/application/views/navigation/navigation_bars_view.mxml +59 -0
  142. data/rails_generators/emergent_config/templates/app/flex/application/views/pages/pages.mxml +44 -0
  143. data/rails_generators/emergent_config/templates/app/flex/application/views/pages/pages_presenter.as +83 -0
  144. data/rails_generators/emergent_config/templates/app/flex/application/views/pages/pages_troparchy.mxml +62 -0
  145. data/rails_generators/emergent_config/templates/app/flex/application/views/profile/profile.mxml +73 -0
  146. data/rails_generators/emergent_config/templates/app/flex/assets/fonts/MyriadPro-Bold.otf +0 -0
  147. data/rails_generators/emergent_config/templates/app/flex/assets/fonts/MyriadPro-Regular.otf +0 -0
  148. data/rails_generators/emergent_config/templates/app/flex/assets/html/lorem.html +3 -0
  149. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture10.png +0 -0
  150. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture11.png +0 -0
  151. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture12.png +0 -0
  152. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture13.png +0 -0
  153. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture14.png +0 -0
  154. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture3.png +0 -0
  155. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture4.png +0 -0
  156. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture5.png +0 -0
  157. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture6.png +0 -0
  158. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture7.png +0 -0
  159. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture8.png +0 -0
  160. data/rails_generators/emergent_config/templates/app/flex/assets/images/alexgrey/Picture9.png +0 -0
  161. data/rails_generators/emergent_config/templates/app/flex/assets/images/hot_nebula_0.jpg +0 -0
  162. data/rails_generators/emergent_config/templates/app/flex/assets/images/hot_nebula_180.jpg +0 -0
  163. data/rails_generators/emergent_config/templates/app/flex/assets/images/hot_nebula_270.jpg +0 -0
  164. data/rails_generators/emergent_config/templates/app/flex/assets/images/hot_nebula_90.jpg +0 -0
  165. data/rails_generators/emergent_config/templates/app/flex/assets/images/hot_nebula_bottom.jpg +0 -0
  166. data/rails_generators/emergent_config/templates/app/flex/assets/images/hot_nebula_top.jpg +0 -0
  167. data/rails_generators/emergent_config/templates/app/flex/assets/styles/itunes7Bg.jpg +0 -0
  168. data/rails_generators/emergent_config/templates/app/flex/assets/styles/jukebox.css +764 -0
  169. data/rails_generators/emergent_config/templates/app/flex/assets/styles/jukeboxGfx.swf +0 -0
  170. data/rails_generators/emergent_config/templates/app/flex/assets/styles/obsidian.css +734 -0
  171. data/rails_generators/emergent_config/templates/app/flex/assets/styles/obsidianBg.jpg +0 -0
  172. data/rails_generators/emergent_config/templates/app/flex/assets/styles/obsidianGfx.swf +0 -0
  173. data/rails_generators/emergent_config/templates/app/flex/com/fourD/actions/LayoutAction.as +377 -0
  174. data/rails_generators/emergent_config/templates/app/flex/com/fourD/actions/SimpleLayoutAction.as +210 -0
  175. data/rails_generators/emergent_config/templates/app/flex/com/fourD/animators/FourDTweenCollection.mxml +50 -0
  176. data/rails_generators/emergent_config/templates/app/flex/com/fourD/animators/IAnimator.as +39 -0
  177. data/rails_generators/emergent_config/templates/app/flex/com/fourD/animators/TweenMaxAnimator.as +269 -0
  178. data/rails_generators/emergent_config/templates/app/flex/com/fourD/cameras/AstroCamera.as +177 -0
  179. data/rails_generators/emergent_config/templates/app/flex/com/fourD/components/FourDDataGrid.mxml +105 -0
  180. data/rails_generators/emergent_config/templates/app/flex/com/fourD/components/FourDItemRenderer.mxml +54 -0
  181. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/CenterPerspectiveProjection.as +72 -0
  182. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/ComplexCondition.as +44 -0
  183. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/ConditionsUtil.as +82 -0
  184. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/FourDComponent.as +309 -0
  185. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/InstanceMethodInvoker.as +50 -0
  186. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/InstancePropertyInjector.as +43 -0
  187. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/MethodCaller.as +51 -0
  188. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Pathway.as +10 -0
  189. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/PathwayEvent.as +28 -0
  190. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Pheron.as +34 -0
  191. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Pheron2.as +41 -0
  192. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/PheronReceptor.as +125 -0
  193. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Properties.as +57 -0
  194. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Router.as +50 -0
  195. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/RouterUtil.as +70 -0
  196. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/SimpleCondition.as +42 -0
  197. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/SimpleZSortVO.as +1 -0
  198. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/SimpleZSorter.as +1 -0
  199. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Tecton.as +70 -0
  200. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/Tecton2.as +234 -0
  201. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonCache.as +111 -0
  202. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonEvent.as +39 -0
  203. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonMap.as +515 -0
  204. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonMap2.as +289 -0
  205. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonMapSample.mxml +73 -0
  206. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonReceptor.as +43 -0
  207. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonScope.as +38 -0
  208. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonScopeProperties.as +18 -0
  209. data/rails_generators/emergent_config/templates/app/flex/com/fourD/core/TectonUtils.as +51 -0
  210. data/rails_generators/emergent_config/templates/app/flex/com/fourD/events/LayoutActionEvent.as +75 -0
  211. data/rails_generators/emergent_config/templates/app/flex/com/fourD/layouts/CarouselLayout.as +85 -0
  212. data/rails_generators/emergent_config/templates/app/flex/com/fourD/layouts/CircleLayout.as +102 -0
  213. data/rails_generators/emergent_config/templates/app/flex/com/fourD/layouts/CoverFlowLayout.as +136 -0
  214. data/rails_generators/emergent_config/templates/app/flex/com/fourD/layouts/FourDLayout.as +272 -0
  215. data/rails_generators/emergent_config/templates/app/flex/com/fourD/utils/TweenUtil.as +110 -0
  216. data/rails_generators/emergent_config/templates/app/helpers/accounts_helper.rb +93 -0
  217. data/rails_generators/emergent_config/templates/app/helpers/application_helper.rb +3 -0
  218. data/rails_generators/emergent_config/templates/app/models/account.rb +84 -0
  219. data/rails_generators/emergent_config/templates/app/models/account_mailer.rb +24 -0
  220. data/rails_generators/emergent_config/templates/app/models/account_observer.rb +17 -0
  221. data/rails_generators/emergent_config/templates/app/models/address.rb +2 -0
  222. data/rails_generators/emergent_config/templates/app/models/asset.rb +6 -0
  223. data/rails_generators/emergent_config/templates/app/models/asset_assignment.rb +4 -0
  224. data/rails_generators/emergent_config/templates/app/models/category.rb +35 -0
  225. data/rails_generators/emergent_config/templates/app/models/comment.rb +98 -0
  226. data/rails_generators/emergent_config/templates/app/models/content.rb +89 -0
  227. data/rails_generators/emergent_config/templates/app/models/content_assignment.rb +21 -0
  228. data/rails_generators/emergent_config/templates/app/models/image.rb +3 -0
  229. data/rails_generators/emergent_config/templates/app/models/post.rb +76 -0
  230. data/rails_generators/emergent_config/templates/app/models/section.rb +97 -0
  231. data/rails_generators/emergent_config/templates/app/models/site.rb +1 -0
  232. data/rails_generators/emergent_config/templates/app/models/tag.rb +1 -0
  233. data/rails_generators/emergent_config/templates/app/models/user.rb +4 -0
  234. data/rails_generators/emergent_config/templates/app/views/account_mailer/activation.erb +3 -0
  235. data/rails_generators/emergent_config/templates/app/views/account_mailer/signup_notification.erb +8 -0
  236. data/rails_generators/emergent_config/templates/config/Capfile +4 -0
  237. data/rails_generators/emergent_config/templates/config/README.txt +18 -0
  238. data/rails_generators/emergent_config/templates/config/deploy.rb +36 -0
  239. data/rails_generators/emergent_config/templates/config/routes.rb +72 -0
  240. data/rails_generators/emergent_config/templates/core/actionscript.properties +16 -0
  241. data/rails_generators/emergent_config/templates/core/actionscriptair.properties +16 -0
  242. data/rails_generators/emergent_config/templates/core/app.yaml.erb +12 -0
  243. data/rails_generators/emergent_config/templates/core/default_tasks.rake +51 -0
  244. data/rails_generators/emergent_config/templates/core/emergent_tasks.rake +42 -0
  245. data/rails_generators/emergent_config/templates/core/empty.txt +0 -0
  246. data/rails_generators/emergent_config/templates/core/expressInstall.swf +0 -0
  247. data/rails_generators/emergent_config/templates/core/flex.properties +2 -0
  248. data/rails_generators/emergent_config/templates/core/generate.rb +17 -0
  249. data/rails_generators/emergent_config/templates/core/html-template/AC_OETags.js +276 -0
  250. data/rails_generators/emergent_config/templates/core/html-template/history/history.css +6 -0
  251. data/rails_generators/emergent_config/templates/core/html-template/history/history.js +645 -0
  252. data/rails_generators/emergent_config/templates/core/html-template/history/historyFrame.html +29 -0
  253. data/rails_generators/emergent_config/templates/core/html-template/index.template.html +121 -0
  254. data/rails_generators/emergent_config/templates/core/html-template/playerProductInstall.swf +0 -0
  255. data/rails_generators/emergent_config/templates/core/index.html.erb +18 -0
  256. data/rails_generators/emergent_config/templates/core/index.yaml +11 -0
  257. data/rails_generators/emergent_config/templates/core/mainair-app.xml +134 -0
  258. data/rails_generators/emergent_config/templates/core/mainapp-config.xml +21 -0
  259. data/rails_generators/emergent_config/templates/core/mainapp.mxml +101 -0
  260. data/rails_generators/emergent_config/templates/core/project-textmate.erb +52 -0
  261. data/rails_generators/emergent_config/templates/core/project.properties +18 -0
  262. data/rails_generators/emergent_config/templates/core/projectair.properties +24 -0
  263. data/rails_generators/emergent_config/templates/core/restfulx.yml +14 -0
  264. data/rails_generators/emergent_config/templates/core/restfulx_tasks.rake +6 -0
  265. data/rails_generators/emergent_config/templates/core/swfobject.js +5 -0
  266. data/rails_generators/emergent_config/templates/db/migrate/create_accounts.rb +40 -0
  267. data/rails_generators/emergent_config/templates/db/migrate/create_addresses.rb +18 -0
  268. data/rails_generators/emergent_config/templates/db/migrate/create_asset_assignments.rb +19 -0
  269. data/rails_generators/emergent_config/templates/db/migrate/create_assets.rb +20 -0
  270. data/rails_generators/emergent_config/templates/db/migrate/create_content_assignments.rb +26 -0
  271. data/rails_generators/emergent_config/templates/db/migrate/create_contents.rb +21 -0
  272. data/rails_generators/emergent_config/templates/db/migrate/create_sessions.rb +16 -0
  273. data/rails_generators/emergent_config/templates/db/migrate/create_sites.rb +27 -0
  274. data/rails_generators/emergent_config/templates/db/migrate/create_users.rb +15 -0
  275. data/rails_generators/emergent_config/templates/lib/analytics.swc +0 -0
  276. data/rails_generators/emergent_config/templates/lib/app_controller.rb.erb +26 -0
  277. data/rails_generators/emergent_config/templates/lib/as3corelib-0.92.1.swc +0 -0
  278. data/rails_generators/emergent_config/templates/lib/as3crypto-1.3patched.swc +0 -0
  279. data/rails_generators/emergent_config/templates/lib/as3crypto.swc +0 -0
  280. data/rails_generators/emergent_config/templates/lib/as3ds-1.04.swc +0 -0
  281. data/rails_generators/emergent_config/templates/lib/as3httpclientlib-1.0.swc +0 -0
  282. data/rails_generators/emergent_config/templates/lib/authenticated_system.rb +189 -0
  283. data/rails_generators/emergent_config/templates/lib/authenticated_test_helper.rb +11 -0
  284. data/rails_generators/emergent_config/templates/lib/containerEx.swc +0 -0
  285. data/rails_generators/emergent_config/templates/lib/flare.swc +0 -0
  286. data/rails_generators/emergent_config/templates/lib/flash_session_hack.rb +27 -0
  287. data/rails_generators/emergent_config/templates/lib/flex2BrowserManager.swc +0 -0
  288. data/rails_generators/emergent_config/templates/lib/flexlib.swc +0 -0
  289. data/rails_generators/emergent_config/templates/lib/fluint.swc +0 -0
  290. data/rails_generators/emergent_config/templates/lib/mate_0_8_6_enhanced.swc +0 -0
  291. data/rails_generators/emergent_config/templates/lib/openflux.swc +0 -0
  292. data/rails_generators/emergent_config/templates/lib/pv3d.swc +0 -0
  293. data/rails_generators/emergent_config/templates/lib/restfulx.swc +0 -0
  294. data/rails_generators/emergent_config/templates/lib/site_keys.rb +38 -0
  295. data/rails_generators/emergent_config/templates/lib/tweenMax.swc +0 -0
  296. data/rails_generators/emergent_config/templates/lib/urlkitFlex3.swc +0 -0
  297. data/rails_generators/emergent_config/templates/shell_script +31 -0
  298. data/rails_generators/emergent_controller/USAGE +5 -0
  299. data/rails_generators/emergent_controller/emergent_controller_generator.rb +25 -0
  300. data/rails_generators/emergent_controller/templates/controller.as.erb +37 -0
  301. data/rails_generators/emergent_core/USAGE +5 -0
  302. data/rails_generators/emergent_core/emergent_core_generator.rb +157 -0
  303. data/rails_generators/emergent_iphone/USAGE +5 -0
  304. data/rails_generators/emergent_iphone/emergent_iphone_generator.rb +27 -0
  305. data/rails_generators/emergent_scaffold/USAGE +5 -0
  306. data/rails_generators/emergent_scaffold/emergent_scaffold_generator.rb +157 -0
  307. data/rails_generators/emergent_scaffold/templates/component.mxml.erb +101 -0
  308. data/rails_generators/emergent_scaffold/templates/controller.rb.erb +101 -0
  309. data/rails_generators/emergent_scaffold/templates/edit_index_view.mxml.erb +114 -0
  310. data/rails_generators/emergent_scaffold/templates/edit_show_view.mxml.erb +84 -0
  311. data/rails_generators/emergent_scaffold/templates/filter_view.mxml.erb +1 -0
  312. data/rails_generators/emergent_scaffold/templates/fixtures.yml.erb +128 -0
  313. data/rails_generators/emergent_scaffold/templates/index_view.mxml.erb +58 -0
  314. data/rails_generators/emergent_scaffold/templates/item_renderer.mxml.erb +53 -0
  315. data/rails_generators/emergent_scaffold/templates/manager.as.erb +31 -0
  316. data/rails_generators/emergent_scaffold/templates/migration.rb.erb +22 -0
  317. data/rails_generators/emergent_scaffold/templates/model.as.erb +42 -0
  318. data/rails_generators/emergent_scaffold/templates/model.rb.erb +11 -0
  319. data/rails_generators/emergent_scaffold/templates/presentation_model.as.erb +33 -0
  320. data/rails_generators/emergent_scaffold/templates/presenter.as.erb +98 -0
  321. data/rails_generators/emergent_scaffold/templates/show_view.mxml.erb +50 -0
  322. data/rails_generators/emergent_scaffold/templates/view_map.mxml.erb +40 -0
  323. data/rails_generators/emergent_scaffold/templates/views_panel.mxml.erb +64 -0
  324. data/rails_generators/emergent_styler/USAGE +5 -0
  325. data/rails_generators/emergent_styler/emergent_styler_generator.rb +21 -0
  326. data/rails_generators/rx_yaml_scaffold/USAGE +51 -0
  327. data/rails_generators/rx_yaml_scaffold/rx_yaml_scaffold_generator.rb +49 -0
  328. data/script/console +10 -0
  329. data/script/destroy +14 -0
  330. data/script/generate +14 -0
  331. data/spec/emergent_core_spec.rb +7 -0
  332. data/spec/spec_helper.rb +16 -0
  333. data/tasks/ann.rake +80 -0
  334. data/tasks/bones.rake +20 -0
  335. data/tasks/gem.rake +201 -0
  336. data/tasks/git.rake +40 -0
  337. data/tasks/manifest.rake +48 -0
  338. data/tasks/notes.rake +27 -0
  339. data/tasks/post_load.rake +39 -0
  340. data/tasks/rdoc.rake +50 -0
  341. data/tasks/rubyforge.rake +55 -0
  342. data/tasks/setup.rb +279 -0
  343. data/tasks/spec.rake +54 -0
  344. data/tasks/svn.rake +47 -0
  345. data/tasks/test.rake +40 -0
  346. data/test/test_emergent_core.rb +0 -0
  347. data/test/test_emergent_iphone_generator.rb +46 -0
  348. data/test/test_generator_helper.rb +29 -0
  349. metadata +437 -0
@@ -0,0 +1,102 @@
1
+ /*
2
+ * Copyright 2008 (c) Lance Pollard
3
+ * www.systemsofseven.com/blog
4
+ * www.4ddesignlab.com
5
+ * LanceJPollard@gmail.com
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person
8
+ * obtaining a copy of this software and associated documentation
9
+ * files (the "Software"), to deal in the Software without
10
+ * restriction, including without limitation the rights to use,
11
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the
13
+ * Software is furnished to do so, subject to the following
14
+ * conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be
17
+ * included in all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
+ * OTHER DEALINGS IN THE SOFTWARE.
27
+ */
28
+
29
+ package com.fourD.layouts
30
+ {
31
+ import com.fourD.animators.TweenMaxAnimator;
32
+
33
+ import flash.display.DisplayObject;
34
+ import flash.geom.Point;
35
+
36
+ import mx.components.baseClasses.GroupBase;
37
+ import mx.core.ILayoutElement;
38
+ import mx.core.IUIComponent;
39
+ import mx.layout.LayoutBase;
40
+
41
+ public class CircleLayout extends LayoutBase
42
+ {
43
+ public function CircleLayout() {
44
+ super();
45
+ }
46
+
47
+ public var rotate:Boolean = true;
48
+
49
+ public function findIndexAt(children:Array, x:Number, y:Number):int {
50
+ var hCenter:Number = target.width / 2;
51
+ var vCenter:Number = target.height / 2;
52
+ var angle:Number = Math.atan2(y-vCenter, x-hCenter) + Math.PI;
53
+ var index:Number = angle * children.length / (2 * Math.PI) + 1;
54
+
55
+ return index;
56
+ }
57
+
58
+ override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
59
+ {
60
+ super.updateDisplayList(unscaledWidth, unscaledHeight);
61
+ var layoutTarget:GroupBase = target;
62
+ var layoutElement:ILayoutElement;
63
+ var numOfItems:int = layoutTarget.numLayoutElements;
64
+
65
+ var radius:Number = target.width - 10;
66
+ var anglePer:Number = (Math.PI * 2) / numOfItems;
67
+
68
+ var width:Number = target.width/2;
69
+ var height:Number = target.height/2;
70
+ var offset:Number = 180*(Math.PI/180);
71
+ var rad:Number;
72
+
73
+ var token:Object;
74
+
75
+ for(var i:uint=0; i<numOfItems; i++) {
76
+
77
+ layoutElement = layoutTarget.getLayoutElementAt(i);
78
+ token = new Object();
79
+ token.width = layoutElement.getPreferredBoundsWidth();
80
+ token.height = layoutElement.getPreferredBoundsHeight();
81
+
82
+ var w:Number = width-layoutElement.getPreferredBoundsWidth();
83
+ var h:Number = height-layoutElement.getPreferredBoundsHeight();
84
+
85
+
86
+ rad = ((Math.PI*i)/(numOfItems/2))+offset;
87
+ token.x = (w*Math.cos(rad))+w;
88
+ token.y = (h*Math.sin(rad))+h;
89
+
90
+ if(rotate) {
91
+ token.rotationY = ((360/length)*i);
92
+ while(token.rotationY > 180) {
93
+ token.rotationY -= 360;
94
+ }
95
+ }
96
+ animator.moveItem(layoutElement as DisplayObject, token);
97
+ }
98
+ //animator.end();
99
+ }
100
+
101
+ }
102
+ }
@@ -0,0 +1,136 @@
1
+ /*
2
+ * Copyright 2008 (c) Lance Pollard
3
+ * www.systemsofseven.com/blog
4
+ * www.4ddesignlab.com
5
+ * LanceJPollard@gmail.com
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person
8
+ * obtaining a copy of this software and associated documentation
9
+ * files (the "Software"), to deal in the Software without
10
+ * restriction, including without limitation the rights to use,
11
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the
13
+ * Software is furnished to do so, subject to the following
14
+ * conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be
17
+ * included in all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
+ * OTHER DEALINGS IN THE SOFTWARE.
27
+ */
28
+
29
+ package com.fourD.layouts
30
+ {
31
+ import mx.core.ILayoutElement;
32
+ import mx.core.UIComponent;
33
+
34
+ public class CoverFlowLayout extends FourDLayout
35
+ {
36
+ public function CoverFlowLayout()
37
+ {
38
+ super();
39
+ }
40
+
41
+ private var _angle:Number = 70; [Bindable]
42
+ public function get angle():Number { return _angle; }
43
+ public function set angle(value:Number):void {
44
+ _angle = value;
45
+ if (target) target.invalidateDisplayList();
46
+ }
47
+
48
+ private var _gap:Number = 0;
49
+ [Bindable]
50
+ public function get gap():Number { return _gap; }
51
+ public function set gap(value:Number):void {
52
+ _gap = value;
53
+ if (target) target.invalidateDisplayList();
54
+ }
55
+
56
+ private var _distance:Number = 10;
57
+ [Bindable]
58
+ public function get distance():Number { return _distance; }
59
+ public function set distance(value:Number):void {
60
+ _distance = value;
61
+ if (target) target.invalidateDisplayList();
62
+ }
63
+
64
+ private var _direction:String = "horizontal"; [Bindable]
65
+ [Inspectable(defaultValue="horizontal", enumeration="horizontal,vertical,null")]
66
+ public function get direction():String { return _direction; }
67
+ public function set direction(value:String):void {
68
+ _direction = value;
69
+ if (target) target.invalidateDisplayList();
70
+ }
71
+
72
+ private var init:Boolean = false;
73
+
74
+ protected var maxChildHeight:Number;
75
+ protected var maxChildWidth:Number;
76
+ protected var abs:Number;
77
+ protected var offset:Number=0;
78
+
79
+ [Bindable] public var radius:Number;
80
+ [Bindable] public var anglePer:Number;
81
+
82
+ override public function initializeLayoutEquation():void {
83
+ selectedChild = target.getLayoutElementAt(selectedIndex) as UIComponent;
84
+ maxChildHeight = Number((selectedChild as ILayoutElement).getPreferredBoundsWidth());
85
+ maxChildWidth = Number((selectedChild as ILayoutElement).getPreferredBoundsHeight());
86
+ if (!gap) {
87
+ if (direction == "horizontal") {
88
+ gap = maxChildHeight / 3;
89
+ }
90
+ }
91
+ if (!radius) {
92
+ radius = target.width/2;
93
+ }
94
+ if (!anglePer) {
95
+ anglePer = (Math.PI * 2) / numOfItems;
96
+ }
97
+ preferredLayoutElementWidth = 120;
98
+ preferredLayoutElementHeight = 120;
99
+ }
100
+
101
+ override public function getLayoutElementToken(layoutElement:ILayoutElement, index:int):Object {
102
+ var token:Object = new Object();
103
+
104
+ // must do this to set the element width and height before anything else
105
+ setLayoutElementWidth(layoutElement, preferredLayoutElementWidth, token, target.width);
106
+ setLayoutElementHeight(layoutElement, preferredLayoutElementHeight, token, target.height);
107
+
108
+ // then this is the equation for each item
109
+ abs = Math.abs(selectedIndex - index);
110
+ offset += token.width;
111
+ token.x = (selectedChild as ILayoutElement).getPreferredBoundsWidth() + ((abs - 1) * gap)// + offset;
112
+ if (_gap > 0) token.x += (abs - 1) * (_gap + token.width);
113
+ token.y = -(maxChildHeight - layoutElement.getPreferredBoundsHeight()) / 2;
114
+ token.z = (selectedChild as ILayoutElement).getPreferredBoundsWidth() + abs * 5;
115
+
116
+ (layoutElement as UIComponent).includeInLayout = false;
117
+
118
+ token.rotationY = angle;
119
+ if(index < selectedIndex) {
120
+ token.x = -token.x + token.width/2;
121
+ token.rotationY *= -1;
122
+ } else if(index == selectedIndex) {
123
+ token.x = 0;
124
+ token.z = -200 / 2;
125
+ token.rotationY = 0;
126
+ offset = 0;
127
+ }
128
+
129
+ token.x = token.x + target.width/2 - token.width/2;
130
+ token.y = (token.y*-1) + target.height/2 - token.height/2;
131
+
132
+ return token;
133
+ }
134
+
135
+ }
136
+ }
@@ -0,0 +1,272 @@
1
+ /*
2
+ * Copyright 2008 (c) Lance Pollard
3
+ * www.systemsofseven.com/blog
4
+ * www.4ddesignlab.com
5
+ * LanceJPollard@gmail.com
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person
8
+ * obtaining a copy of this software and associated documentation
9
+ * files (the "Software"), to deal in the Software without
10
+ * restriction, including without limitation the rights to use,
11
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the
13
+ * Software is furnished to do so, subject to the following
14
+ * conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be
17
+ * included in all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
+ * OTHER DEALINGS IN THE SOFTWARE.
27
+ */
28
+
29
+ package com.fourD.layouts
30
+ {
31
+ import com.fourD.actions.LayoutAction;
32
+ import com.fourD.actions.SimpleLayoutAction;
33
+ import com.fourD.animators.IAnimator;
34
+ import com.fourD.animators.TweenMaxAnimator;
35
+ import com.fourD.core.FourDComponent;
36
+ import com.fourD.core.SimpleZSorter;
37
+
38
+ import flash.display.DisplayObject;
39
+ import flash.events.MouseEvent;
40
+ import flash.events.TimerEvent;
41
+ import flash.geom.Point;
42
+ import flash.utils.Timer;
43
+
44
+ import mx.components.DataGroup;
45
+ import mx.components.Group;
46
+ import mx.components.ResizeMode;
47
+ import mx.components.baseClasses.GroupBase;
48
+ import mx.core.ILayoutElement;
49
+ import mx.core.IVisualElement;
50
+ import mx.core.UIComponent;
51
+ import mx.core.mx_internal;
52
+ import mx.events.FlexEvent;
53
+ import mx.events.IndexChangedEvent;
54
+ import mx.events.ItemExistenceChangedEvent;
55
+ import mx.layout.LayoutBase;
56
+ import mx.layout.LayoutElementHelper;
57
+ use namespace mx_internal;
58
+
59
+ public class FourDLayout extends LayoutBase
60
+ {
61
+ // Commonly used variables in layout algorithms:
62
+ public var selectedIndex:int;
63
+ public var selectedChild:DisplayObject;
64
+ protected var currentIndex:int; // like a "proposed" index
65
+ protected var numOfItems:int;
66
+
67
+ [Inspectable(defaultValue="true", enumeration="true,false")]
68
+ [Bindable] public var zSort:Boolean = true;
69
+ private var zSortStartTimer:Timer;
70
+
71
+ [Bindable] public var hitAreaX1:Number;
72
+ [Bindable] public var hitAreaX2:Number;
73
+ private var elementToGlobalPoint:Point;
74
+
75
+ [Bindable] public var preferredLayoutElementWidth:Number;
76
+ [Bindable] public var preferredLayoutElementHeight:Number;
77
+
78
+ [Inspectable(defaultValue="false", enumeration="true,false")]
79
+ [Bindable] public var selectedIndexHitTest:Boolean;
80
+
81
+ // hack to establish the actions slightly after onCreationComplete...
82
+ private var actionInstantiator:Timer;
83
+
84
+ private var _action:LayoutAction; [Bindable]
85
+ public function get action():LayoutAction { return _action; }
86
+ public function set action(value:LayoutAction):void {
87
+ _action = value;
88
+ }
89
+
90
+ // must do this because you can't easily access the containerBases parent container
91
+ // in the default case, it is group.parent.parent.parent.parent, but that may change with skinning
92
+ override public function set target(value:GroupBase):void {
93
+ super.target = value;
94
+ target.resizeMode = ResizeMode.SCALE;
95
+ attachHandlers();
96
+ }
97
+
98
+ private var _animator:IAnimator; [Bindable]
99
+ public function get animator():IAnimator { return _animator; }
100
+ public function set animator(value:IAnimator):void {
101
+ _animator = value;
102
+ }
103
+
104
+ // VERY IMPORTANT: Any rotation of the whole layout must be done using
105
+ // "container", not "target" (group). This is because the FourDComponent
106
+ // gives you much more freedom in setting pivot points and tweens
107
+ private var _container:FourDComponent; [Bindable]
108
+ public function get container():FourDComponent { return _container; }
109
+ public function set container(value:FourDComponent):void {
110
+ _container = value;
111
+ // increases frame rate because includeInLayout calls invalidateProperties();
112
+ _container.includeInLayout = false;
113
+ if (_container.initialized == true)
114
+ {
115
+ onCreationComplete(new FlexEvent(""));
116
+ }
117
+ else
118
+ {
119
+ _container.addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
120
+ }
121
+ }
122
+
123
+ public function FourDLayout() {
124
+ if (animator == null) {
125
+ animator = new TweenMaxAnimator();
126
+ }
127
+ if (action == null) {
128
+ action = new SimpleLayoutAction();
129
+ }
130
+ }
131
+
132
+ /** Handler Functions for Group and containerItem (Layout and LayoutItem)
133
+ * Override these handlers in the subclasses if you would like! */
134
+ protected function attachHandlers():void {
135
+ target.addEventListener(IndexChangedEvent.CHILD_INDEX_CHANGE, groupHandler);
136
+ target.addEventListener(ItemExistenceChangedEvent.ITEM_ADD, groupHandler);
137
+ target.addEventListener(ItemExistenceChangedEvent.ITEM_REMOVE, groupHandler);
138
+ }
139
+
140
+ protected function onCreationComplete(event:FlexEvent):void {
141
+ actionInstantiator = new Timer(1000, 0);
142
+ actionInstantiator.addEventListener(TimerEvent.TIMER, instantiateAction);
143
+ actionInstantiator.start();
144
+ }
145
+
146
+ private function instantiateAction(event:TimerEvent):void {
147
+ actionInstantiator.stop();
148
+ actionInstantiator = null;
149
+ action.layout = this;
150
+ action.container = container;
151
+ action.target = target;
152
+ action.animator = animator;
153
+
154
+ if (action.usedActions == null) {
155
+ action.usedActions = [action.INTRO,
156
+ action.AMBIENT,
157
+ action.ITEM_SELECTED,
158
+ action.ITEM_DESELECTED];
159
+ }
160
+
161
+ action.layoutStart();
162
+
163
+ if (zSort && container.visible) {
164
+ zSortStartTimer = new Timer(500, 0);
165
+ zSortStartTimer.start();
166
+ zSortStartTimer.addEventListener(TimerEvent.TIMER, zSortStart);
167
+ }
168
+ }
169
+
170
+ private function zSortStart(event:TimerEvent):void {
171
+ zSortStartTimer.stop();
172
+ zSortStartTimer = null;
173
+ container.addEventListener(Event.ENTER_FRAME, zSortGroup);
174
+ }
175
+
176
+ private function zSortGroup(event:Event):void {
177
+ SimpleZSorter.sortClips(target);
178
+ }
179
+
180
+ protected function groupHandler(event:*):void {
181
+ var item:DisplayObject;
182
+ if (event.type == ItemExistenceChangedEvent.ITEM_ADD) {
183
+ if (target is DataGroup) {
184
+ item = event.renderer;
185
+ } else if (target is Group) {
186
+ item = event.relatedObject;
187
+ }
188
+ item.addEventListener(MouseEvent.CLICK, itemClickHandler);
189
+ }
190
+ }
191
+
192
+ protected function itemClickHandler(event:MouseEvent):void {
193
+ var layoutElement:DisplayObject = event.target as DisplayObject;
194
+ if (target is DataGroup) {
195
+ selectedIndex = (target as DataGroup).mx_internal::getItemIndexForRenderer(event.currentTarget as IVisualElement);
196
+ } else if (target is Group) {
197
+ selectedIndex = (target as Group).getElementIndex(event.currentTarget as IVisualElement);
198
+ }
199
+ action.itemSelected();
200
+ }
201
+
202
+ // put this into an Action.update class. LayoutAction classes!
203
+ public function handleSelectedIndexHitTest():void {
204
+ var layoutElement:DisplayObject;
205
+ numOfItems = target.numLayoutElements;
206
+ var i:int=0;
207
+ for (i; i < numOfItems; i++) {
208
+ layoutElement = target.getLayoutElementAt(i) as UIComponent;
209
+ elementToGlobalPoint = layoutElement.localToGlobal(
210
+ new Point(layoutElement.x, layoutElement.y));
211
+ if (elementToGlobalPoint.x > hitAreaX1 && elementToGlobalPoint.x < hitAreaX2) {
212
+ selectedIndex = (target as Group).getElementIndex(layoutElement as IVisualElement);
213
+ }
214
+ }
215
+ }
216
+
217
+ /** initializeLayoutEquation is where you set up your layout */
218
+ public function initializeLayoutEquation():void {}
219
+
220
+ /** getLayoutElementToken is where you place the logic to place each item in the layout */
221
+ public function getLayoutElementToken(layoutElement:ILayoutElement, index:int):Object {
222
+ return new Object();
223
+ }
224
+
225
+ public function calculatePercentWidth(layoutElement:ILayoutElement, width:Number):Number {
226
+ var percentWidth:Number = LayoutElementHelper.pinBetween(layoutElement.percentWidth * 0.01 * width,
227
+ layoutElement.getMinBoundsWidth(),
228
+ layoutElement.getMaxBoundsWidth());
229
+ return percentWidth < width ? percentWidth : width;
230
+ }
231
+
232
+ public function calculatePercentHeight(layoutElement:ILayoutElement, height:Number):Number {
233
+ var percentHeight:Number = LayoutElementHelper.pinBetween(layoutElement.percentHeight * 0.01 * height,
234
+ layoutElement.getMinBoundsHeight(),
235
+ layoutElement.getMaxBoundsHeight());
236
+ return percentHeight < height ? percentHeight : height;
237
+ }
238
+
239
+ public function hasPercentWidth(layoutElement:ILayoutElement):Boolean {
240
+ return !isNaN(layoutElement.percentWidth);
241
+ }
242
+
243
+ public function hasPercentHeight(layoutElement:ILayoutElement):Boolean {
244
+ return !isNaN(layoutElement.percentHeight);
245
+ }
246
+
247
+ protected function setLayoutElementWidth(layoutElement:ILayoutElement, preferredWidth:Number, token:*, unscaledWidth:Number):void {
248
+ if (hasPercentWidth(layoutElement)) {
249
+ token.width = calculatePercentWidth(layoutElement, unscaledWidth);
250
+ } else {
251
+ token.width = layoutElement.getPreferredBoundsWidth();
252
+ }
253
+
254
+ if (token.width > preferredWidth) {
255
+ token.width = preferredWidth;
256
+ }
257
+ }
258
+
259
+ protected function setLayoutElementHeight(layoutElement:ILayoutElement, preferredHeight:Number, token:*, unscaledHeight:Number):void {
260
+ if (hasPercentHeight(layoutElement)) {
261
+ token.height = calculatePercentHeight(layoutElement, unscaledHeight);
262
+ } else {
263
+ token.height = layoutElement.getPreferredBoundsHeight();
264
+ }
265
+
266
+ if (token.height > preferredHeight) {
267
+ token.height = preferredHeight;
268
+ }
269
+ }
270
+
271
+ }
272
+ }
@@ -0,0 +1,110 @@
1
+ /*
2
+ * Copyright 2008 (c) Lance Pollard
3
+ * www.systemsofseven.com/blog
4
+ * www.4ddesignlab.com
5
+ * LanceJPollard@gmail.com
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person
8
+ * obtaining a copy of this software and associated documentation
9
+ * files (the "Software"), to deal in the Software without
10
+ * restriction, including without limitation the rights to use,
11
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ * copies of the Software, and to permit persons to whom the
13
+ * Software is furnished to do so, subject to the following
14
+ * conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be
17
+ * included in all copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
21
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26
+ * OTHER DEALINGS IN THE SOFTWARE.
27
+ */
28
+
29
+ package com.fourD.utils
30
+ {
31
+
32
+ import com.fourD.core.FourDComponent;
33
+
34
+ import mx.containers.ApplicationControlBar;
35
+ import mx.containers.Canvas;
36
+ import mx.containers.Panel;
37
+ import mx.core.UIComponent;
38
+
39
+ public class TweenUtil
40
+ {
41
+
42
+ public static function resolveAnimationType(animationType:String, target:Object):void {
43
+
44
+ }
45
+
46
+ public static function resolveParams(tweens:Array, tweenParams:Array, animator:Object):Array {
47
+ trace("resolve tween params");
48
+ var tmpArray:Array = new Array();
49
+ for (var i:int=0; i < tweenParams.length; i++) {
50
+ for (var j:int=0; j < tweens.length; j++) {
51
+ if (tweenParams[i].tween == tweens[j]) {
52
+ if (tweenParams[i].when == "onComplete") {
53
+ tweens[j].onComplete = animator.onTweenComplete;
54
+ tweens[j].onCompleteParams = [tweenParams[i]]; // as Object;
55
+ }
56
+ if (tweenParams[i].when == "onStart" || undefined) {
57
+ tweens[j].onStart = animator.onTweenStart;
58
+ //var al:Alert = Alert.show("tween: " + value[i].tween.rotationY);
59
+ tweens[j].onStartParams = [tweenParams[i]]//[value[i]];
60
+ }
61
+ tmpArray.push(tweenParams[i] as Object);
62
+ }
63
+ }
64
+ }
65
+ tweenParams = tmpArray;
66
+ return tweenParams;
67
+ }
68
+
69
+ public static function validateTweenTarget(target:Object, fourDComponent:UIComponent):Boolean {
70
+ // Hack to get parent if the direct parent is a Skin!
71
+ var valid:Boolean;
72
+ if (fourDComponent is FourDComponent) {
73
+ var plane:FourDComponent = fourDComponent as FourDComponent;
74
+ if (target.parent != plane.front) {
75
+ if (target.parent == plane.back || target == plane.front || target == plane.back) {
76
+ valid = true;
77
+ }
78
+ }
79
+ if (target.parent != plane.back) {
80
+ if (target.parent == plane.front || target == plane.front || target == plane.back) {
81
+ valid = true;
82
+ }
83
+ }
84
+ if (target != plane.front) {
85
+ if (target.parent == plane.back || target.parent == plane.front || target == plane.back) {
86
+ valid = true;
87
+ }
88
+ }
89
+ if (target != plane.back) {
90
+ if (target.parent == plane.back || target.parent == plane.front || target == plane.front) {
91
+ valid = true;
92
+ }
93
+ }
94
+ }
95
+
96
+ if (target is Panel || target.parent is Panel) {
97
+ valid = true
98
+ }
99
+ if (target is ApplicationControlBar || target.parent is ApplicationControlBar) {
100
+ valid = true
101
+ }
102
+ if (target is Canvas || target.parent is Canvas) {
103
+ valid = true
104
+ }
105
+
106
+ return valid;
107
+ }
108
+
109
+ }
110
+ }