emergent-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,92 @@
1
+ package <%= base_package %>.controllers.manager {
2
+
3
+ import <%= base_package %>.models.constant.ResourceResult;
4
+ import <%= base_package %>.models.constant.ResourceAction;
5
+ import <%= base_package %>.models.domain.Content;
6
+ import <%= base_package %>.models.domain.ContentAssignment;
7
+ import <%= base_package %>.controllers.event.ResourceEvent;
8
+
9
+ import org.restfulx.Rx;
10
+ import org.restfulx.collections.ModelsCollection;
11
+
12
+ public class ContentManager extends ResourceManager {
13
+
14
+ protected var contentAssignment:ContentAssignment;
15
+
16
+ private var _contentTree:ModelsCollection; [Bindable]
17
+ public function get contentTree():ModelsCollection { return _contentTree; }
18
+ public function set contentTree(value:ModelsCollection):void {
19
+ _contentTree = value;
20
+ }
21
+
22
+ // e.g. Site
23
+ private var _parent:Content; [Bindable]
24
+ public function get parent():Content { return _parent; }
25
+ public function set parent(value:Content):void {
26
+ _parent = value;
27
+ }
28
+
29
+ // e.g. HomePage
30
+ private var _target:Content; [Bindable]
31
+ public function get target():Content { return _target; }
32
+ public function set target(value:Content):void {
33
+ _target = value;
34
+ }
35
+
36
+ // e.g. [BlurbA, BlurbB, BlurbC, ImageA, ImageB]
37
+ private var _children:ModelsCollection; [Bindable]
38
+ public function get children():ModelsCollection { return _children; }
39
+ public function set children(value:ModelsCollection):void {
40
+ _children = value;
41
+ }
42
+
43
+ public function ContentManager() {
44
+ setModel(target);
45
+ }
46
+
47
+ protected function dispatchContentToManager(resource:Object, action:String, nameOfContent:String):void {
48
+
49
+ var event:ResourceEvent = new ResourceEvent(nameOfContent);
50
+ event.data = resource;
51
+ event.action = action;
52
+
53
+ dispatcher.dispatchEvent(event);
54
+ }
55
+
56
+ override protected function setModel(resource:Object, binder:*=null, action:String=null):void {
57
+ super.setModel(resource, binder, action);
58
+
59
+ if (resource is Content) {
60
+ target = model as Content;
61
+ // parent = target.parent;
62
+ // children = target.children;
63
+ } else if (resource is ContentAssignment) {
64
+ contentAssignment = model as ContentAssignment;
65
+ }
66
+ }
67
+
68
+ override protected function beforeCreate(resource:Object):void {
69
+
70
+ }
71
+
72
+ override protected function beforeUpdate(resource:Object):void {
73
+ // children = Rx.models.index(Content);
74
+ }
75
+
76
+ override protected function beforeDestroy(resource:Object):void {
77
+ // children = Rx.models.index(Content);
78
+ }
79
+
80
+ override protected function afterCreate(resource:Object):void {
81
+ setModel(resource, ResourceAction.CREATE);
82
+ }
83
+
84
+ override protected function afterUpdate(resource:Object):void {
85
+ setModel(resource, ResourceAction.UPDATE);
86
+ }
87
+
88
+ override protected function afterDestroy(resource:Object):void {
89
+ setModel(resource, ResourceAction.DESTROY);
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,131 @@
1
+ /* Copyright 2008 Theo Hultberg/Iconara */
2
+
3
+ package <%= base_package %>.controllers.manager {
4
+
5
+ import flash.events.Event;
6
+ import flash.events.EventDispatcher;
7
+ import flash.events.IEventDispatcher;
8
+
9
+ import <%= base_package %>.models.domain.Document;
10
+
11
+ import <%= base_package %>.controllers.event.UndoEvent;
12
+ import <%= base_package %>.controllers.command.ICommand;
13
+ import <%= base_package %>.controllers.command.Undoable;
14
+ import <%= base_package %>.controllers.command.UpdateDocumentCommand;
15
+
16
+ /**
17
+ * The DocumentManager manages a single document. It provides a transactional interface
18
+ * for manipulating that document, making sure that actions are undoable, and keeping
19
+ * track of whether or not the document needs saving or not (i.e. if it's "dirty").
20
+ *
21
+ * All modifications of the managed document are done in commands, and a change is
22
+ * undoable the particular command implements the Undoable interface. After an undoable
23
+ * command has been executed it is reported to the undo system.
24
+ *
25
+ * Currently there is only one action that modifies the document: update, which has the
26
+ * corresponding command UpdateDocumentCommand.
27
+ */
28
+ public class DocumentManager extends EventDispatcher {
29
+
30
+ /*
31
+ * All methods on the Document class that are destructive (i.e. changes the object's state)
32
+ * are marked with the app_internal namespace. This means that any code that wants to modify
33
+ * a document needs to open that namespace somehow. This makes it easier to keep track on
34
+ * where destructive changes are made.
35
+ */
36
+ private var _document:Document;
37
+
38
+ private var _documentDirty:Boolean;
39
+
40
+ private var _dispatcher:IEventDispatcher;
41
+ public function set dispatcher( value : IEventDispatcher ) : void {
42
+ _dispatcher = value;
43
+ }
44
+
45
+ [Bindable(event="documentChanged")]
46
+ public function get document():Document {
47
+ return _document;
48
+ }
49
+
50
+ /**
51
+ * Returns whether or not the managed document has unsaved changes.
52
+ */
53
+ [Bindable(event="documentDirtyChanged")]
54
+ public function get documentDirty():Boolean {
55
+ return _documentDirty;
56
+ }
57
+
58
+
59
+ /** Internal method for dispatching the "documentChanged" event. */
60
+ private function dispatchDocumentChanged():void {
61
+ dispatchEvent(new Event("documentChanged"));
62
+ }
63
+
64
+ /** Internal method for dispatching the "documentDirtyChanged" event. */
65
+ private function dispatchDocumentDirtyChanged():void {
66
+ dispatchEvent(new Event("documentDirtyChanged"));
67
+ }
68
+
69
+ /** Listener for the Event.CHANGE event on the managed Document instance. */
70
+ private function onDocumentChange( event:Event ):void {
71
+ _documentDirty = true;
72
+
73
+ dispatchDocumentDirtyChanged();
74
+ }
75
+
76
+ /**
77
+ * Sets the document instance that this manager manages, this triggers the
78
+ * dispatch of both the "documentChanged" and "documentDirtyChanged" events.
79
+ */
80
+ public function setDocument(d:Document):void {
81
+ if (_document != null) {
82
+ _document.removeEventListener(Event.CHANGE, onDocumentChange);
83
+ }
84
+
85
+ _document = d;
86
+ _documentDirty = false;
87
+
88
+ if ( _document != null ) {
89
+ _document.addEventListener(Event.CHANGE, onDocumentChange);
90
+ }
91
+
92
+ dispatchDocumentChanged();
93
+ dispatchDocumentDirtyChanged();
94
+ }
95
+
96
+ /**
97
+ * After a document has been saved (an action that this manager is unaware of),
98
+ * this method needs to be called to unset the dirty flag.
99
+ */
100
+ public function documentSaved():void {
101
+ _documentDirty = false;
102
+
103
+ dispatchDocumentDirtyChanged();
104
+ }
105
+
106
+ /**
107
+ * Modifes the managed document by setting a new title and text. This action
108
+ * is undoable.
109
+ */
110
+ public function update(doc:Document):void {
111
+ var command:UpdateDocumentCommand = new UpdateDocumentCommand();
112
+ command.prepare(_document, doc.content);
113
+ exec(command);
114
+ }
115
+
116
+ /**
117
+ * Executes the specified command by calling its execute method. Also, and more
118
+ * importantly, it checks if that command is undoable. Undoable commands are
119
+ * reported to the undo system by dispatching the UndoEvent.ADD_UNDOABLE event.
120
+ */
121
+ private function exec(command:ICommand):void {
122
+ command.execute();
123
+
124
+ if (command is Undoable) {
125
+ _dispatcher.dispatchEvent(new UndoEvent(UndoEvent.ADD_UNDOABLE, Undoable(command)));
126
+ }
127
+ }
128
+
129
+ }
130
+
131
+ }
@@ -0,0 +1,156 @@
1
+ /* Copyright 2008 Theo Hultberg/Iconara */
2
+
3
+ package <%= base_package %>.controllers.manager {
4
+
5
+ import flash.events.Event;
6
+ import flash.events.EventDispatcher;
7
+
8
+ import mx.collections.ArrayCollection;
9
+ import mx.collections.ICollectionView;
10
+
11
+ import <%= base_package %>.models.domain.Document;
12
+ import <%= base_package %>.models.constant.DocumentType;
13
+ import <%= base_package %>.models.factory.DocumentFactory;
14
+ import <%= base_package %>.controllers.manager.ResourceManager;
15
+
16
+ /**
17
+ * The DocumentsManager manages the overall state of the application, things like
18
+ * all documents, open documents and the current document, it also creates and deletes
19
+ * documents.
20
+ */
21
+ public class DocumentsManager extends ResourceManager {
22
+
23
+ private var _documents:ArrayCollection;
24
+ private var _openDocuments:ArrayCollection;
25
+ private var _currentDocument:Document;
26
+ private var _documentFactory:DocumentFactory;
27
+
28
+ /**
29
+ * Returns a collection of all douments that exist within the application,
30
+ * whether or not they are open or closed.
31
+ */
32
+ [Bindable(event="documentsChanged")]
33
+ public function get documents():ICollectionView {
34
+ return _documents;
35
+ }
36
+
37
+ /**
38
+ * Returns a collection of all open documents.
39
+ */
40
+ [Bindable(event="openDocumentsChanged")]
41
+ public function get openDocuments():ICollectionView {
42
+ return _openDocuments;
43
+ }
44
+
45
+ /**
46
+ * Returns the current document, i.e. the document that is the front-most
47
+ * opened document and the one that the user is editing.
48
+ */
49
+ [Bindable(event="currentDocumentChanged")]
50
+ public function get currentDocument():Document {
51
+ return _currentDocument;
52
+ }
53
+
54
+ /**
55
+ * The DocumentsManager needs a DocumentFactory instance for creating
56
+ * new documents, it should be injected through this setter.
57
+ */
58
+ public function set documentFactory(value:DocumentFactory):void {
59
+ _documentFactory = value;
60
+ }
61
+
62
+
63
+ public function DocumentsManager() {
64
+ _documents = new ArrayCollection();
65
+ _openDocuments = new ArrayCollection();
66
+ }
67
+
68
+ override public function save(resource:*):void {
69
+ if (r.content.id) {
70
+ update(r);
71
+ } else {
72
+ create(r);
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Creates a new document of the specified type and opens it with openDocument.
78
+ */
79
+ public function newDocument(type:DocumentType):void {
80
+ var doc:Document = _documentFactory.createDocument(type);
81
+ doc.content.title = "Untitled " + (documents.length + 1);
82
+ _documents.addItem(doc);
83
+
84
+ openDocument(doc);
85
+ }
86
+
87
+ /**
88
+ * Puts the specified document in the list of open documents, if it's not already
89
+ * there. Also sets it as the current document with setCurrentDocument.
90
+ */
91
+ public function openDocument(d:Document):void {
92
+ if (!_openDocuments.contains(d)) {
93
+ _openDocuments.addItem(d);
94
+ }
95
+
96
+ setCurrentDocument(d);
97
+ }
98
+
99
+ /**
100
+ * Remoes a document from the list of open documents. If the document
101
+ * was also the current document, the last document in the list of open
102
+ * documents is set as the new current document (or none if the closed
103
+ * document was the only open document).
104
+ *
105
+ * Throws an exception if the document wasn't open.
106
+ */
107
+ public function closeDocument(d:Document):void {
108
+ var index:int = _openDocuments.getItemIndex(d);
109
+
110
+ if (index != -1) {
111
+ _openDocuments.removeItemAt(index);
112
+
113
+ if (currentDocument == d && _openDocuments.length > 0) {
114
+ var doc:Document = Document(_openDocuments.getItemAt(_openDocuments.length - 1));
115
+ setCurrentDocument(doc);
116
+ } else {
117
+ setCurrentDocument(null);
118
+ }
119
+ } else {
120
+ throw new ArgumentError("Cannot close document that isn't open");
121
+ }
122
+ }
123
+
124
+ /**
125
+ * Sets the specified document as the current document, see get currentDocument.
126
+ */
127
+ protected function setCurrentDocument(d:Document):void {
128
+ _currentDocument = d;
129
+
130
+ dispatchEvent(new Event("currentDocumentChanged"));
131
+ }
132
+
133
+ /**
134
+ * Deletes the specified document. If the document was open it is
135
+ * closed using closeDocument.
136
+ *
137
+ * Throws an exception if the document isn't among the documents
138
+ * managed by this manager.
139
+ */
140
+ public function deleteDocument(d:Document):void {
141
+ if (_openDocuments.contains(d)) {
142
+ closeDocument(d);
143
+ }
144
+
145
+ var index:int = _documents.getItemIndex(d);
146
+
147
+ if (index != -1) {
148
+ _documents.removeItemAt(index);
149
+ } else {
150
+ throw new ArgumentError("Cannot remove document that doesn't exist");
151
+ }
152
+ }
153
+
154
+ }
155
+
156
+ }
@@ -0,0 +1,18 @@
1
+ package <%= base_package %>.controllers.manager {
2
+
3
+ import <%= base_package %>.models.constant.ResourceResult;
4
+ import <%= base_package %>.models.constant.ResourceAction;
5
+ import <%= base_package %>.controllers.event.ResourceEvent;
6
+ import <%= base_package %>.models.domain.Content;
7
+ import <%= base_package %>.models.domain.ContentAssignment;
8
+
9
+ import org.restfulx.Rx;
10
+ import org.restfulx.collections.ModelsCollection;
11
+
12
+ public class HomeManager extends ContentManager {
13
+
14
+ public function HomeManager() {
15
+ setModel(target);
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,23 @@
1
+ package <%= base_package %>.controllers.manager {
2
+
3
+ import flash.events.EventDispatcher;
4
+
5
+ import <%= base_package %>.models.constant.ResourceResult;
6
+ import <%= base_package %>.models.constant.ResourceAction;
7
+ import <%= base_package %>.controllers.event.ResourceEvent;
8
+ import <%= base_package %>.models.domain.Content;
9
+ import <%= base_package %>.models.domain.ContentAssignment;
10
+
11
+ import org.restfulx.Rx;
12
+ import org.restfulx.collections.ModelsCollection;
13
+
14
+ public class MainManager extends EventDispatcher {
15
+
16
+ [Bindable] public var cmsMode:Boolean;
17
+
18
+ public function MainManager() {
19
+ setModel(target);
20
+ }
21
+
22
+ }
23
+ }
@@ -0,0 +1,71 @@
1
+ package <%= base_package %>.controllers.manager
2
+ {
3
+ import <%= base_package %>.models.constant.ResourceResult;
4
+ import <%= base_package %>.models.constant.ResourceAction;
5
+ import <%= base_package %>.controllers.event.ResourceEvent;
6
+ import <%= base_package %>.models.domain.Content;
7
+ import <%= base_package %>.models.domain.ContentAssignment;
8
+
9
+ import org.restfulx.Rx;
10
+ import org.restfulx.collections.ModelsCollection;
11
+
12
+ import mx.collections.ICollectionView;
13
+
14
+ public class PagesManager extends ResourceManager {
15
+
16
+ /**
17
+ * Returns a collection of all pages that exist within the application,
18
+ */
19
+ private var _pages:ICollectionView;
20
+ [Bindable(event="documentsChanged")]
21
+ public function get pages():ICollectionView {
22
+ return _pages;
23
+ }
24
+
25
+ /**
26
+ * Returns a collection of all open pages.
27
+ */
28
+ private var _openPages:ICollectionView;
29
+ [Bindable(event="openDocumentsChanged")]
30
+ public function get openPages():ICollectionView {
31
+ return _openPages;
32
+ }
33
+
34
+ /**
35
+ * Returns the current pages, i.e. the page that is the front-most
36
+ */
37
+ private var _currentPage:Content;
38
+ [Bindable(event="currentDocumentChanged")]
39
+ public function get currentPage():Content {
40
+ return _currentPage;
41
+ }
42
+
43
+ public function PagesManager() {
44
+ setModel(currentPage);
45
+ }
46
+
47
+ override protected function beforeCreate(resource:Object):void {
48
+
49
+ }
50
+
51
+ override protected function beforeUpdate(resource:Object):void {
52
+ // children = Rx.models.index(Content);
53
+ }
54
+
55
+ override protected function beforeDestroy(resource:Object):void {
56
+ // children = Rx.models.index(Content);
57
+ }
58
+
59
+ override protected function afterCreate(resource:Object):void {
60
+ setModel(resource, ResourceAction.CREATE);
61
+ }
62
+
63
+ override protected function afterUpdate(resource:Object):void {
64
+ setModel(resource, ResourceAction.UPDATE);
65
+ }
66
+
67
+ override protected function afterDestroy(resource:Object):void {
68
+ setModel(resource, ResourceAction.DESTROY);
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,195 @@
1
+ package <%= base_package %>.controllers.manager {
2
+
3
+ import flash.events.Event;
4
+ import flash.events.EventDispatcher;
5
+ import flash.utils.getDefinitionByName;
6
+ import flash.utils.getQualifiedClassName;
7
+
8
+ import org.restfulx.Rx;
9
+ import org.restfulx.collections.ModelsCollection;
10
+ import org.restfulx.models.RxModel;
11
+ import org.restfulx.utils.RxUtils;
12
+
13
+ import <%= base_package %>.controllers.event.ResourceEvent;
14
+ import <%= base_package %>.models.constant.ResourceAction;
15
+ import <%= base_package %>.models.domain.Document;
16
+ import <%= base_package %>.models.constant.ResourceResult;
17
+ import <%= base_package %>.models.factory.ResourceFactory;
18
+
19
+ public class ResourceManager extends EventDispatcher {
20
+
21
+ /** This property is injected by the application. */
22
+ public var dispatcher:IEventDispatcher;
23
+
24
+ /** Can be used as the main resource, or as a temp/place-holder resource :) */
25
+ private var _model:RxModel; [Bindable]
26
+ public function get model():RxModel { return _model; }
27
+ public function set model(value:RxModel):void {
28
+ _model = value;
29
+ }
30
+
31
+ /**
32
+ * The ResourcesManager needs a ResourceFactory instance for creating
33
+ * new resources, it should be injected through this setter.
34
+ */
35
+ private var _resourceFactory:ResourceFactory; [Bindable]
36
+ public function get resourceFactory():ResourceFactory { return _resourceFactory; }
37
+ public function set resourceFactory(value:ResourceFactory):void {
38
+ _resourceFactory = value;
39
+ }
40
+
41
+ /**
42
+ * Just as the ResourcesModel has a resourceName property, the ResourcesModel has
43
+ * a resourceResultName property. The ModelName is listened to by the Manager, and the
44
+ * ResultName is listened to by the view, or the presModel, so the view can update
45
+ */
46
+ private var _resourceResultName:String; [Bindable]
47
+ public function get resourceResultName():String { return _resourceResultName; }
48
+ public function set resourceResultName(value:String):void {
49
+ _resourceResultName = value;
50
+ }
51
+
52
+ public function ResourceManager() {
53
+ }
54
+
55
+ // used to allow the subclass the privilege of using the _resource variable
56
+ protected function setModel(resource:Object, binder:*=null, action:String=null):void {
57
+ if (binder) { model = binder; }
58
+ if (!action) {
59
+ model = resource as RxModel;
60
+ } else if (action == ResourceAction.CREATE || action == ResourceAction.DESTROY) {
61
+ model = resourceFactory.createResource(resource as RxModel);
62
+ } else if (action == ResourceAction.UPDATE) {
63
+ model = RxUtils.clone(resource) as RxModel;
64
+ }
65
+ }
66
+
67
+ protected function dispatchResourceResult(resource:Object, nameOfResource:String,
68
+ result:String=null, action:String=null):void {
69
+
70
+ var event:ResourceEvent = new ResourceEvent(nameOfResource);
71
+ event.data = resource;
72
+ event.result = (result) ? result : ResourceResult.SUCCESS;
73
+ event.action = action;
74
+
75
+ dispatcher.dispatchEvent(event);
76
+ }
77
+
78
+ public function route(action:String, resource:Object, contentNode:String=null):void {
79
+ if (action == ResourceAction.CREATE) {
80
+ beforeCreate(resource);
81
+ create(resource);
82
+ } else if (action == ResourceAction.UPDATE) {
83
+ beforeUpdate(resource);
84
+ update(resource);
85
+ } else if (action == ResourceAction.DESTROY) {
86
+ beforeDestroy(resource);
87
+ destroy(resource);
88
+ }
89
+ }
90
+
91
+ protected function beforeCreate(resource:Object):void {
92
+
93
+ }
94
+
95
+ protected function beforeUpdate(resource:Object):void {
96
+
97
+ }
98
+
99
+ protected function beforeDestroy(resource:Object):void {
100
+
101
+ }
102
+
103
+ public function save(resource:*):void {
104
+ if (resource.content.id) {
105
+ update(resource.content);
106
+ } else {
107
+ create(resource.content);
108
+ }
109
+ }
110
+
111
+ /**
112
+ * POST /resource
113
+ * POST /resource.xml
114
+ * POST /resource.fxml
115
+ */
116
+ protected function create(resource:*):void {
117
+ var r:* = discover(resource);
118
+
119
+ var rModel:RxModel = RxUtils.clone(r) as RxModel;
120
+
121
+ rModel.create({afterCallback: afterCreate});
122
+ }
123
+
124
+ /**
125
+ * PUT /resource/1
126
+ * PUT /resource/1.xml
127
+ * PUT /resource/1.fxml
128
+ */
129
+ protected function update(resource:*):void {
130
+ var r:* = discover(resource);
131
+ r.update({afterCallback: afterUpdate});
132
+ }
133
+
134
+ /**
135
+ * DELETE /resource/1
136
+ * DELETE /resource/1.xml
137
+ * DELETE /resource/1.fxml
138
+ */
139
+ protected function destroy(resource:*):void {
140
+ var r:* = discover(resource);
141
+ r.destroy({afterCallback: afterDestroy});
142
+ }
143
+
144
+ /** After the resource returns from the Database */
145
+
146
+ protected function afterCreate(resource:Object):void {
147
+ model = resourceFactory.createResource(resource as RxModel);
148
+ }
149
+
150
+ protected function afterUpdate(resource:Object):void {
151
+ model = RxUtils.clone(resource) as RxModel;//clazz(r);
152
+ }
153
+
154
+ protected function afterDestroy(resource:Object):void {
155
+ model = resourceFactory.createResource(resource as RxModel);
156
+ }
157
+
158
+ protected function success(resource:*, binder:*=null):void {
159
+ var event:ResourceEvent = new ResourceEvent(ResourceAction.SUCCESS);
160
+ event.data = resource;
161
+ inject(event, binder);
162
+ }
163
+
164
+ protected function failure(resource:*, binder:*=null):void {
165
+ var event:ResourceEvent = new ResourceEvent(ResourceAction.FAILURE);
166
+ event.data = resource;
167
+ inject(event, binder);
168
+ }
169
+
170
+ public function clazz(resource:RxModel):Class {
171
+ var className:String = getQualifiedClassName(resource).replace( "::", "." )
172
+ var ModelClass:Class = getDefinitionByName(className) as Class;
173
+ return ModelClass;
174
+ }
175
+
176
+ protected function discover(resource:*):* {
177
+ var r:RxModel;
178
+
179
+ if (resource is RxModel) { r = resource as RxModel; }
180
+ else if (resource is ResourceEvent) { r = resource.data as RxModel; }
181
+ else if (resource is Document) { r = resource.content as RxModel; }
182
+ else { r = resource; }
183
+
184
+ return r;
185
+ }
186
+
187
+ protected function inject(event:*, binder:*=null):void {
188
+ if (binder !== null) {
189
+ binder = event;
190
+ } else {
191
+ dispatcher.dispatchEvent(event);
192
+ }
193
+ }
194
+ }
195
+ }