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,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
+ }