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,111 @@
1
+ package com.fourD.core
2
+ {
3
+ import flash.utils.Dictionary;
4
+
5
+ public class TectonCache
6
+ {
7
+ public function TectonCache()
8
+ {
9
+ }
10
+
11
+ public static function addCachedInstance(key:*, instance:*, type:String, scope:IScope):void
12
+ {
13
+ if(type == NONE) return;
14
+ if(type == INHERIT)
15
+ {
16
+ type = scope.eventMap.cache;
17
+ }
18
+
19
+ var cacheCollection:Dictionary;
20
+ if(type == LOCAL)
21
+ {
22
+ cacheCollection = scope.eventMap.getCacheCollection()
23
+ }
24
+ else
25
+ {
26
+ cacheCollection = scope.getManager().getCacheCollection();
27
+ }
28
+ if (key is Array) {
29
+ switch(key.length)
30
+ {
31
+ case 1:
32
+ if (cacheCollection[0] == undefined) {
33
+ if (!1 is Array) { cacheCollection[0] = new Dictionary(true); }
34
+ else if (1 is Array) { cacheCollection[0] = new Array(); }
35
+ }
36
+ if (cacheCollection[0] is Array) { cacheCollection[0].push(instance); }
37
+ else if (cacheCollection[0] is Dictionary) { cacheCollection[0][instance]; }
38
+ else (cacheCollection[0] = instance;
39
+ break;
40
+ case 2:
41
+ if (cacheCollection[0][1] == undefined) {
42
+ if (!2 is Array) { cacheCollection[0][1] = new Dictionary(true); }
43
+ else if (2 is Array) { cacheCollection[0][1] = new Array(); }
44
+ }
45
+ if (cacheCollection[0][1] is Array) { cacheCollection[0][1].push(instance); }
46
+ else if (cacheCollection[0][1] is Dictionary) { cacheCollection[0][1][instance]; }
47
+ else (cacheCollection[0][1] = instance;
48
+ break;
49
+ case 3:
50
+ if (cacheCollection[0][1][2] == undefined) {
51
+ if (!3 is Array) { cacheCollection[0][1][2] = new Dictionary(true); }
52
+ else if (3 is Array) { cacheCollection[0][1][2] = new Array(); }
53
+ }
54
+ if (cacheCollection[0][1][2] is Array) { cacheCollection[0][1][2].push(instance); }
55
+ else if (cacheCollection[0][1][2] is Dictionary) { cacheCollection[0][1][2][instance]; }
56
+ else (cacheCollection[0][1][2] = instance;
57
+ break;
58
+ case 4:
59
+ if (cacheCollection[0][1][2][3] == undefined) {
60
+ if (!4 is Array) { cacheCollection[0][1][2][3] = new Dictionary(true); }
61
+ else if (4 is Array) { cacheCollection[0][1][2][3] = new Array(); }
62
+ }
63
+ if (cacheCollection[0][1][2][3] is Array) { cacheCollection[0][1][2][3].push(instance); }
64
+ else if (cacheCollection[0][1][2][3] is Dictionary) { cacheCollection[0][1][2][3][instance]; }
65
+ else (cacheCollection[0][1][2][3] = instance;
66
+ break;
67
+ }
68
+ } else {
69
+ cacheCollection[key] = instance;
70
+ }
71
+ }
72
+
73
+ public static function getCachedInstance(key:*, type:String, scope:IScope):Object
74
+ {
75
+ if(type == INHERIT)
76
+ {
77
+ type = scope.eventMap.cache;
78
+ }
79
+ var cacheCollection:Dictionary;
80
+ if(type == LOCAL)
81
+ {
82
+ cacheCollection = scope.eventMap.getCacheCollection()
83
+ }
84
+ else
85
+ {
86
+ cacheCollection = scope.getManager().getCacheCollection();
87
+ }
88
+
89
+ if (key is Array) {
90
+ switch(key.length)
91
+ {
92
+ case 1:
93
+ return cacheCollection[0];
94
+ break;
95
+ case 2:
96
+ return cacheCollection[0][1];
97
+ break;
98
+ case 3:
99
+ return cacheCollection[0][1][2];
100
+ break;
101
+ case 4:
102
+ return cacheCollection[0][1][2][3];
103
+ break;
104
+ }
105
+ } else {
106
+ return cacheCollection[key];
107
+ }
108
+ }
109
+
110
+ }
111
+ }
@@ -0,0 +1,39 @@
1
+ package com.fourD.core {
2
+
3
+ import flash.display.DisplayObject;
4
+ import flash.events.*;
5
+
6
+ public class TectonEvent extends Event {
7
+
8
+ public static const INITIALIZE:String = "initializeTectonEvent";
9
+ public static const START:String = "runTectonEvent";
10
+ public static const COMPLETE:String = "runCompleteTectonEvent";
11
+
12
+ /**
13
+ * Tecton that dispatched this event, which has a reference to a view (tropon)
14
+ * and the action that will be run (tweens or functions).
15
+ * A tecton has a ton of information with it.
16
+ */
17
+ public var tropon:DisplayObject;
18
+
19
+ public var tecton:Tecton;
20
+
21
+ public var actionParams:Object;
22
+
23
+ /**
24
+ * A PathwayEvent tells the View how to respond when some new data is loaded
25
+ * or you want to peform some super sophisticated animation sequence
26
+ * It also allows you to finely control the View state logic
27
+ * Edit this as you see fit.
28
+ */
29
+ public function TectonEvent(type:String, bubbles:Boolean = false)
30
+ {
31
+ super(type, bubbles);
32
+ }
33
+
34
+ override public function clone():Event
35
+ {
36
+ return new TectonEvent(type, bubbles);
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,515 @@
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.core
30
+ {
31
+ import com.asfusion.mate.core.EventMap;
32
+
33
+ import flash.net.registerClassAlias;
34
+ import flash.utils.Dictionary;
35
+ import flash.utils.getQualifiedClassName;
36
+
37
+ import mx.binding.utils.ChangeWatcher;
38
+ import mx.events.FlexEvent;
39
+ import mx.events.PropertyChangeEvent;
40
+
41
+ /**
42
+ * 1) Collect all XML of components using describeType into an array
43
+ * 2) For each "extendsClass" in the XML for each component, slowly build
44
+ * a map of the components' tree/hierarchy
45
+ */
46
+ public class TectonMap extends EventMap {
47
+
48
+ /** Tropons keeps a map of parent views to child views */
49
+ [Bindable]
50
+ public var tropons:Array;
51
+
52
+ public var tectonMap:Dictionary;
53
+ public var tectonStringMap:Dictionary;
54
+
55
+ /** map used in routing... the tropon and action in the url are turned into a tecton */
56
+ public var troponAndActionToTecton:Dictionary;
57
+
58
+ /** the tectons that are listening for tectons to start and whatnot */
59
+ public var tectonReceptors:Dictionary;
60
+
61
+ /** maps tectons to tropons (actions to objects in a system) */
62
+ public var tectonTroponMap:Dictionary;
63
+
64
+ /** if you only have a string of the view, turn it into the actual view */
65
+ public var troponNameToTropon:Dictionary;
66
+
67
+ /** creates a map or path of a currently active string of tectons */
68
+ public var tectonPathway:Dictionary;
69
+
70
+ /** in case you are dynamically creating a new tecton, figure out which one from the tropon class */
71
+ public var troponClassToTecton:Dictionary;
72
+
73
+ /** holds our tecton objects from XML (easily done in RestfulX) */
74
+ private var _tectons:Array; [Bindable]
75
+ public function get tectons():Array { return _tectons; }
76
+ public function set tectons(value:Array):void {
77
+ _tectons = value;
78
+ trace("TECTONS SET");
79
+ if (_tectons) { initializeMaps(); }
80
+ }
81
+
82
+ /** global dispatcher injected by the application */
83
+ private var _dispatcher:IEventDispatcher; [Bindable]
84
+ public function get dispatcher():IEventDispatcher { return _dispatcher; }
85
+ public function set dispatcher(value:IEventDispatcher):void {
86
+ _dispatcher = value;
87
+ if (_dispatcher) { attachHandlers(); }
88
+ }
89
+
90
+ public function TectonMap() {
91
+ super();
92
+ trace("TECTONMAP CONSTRUCTOR");
93
+ troponAndActionToTecton = new Dictionary(true);
94
+ tectonMap = new Dictionary(true);
95
+ tectonReceptors = new Dictionary(true);
96
+ tectonTroponMap = new Dictionary(true);
97
+ troponNameToTropon = new Dictionary(true);
98
+ tectonPathway = new Dictionary(true);
99
+ troponClassToTecton = new Dictionary(true);
100
+ dispatcher = this.getDispatcher();
101
+ }
102
+
103
+ private function initializeMaps():void {
104
+ var i:int=0, len:int = tectons.length;
105
+ trace("INITIALIZE MAPS!");
106
+ // 1) create map of tectonReceptors to tectons
107
+ // 2) create map of tropons (from the troponTree) to tectons
108
+ var tecton:Tecton, tropon:*, tropons:Array, action:String, kanon:*;
109
+ for (i; i < len; i++) {
110
+ tecton = tectons[i];
111
+ var fqnTecton:String = getQualifiedClassName(tecton);
112
+ registerClassAlias(fqnTecton.replace("::","."), Tecton);
113
+ action = tecton.actionName;
114
+ if (tecton.tropon) {
115
+ trace("tecton exists");
116
+ tropon = tecton.tropon;
117
+ if (!tropon is Class) {
118
+ trace("tropon is displayObject");
119
+ trace(tropon);
120
+ if (!tecton.kanon) {
121
+ trace("kanon wasn't explicitly defined");
122
+ kanon = tropon.parent;
123
+ }
124
+ } else if (tropon is Class) {
125
+ trace("tropon is class = " + tropon);
126
+ if (!tecton.kanon) {
127
+ trace("kanon doesn't exist for class");
128
+ //THROW ERROR
129
+ } else {
130
+ kanon = tecton.kanon;
131
+ }
132
+ }
133
+ }
134
+ else if (tecton.tropons) {
135
+ tropons = tecton.tropons;
136
+ }
137
+ // doesn't matter if it's a Class or DisplayObject :)
138
+ var fqnKanon:String = getQualifiedClassName(kanon);
139
+ var fqnTropon:String;
140
+ var j:int=0, lenj:int;
141
+ trace(tropon);
142
+ if (tropon != null) {
143
+ trace("Tropon is not equal to null");
144
+ fqnTropon = getQualifiedClassName(tropon);
145
+ if (tectonMap[fqnKanon] == undefined) {
146
+ tectonMap[fqnKanon] = new Dictionary(true); trace("first dictionary");
147
+ }
148
+ if (tectonMap[fqnKanon][fqnTropon] == undefined) {
149
+ tectonMap[fqnKanon][fqnTropon] = new Dictionary(true); trace("second dictionary");
150
+ }
151
+ if (action) {
152
+ tectonMap[fqnKanon][fqnTropon][action] = tecton;
153
+ trace("ALL OF IT: " + "\nKanon = " + fqnKanon + "\nTropon = " + fqnTropon + "\nAction = " + action);
154
+ }
155
+ } else if (tropons != null && tropon == null) {
156
+ lenj = tropons.length;
157
+ for (j; j < lenj; j++) {
158
+ tropon = tropons[j];
159
+ fqnTropon = getQualifiedClassName(tropon);
160
+ if (tectonMap[fqnKanon] == undefined) { tectonMap[fqnKanon] = new Dictionary(true); }
161
+ if (tectonMap[fqnKanon][fqnTropon] == undefined) { tectonMap[fqnKanon][fqnTropon] = new Dictionary(true); }
162
+ if (action) { tectonMap[fqnKanon][fqnTropon][action] = tecton; }
163
+ }
164
+ }
165
+
166
+ if (tecton.receptors != null) {
167
+ lenj = tecton.receptors.length;
168
+ for (j; j < lenj; j++) {
169
+ var receptor:Object = tecton.receptors[j];
170
+ if (tectonReceptors[tecton] == undefined) { tectonReceptors[tecton] = new Dictionary(true); }
171
+ if (tectonReceptors[tecton][receptor.eventType] == undefined) { tectonReceptors[tecton][receptor.eventType] = new Array(); }
172
+ tectonReceptors[tecton][receptor.eventType].push(receptor.tecton);
173
+ // PheronEvent has a "type" of the tecton defined
174
+ //receptor.tecton.addEventListener(
175
+ }
176
+ }
177
+
178
+ /* lenj = tecton.tropons.length;
179
+
180
+ for (j; j < lenj; j++) {
181
+ trace("IN LOOP FOR TROPON AND ACTION");
182
+ tropon = tecton.tropons[i];
183
+ if (tecton.tropon == tropon) {
184
+ if (troponAndActionToTecton[tropon] == undefined) {
185
+ troponAndActionToTecton[tropon] = new Dictionary(true);
186
+ };
187
+ // 2) create map of actions + tropons to tectons
188
+ troponAndActionToTecton[tropon][action] = tecton;
189
+ if (tectonTroponMap[tecton] == undefined) {
190
+ tectonTroponMap[tecton] = new Array();
191
+ };
192
+ // 3) create a map of tectons to tropons
193
+ tectonTroponMap[tecton].push(tropon);
194
+ if (tectonTroponMap[tropon] == undefined) {
195
+ tectonTroponMap[tropon] = new Array();
196
+ };
197
+ // 3) create a reverse map of tropons to tectons
198
+ tectonTroponMap[tropon].push(tecton);
199
+ }
200
+ } */
201
+ }
202
+ }
203
+
204
+ private function attachHandlers():void {
205
+ dispatcher.addEventListener(TectonEvent.INITIALIZE, routeTectonEvent);
206
+ dispatcher.addEventListener(TectonEvent.START, routeTectonEvent);
207
+ dispatcher.addEventListener(TectonEvent.COMPLETE, routeTectonEvent);
208
+
209
+ dispatcher.addEventListener(PathwayEvent.TRAVERSE, routePathwayEvent);
210
+ }
211
+
212
+ private function routeTectonEvent(event:TectonEvent):void {
213
+ var type:String = event.type;
214
+ var tecton:Tecton = event.tecton;
215
+ if (type == TectonEvent.INITIALIZE) { initialize(tecton); }
216
+ else if (type == TectonEvent.START) { run(tecton); }
217
+ else if (type == TectonEvent.COMPLETE) { complete(tecton); }
218
+ }
219
+
220
+ private function routePathwayEvent(event:PathwayEvent):void {
221
+ trace("pathwayEvent");
222
+ var type:String = event.type;
223
+ var url:Array = event.url;
224
+ var i:int=0, len:int = url.length;
225
+ var tropon:*, action:String, tecton:Tecton, kanon:*;
226
+ var fqnTropon:String, fqnKanon:String;
227
+ for (i; i < len; i++) {
228
+ tropon = url[i].view;
229
+ kanon = tropon.parent;
230
+ fqnTropon = getQualifiedClassName(tropon);
231
+ fqnKanon = getQualifiedClassName(kanon);
232
+ trace("tropon = " + tropon);
233
+ trace("kanon = " + kanon);
234
+ action = url[i].action;
235
+ trace("action = " + action);
236
+ // somehow wait for the first one to be done, then the second...
237
+ //tecton = ObjectUtil.copy(tectonMap[fqnKanon][fqnTropon][action]) as Tecton;
238
+ tecton = TectonUtils.clone(tectonMap[fqnKanon][fqnTropon][action]) as Tecton;
239
+ tecton.tropon = tropon;
240
+ //tecton.tropon = tropon;
241
+ trace("tectonClass = " + tecton);
242
+
243
+ initialize(tecton);
244
+ }
245
+ }
246
+
247
+ public function initialize(tecton:Tecton):void {
248
+ // 1) check conditions to see if the current tecton should even be run,
249
+ // then 2) dispatch pherons to allow the receptor tectons to execute and repeat the cycle...
250
+ // if tecton is actually the tecton name...
251
+ // 1) Find tecton
252
+ if (!tecton) { return; } // throw error
253
+
254
+ // 2) validate tecton conditions to see if it's viable
255
+ var conditions:Array = tecton.conditions;
256
+ if (conditions != null) {
257
+ var value:Boolean = ConditionsUtil.validateConditions(conditions)
258
+ if (!value) { return; }
259
+ }
260
+
261
+ // 3) tecton is now initialized
262
+ trace("does tecton exist?? -> " + tecton);
263
+ tecton.isInitialized = true;
264
+ // 4) Find tectons that are listening for this tecton to initialize
265
+ var receptorTectons:Array = findReceptorTectons(tecton, TectonEvent.INITIALIZE);
266
+ trace("now receptors = "+ receptorTectons);
267
+ if (receptorTectons != null) {
268
+ // 5) Don't execute this tecton until the receptor tectons have initialized
269
+ waitForTectonInitialized(receptorTectons, tecton);
270
+ // 6) execute receptor tectons
271
+ execute(receptorTectons);
272
+ } else {
273
+ execute(tecton);
274
+ }
275
+ }
276
+
277
+ public function run(tecton:Tecton):void {
278
+ trace("RUN TECTON");
279
+ trace(tecton.tropon);
280
+ trace("parent of tecton is " + tecton.tropon.parent);
281
+ trace("presenter = " + tecton.tropon.parent.presenter);
282
+ var tropon:* = tecton.tropon;
283
+ var params:Object = new Object();
284
+ var paramsArray:Array;
285
+ if (tecton.actions) {
286
+ var i:int=0, len:int = tecton.actions.length;
287
+ for (i; i < len; i++) {
288
+ var action:* = tecton.actions[i];
289
+ if (action is InstanceMethodInvoker) {
290
+ trace("action is method invoker!");
291
+ action.ins = tropon.parent.presenter;
292
+ action.run();
293
+ }
294
+ }
295
+ }
296
+ /* if (tecton.actions is Array || !tecton.action is Function) {
297
+ // tropon.tweens = tecton.action;
298
+ params.when = "onStart";
299
+ params.fxn = tectonStarted;
300
+ params.functionParams = [tecton];
301
+ params.when = "onComplete";
302
+ params.fxn = tectonCompleted;
303
+ params.functionParams = [tecton];
304
+ if (tecton.actionParams) {
305
+ if (tecton.actionParams is Array) {
306
+ tecton.actionParams.push(params);
307
+ } else {
308
+ paramsArray = [params, tecton.actionParams];
309
+ }
310
+
311
+ } else {
312
+ paramsArray = [params];
313
+ }
314
+ // tropon.tweenParams = paramsArray;
315
+ } else if (tecton.action is Function) {
316
+ // tropon.tweenFunction = tecton.action;
317
+ // if (tecton.actionParams) { tropon.tweenFunctionParams = tecton.actionParams; }
318
+ }
319
+ (tropon as Object).tween();
320
+ tecton.isRunning = true;
321
+
322
+ var receptorTectons:Array = findReceptorTectons(tecton, TectonEvent.RUN);
323
+ if (receptorTectons) {
324
+ execute(receptorTectons);
325
+ } */
326
+ }
327
+
328
+ protected function execute(tectons:*):void {
329
+ if (tectons is Array) {
330
+ var i:int=0, len:int = tectons.length;
331
+ for (i; i < len; i++) {
332
+ execute(tectons[i]);
333
+ }
334
+ } else {
335
+ var tecton:Tecton = tectons;
336
+ if (!tecton.isInitialized) { initialize(tecton); }
337
+ if (!tecton.isRunning && tecton.isInitialized) { run(tecton); }
338
+ else { return; }
339
+ }
340
+ }
341
+
342
+ private function findReceptorTectons(tecton:*, phase:String):Array {
343
+ var receptorTectons:Array;
344
+ if (tectonReceptors[tecton] != undefined && tectonReceptors[tecton][phase] != undefined) {
345
+ trace("RECEPTORS EXIST");
346
+ receptorTectons = tectonReceptors[tecton][phase];
347
+ }
348
+ if (receptorTectons != null) {
349
+ trace("recpecptors aren't null");
350
+ var i:int=0, len:int = receptorTectons.length;
351
+ for (i; i < len; i++) {
352
+ // map of child to parent
353
+ tectonPathway[receptorTectons[i]] = tecton;
354
+ }
355
+ }
356
+ trace("return receptors = " + receptorTectons);
357
+ return receptorTectons;
358
+ }
359
+
360
+ public function complete(tecton:*, target:*=null):void {
361
+
362
+ }
363
+
364
+ private function waitForTectonInitialized(tectons:Array, callBackTecton:*):void {
365
+ var i:int=0, len:int = tectons.length;
366
+ for (i; i < len; i++) {
367
+ var tecton:* = tectons[i];
368
+ ChangeWatcher.watch(tecton, "isInitialized", tectonInitialized);
369
+ }
370
+ }
371
+
372
+ private function tectonInitialized(event:PropertyChangeEvent):void {
373
+ // var tecton:* = event.source;
374
+ // var property:* = event.property;
375
+ var count:int = 0;
376
+ var numTectons:int = 0;
377
+ for each (var tecton:* in tectonPathway) {
378
+ numTectons ++;
379
+ if (tecton.isInitialized) { count++; }
380
+ }
381
+
382
+ if (count == numTectons) {
383
+ var initializedTecton:* = tectonPathway[event.source];
384
+ run(initializedTecton);
385
+ }
386
+ }
387
+
388
+ /** tectonStarted and tectonCompleted simply restart the initialization process */
389
+ private function tectonStarted(tecton:*):void {
390
+ tecton.isComplete = false;
391
+ tecton.isRunning = true;
392
+ // dispatcher.dispatchEvent(new Pheron());
393
+ }
394
+
395
+ private function tectonCompleted(tecton:*):void {
396
+ tecton.isRunning = false;
397
+ tecton.isComplete = true;
398
+ // dispatcher.dispatchEvent(new Pheron());
399
+ }
400
+
401
+ /* private function createTroponTreeMap():void {
402
+ for each (var view:Class in views) {
403
+ var fqn:String = getQualifiedClassName(view);
404
+
405
+ var viewName:String = fqn.split("::")[1] as String;
406
+ viewClasses[view] = fqn;
407
+ viewClasses[fqn] = view;
408
+ }
409
+ // once we have set up the core data structures we need another pass to compute
410
+ // the hierarchy of the components/views
411
+ views.forEach(function(elm:Class, index:int, array:Array):void {
412
+ extractMetadata(elm);
413
+ });
414
+ }
415
+
416
+ private function extractMetadata(viewClass:Class):void {
417
+ var fqn:String = viewClasses[viewClass];
418
+ var view:UIComponent = viewInstances[viewClass];
419
+ var meta:XML = describeType(view);
420
+
421
+ // extract superclasses
422
+ for each (var node:XML in meta..accessor) {
423
+ var declaredBy:String = node.@declaredBy;
424
+ var name:String = node.@name;
425
+ var child:UIComponent;
426
+ // if the accessor was declared in one of your classes and it's a UIComponent...
427
+ // if (viewClasses[declaredBy] && view[name] is UIComponent) {
428
+ // child = view[name] as UIComponent;
429
+ // mapChildToParent(troponMap, view, child);
430
+ // }
431
+ }
432
+ } */
433
+
434
+ private function mapChildToParent(map:*, parent:String, child:*):void {
435
+ if (map[parent] == undefined) map[parent] = [];
436
+ map[parent].push(child);
437
+ }
438
+
439
+ /** Actions are defined by the parent, with a name and a target
440
+ * The steps to running an action:
441
+ * 1) Find the current action by name
442
+ * 2) Find the target object by either the data object or the renderer
443
+ * 3) If the action is already active, skip the whole process
444
+ * 4) If the action isn't active, run other actions first to prepare the landscape
445
+ * 5) After the preparation, run the action and set the action to Active
446
+ * 6) After the action is run, dispatch an Event?
447
+ */
448
+ /* public function action(action:*, callBackAction:*=null, delay:Number=NaN):void {
449
+ if (this.actions == null || action == null) { return; }
450
+
451
+ if (action is String) {
452
+ var i:int=0, len:int = view.actions.length;
453
+ for (i; i < len; i++) {
454
+ // 1) Find action by name
455
+ if (view.actions[i].name == action as String) { action = view.actions[i]; continue; }
456
+ }
457
+ }
458
+
459
+ // 2) If action is already active, skip it
460
+ if (action.isActive) { return; }
461
+
462
+ if (!action.isPrepared) { beforeAction(action, callBackAction, delay); }
463
+
464
+ // 3) If the action isn't yet prepared, skip it, and on the call back run straight through
465
+ if (!action.isPrepared) {
466
+ prepareForAction(action.preparationActions, action, delay);
467
+ action.isPrepared = true;
468
+ // jump out of the method so you can have time to execute other methods and then come back.
469
+ return;
470
+ }
471
+
472
+ // 4) Figure out if the target is an index, renderer, or data item
473
+ var view:UIComponent;
474
+ if (target is int) { view = getRendererForItemAt(target as int); }
475
+ else if (target is UIComponent) { view = target as UIComponent; }
476
+ else { view = itemToRenderer[target]; }
477
+
478
+ // there may be onCompleteParams and such here. These should all be executed in a single function,
479
+ // in this class, call it executeTweenParams(params:Object);
480
+ view.tweens = action.tweens;
481
+ view.tween();
482
+ // blah blah blah
483
+ afterAction(target, actionName, callBackTarget, callBackAction);
484
+ } */
485
+
486
+ public function afterAction(action:*, callBackAction:*=null):void {
487
+ if (action) { action(action, callBackAction); }
488
+ }
489
+
490
+
491
+
492
+ /** Tween functions to handle transitions between NavigationEvents */
493
+ protected function onStart(params:Object):void {
494
+ executeParams(params);
495
+ }
496
+
497
+ protected function onComplete(params:Object=null):void {
498
+ executeParams(params);
499
+ }
500
+
501
+ /** This is where you define what can be found in that params object */
502
+ protected function executeParams(p:Object=null):void {
503
+ }
504
+
505
+ /**
506
+ * Handle view creation complete initialization
507
+ * Override in subclasses
508
+ * @param event creation complete event
509
+ *
510
+ */
511
+ protected function onCreationComplete(event:FlexEvent):void
512
+ {
513
+ }
514
+ }
515
+ }