luca 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (377) hide show
  1. data/CHANGELOG +38 -0
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +27 -0
  4. data/README.md +45 -42
  5. data/ROADMAP +6 -29
  6. data/{assets → app/assets}/images/glyphicons-halflings-white.png +0 -0
  7. data/{assets → app/assets}/images/glyphicons-halflings.png +0 -0
  8. data/app/assets/javascripts/luca/basic.coffee +8 -0
  9. data/{src → app/assets/javascripts/luca}/components/application.coffee +153 -40
  10. data/{src → app/assets/javascripts/luca}/components/base_toolbar.coffee +2 -2
  11. data/{src → app/assets/javascripts/luca}/components/collection_loader_view.coffee +0 -0
  12. data/{src → app/assets/javascripts/luca}/components/collection_view.coffee +45 -104
  13. data/app/assets/javascripts/luca/components/controller.coffee +99 -0
  14. data/{src/core/field.coffee → app/assets/javascripts/luca/components/fields/base.coffee} +1 -1
  15. data/{src → app/assets/javascripts/luca}/components/fields/button_field.coffee +1 -2
  16. data/{src → app/assets/javascripts/luca}/components/fields/checkbox_array.coffee +0 -0
  17. data/{src → app/assets/javascripts/luca}/components/fields/checkbox_field.coffee +0 -0
  18. data/{src → app/assets/javascripts/luca}/components/fields/file_upload_field.coffee +0 -0
  19. data/{src → app/assets/javascripts/luca}/components/fields/hidden_field.coffee +0 -0
  20. data/{src → app/assets/javascripts/luca}/components/fields/label_field.coffee +0 -0
  21. data/{src → app/assets/javascripts/luca}/components/fields/select_field.coffee +8 -4
  22. data/{src → app/assets/javascripts/luca}/components/fields/text_area_field.coffee +3 -2
  23. data/{src → app/assets/javascripts/luca}/components/fields/text_field.coffee +2 -3
  24. data/{src → app/assets/javascripts/luca}/components/fields/type_ahead_field.coffee +0 -0
  25. data/{src → app/assets/javascripts/luca}/components/form_button_toolbar.coffee +0 -0
  26. data/{src → app/assets/javascripts/luca}/components/form_view.coffee +111 -44
  27. data/{src → app/assets/javascripts/luca}/components/grid_view.coffee +6 -6
  28. data/{src → app/assets/javascripts/luca}/components/index.coffee +0 -0
  29. data/app/assets/javascripts/luca/components/load_mask.coffee +8 -0
  30. data/app/assets/javascripts/luca/components/multi_collection_view.coffee +92 -0
  31. data/{src → app/assets/javascripts/luca}/components/nav_bar.coffee +5 -1
  32. data/app/assets/javascripts/luca/components/page_controller.coffee +7 -0
  33. data/{src → app/assets/javascripts/luca}/components/pagination_control.coffee +13 -13
  34. data/{src → app/assets/javascripts/luca}/components/record_manager.coffee +0 -0
  35. data/{src → app/assets/javascripts/luca}/components/router.coffee +6 -1
  36. data/app/assets/javascripts/luca/components/table_view.coffee +89 -0
  37. data/{src → app/assets/javascripts/luca}/components/template.coffee +0 -0
  38. data/{src → app/assets/javascripts/luca}/components/toolbar_dialog.coffee +0 -0
  39. data/{src → app/assets/javascripts/luca}/concerns/application_event_bindings.coffee +1 -1
  40. data/app/assets/javascripts/luca/concerns/collection_event_bindings.coffee +44 -0
  41. data/{src → app/assets/javascripts/luca}/concerns/deferrable.coffee +1 -2
  42. data/{src/plugins → app/assets/javascripts/luca/concerns}/development_tool_helpers.coffee +1 -1
  43. data/{src → app/assets/javascripts/luca}/concerns/dom_helpers.coffee +10 -7
  44. data/{src → app/assets/javascripts/luca}/concerns/enhanced_properties.coffee +0 -0
  45. data/app/assets/javascripts/luca/concerns/filterable.coffee +104 -0
  46. data/{src → app/assets/javascripts/luca}/concerns/grid_layout.coffee +0 -0
  47. data/{src → app/assets/javascripts/luca}/concerns/loadmaskable.coffee +17 -11
  48. data/{src → app/assets/javascripts/luca}/concerns/local_storage.coffee +0 -0
  49. data/{src → app/assets/javascripts/luca}/concerns/modal_view.coffee +0 -0
  50. data/{src → app/assets/javascripts/luca}/concerns/model_presenter.coffee +0 -0
  51. data/{src → app/assets/javascripts/luca}/concerns/paginatable.coffee +6 -14
  52. data/app/assets/javascripts/luca/concerns/query_collection_bindings.coffee +46 -0
  53. data/app/assets/javascripts/luca/concerns/sortable.coffee +69 -0
  54. data/app/assets/javascripts/luca/concerns/state_model.coffee +44 -0
  55. data/{src → app/assets/javascripts/luca}/concerns/templating.coffee +4 -1
  56. data/app/assets/javascripts/luca/config.coffee +49 -0
  57. data/{src → app/assets/javascripts/luca}/containers/card_view.coffee +30 -13
  58. data/{src/core → app/assets/javascripts/luca/containers}/container.coffee +57 -18
  59. data/app/assets/javascripts/luca/containers/index.coffee +2 -0
  60. data/{src → app/assets/javascripts/luca}/containers/modal_view.coffee +1 -1
  61. data/{src → app/assets/javascripts/luca}/containers/panel_toolbar.coffee +1 -1
  62. data/{src → app/assets/javascripts/luca}/containers/tab_view.coffee +1 -1
  63. data/{src → app/assets/javascripts/luca}/containers/viewport.coffee +4 -4
  64. data/{src → app/assets/javascripts/luca}/core/collection.coffee +58 -49
  65. data/{src/plugins → app/assets/javascripts/luca/core}/events.coffee +34 -2
  66. data/app/assets/javascripts/luca/core/index.coffee +12 -0
  67. data/{src → app/assets/javascripts/luca}/core/model.coffee +1 -1
  68. data/{src → app/assets/javascripts/luca}/core/observer.coffee +0 -0
  69. data/app/assets/javascripts/luca/core/panel.coffee +112 -0
  70. data/app/assets/javascripts/luca/core/registry/component_definition.coffee +318 -0
  71. data/{src → app/assets/javascripts/luca/core/registry}/concerns.coffee +0 -0
  72. data/app/assets/javascripts/luca/core/registry/index.coffee +4 -0
  73. data/app/assets/javascripts/luca/core/registry/meta_data.coffee +97 -0
  74. data/{src/core → app/assets/javascripts/luca/core/registry}/registry.coffee +10 -6
  75. data/app/assets/javascripts/luca/core/templates.coffee +47 -0
  76. data/{src → app/assets/javascripts/luca}/core/view.coffee +69 -11
  77. data/app/assets/javascripts/luca/dependencies.coffee +7 -0
  78. data/{src/tools → app/assets/javascripts/luca/development}/code_mirror_field.coffee +2 -1
  79. data/{src/tools → app/assets/javascripts/luca/development}/console.coffee +6 -5
  80. data/app/assets/javascripts/luca/development/index.coffee +2 -0
  81. data/{src → app/assets/javascripts/luca}/framework.coffee +74 -90
  82. data/app/assets/javascripts/luca/index.coffee +8 -0
  83. data/{src → app/assets/javascripts/luca}/managers/collection_manager.coffee +16 -7
  84. data/app/assets/javascripts/luca/managers/index.coffee +2 -0
  85. data/app/assets/javascripts/luca/managers/socket_manager.coffee +66 -0
  86. data/{src → app/assets/javascripts/luca}/templates/components/bootstrap_form_controls.jst.ejs +0 -0
  87. data/{src → app/assets/javascripts/luca}/templates/components/collection_loader_view.jst.ejs +0 -0
  88. data/{src → app/assets/javascripts/luca}/templates/components/form_alert.jst.ejs +0 -0
  89. data/{src → app/assets/javascripts/luca}/templates/components/grid_view.jst.ejs +0 -0
  90. data/{src → app/assets/javascripts/luca}/templates/components/grid_view_empty_text.jst.ejs +0 -0
  91. data/{src → app/assets/javascripts/luca}/templates/components/load_mask.jst.ejs +0 -0
  92. data/{src → app/assets/javascripts/luca}/templates/components/nav_bar.jst.ejs +0 -0
  93. data/{src → app/assets/javascripts/luca}/templates/components/pagination.jst.ejs +0 -0
  94. data/{src/templates → app/assets/javascripts/luca/templates/components}/table_view.jst.ejs +0 -0
  95. data/{src → app/assets/javascripts/luca}/templates/containers/basic.jst.ejs +0 -0
  96. data/{src → app/assets/javascripts/luca}/templates/containers/tab_selector_container.jst.ejs +0 -0
  97. data/{src → app/assets/javascripts/luca}/templates/containers/tab_view.jst.ejs +0 -0
  98. data/{src → app/assets/javascripts/luca}/templates/containers/toolbar_wrapper.jst.ejs +0 -0
  99. data/{src → app/assets/javascripts/luca}/templates/fields/button_field.jst.ejs +0 -0
  100. data/{src → app/assets/javascripts/luca}/templates/fields/button_field_link.jst.ejs +0 -0
  101. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_array.jst.ejs +0 -0
  102. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_array_item.jst.ejs +0 -0
  103. data/{src → app/assets/javascripts/luca}/templates/fields/checkbox_field.jst.ejs +0 -0
  104. data/{src → app/assets/javascripts/luca}/templates/fields/file_upload_field.jst.ejs +0 -0
  105. data/{src → app/assets/javascripts/luca}/templates/fields/hidden_field.jst.ejs +0 -0
  106. data/{src → app/assets/javascripts/luca}/templates/fields/select_field.jst.ejs +0 -0
  107. data/{src → app/assets/javascripts/luca}/templates/fields/text_area_field.jst.ejs +1 -1
  108. data/{src → app/assets/javascripts/luca}/templates/fields/text_field.jst.ejs +1 -1
  109. data/app/assets/javascripts/luca/util/deprecations.coffee +18 -0
  110. data/app/assets/javascripts/luca/util/index.coffee +3 -0
  111. data/app/assets/javascripts/luca/util/logging.coffee +15 -0
  112. data/{src/util.coffee → app/assets/javascripts/luca/util/luca.coffee} +20 -4
  113. data/{src/core → app/assets/javascripts/luca/util}/script_loader.coffee +0 -0
  114. data/app/assets/javascripts/luca-ui.js +1 -0
  115. data/{src/stylesheets → app/assets/stylesheets/luca}/components/checkbox_array.scss +0 -0
  116. data/app/assets/stylesheets/luca/components/form_view.scss +7 -0
  117. data/{src/stylesheets → app/assets/stylesheets/luca}/components/grid_view.scss +0 -0
  118. data/{src/stylesheets → app/assets/stylesheets/luca}/components/load_mask.scss +0 -0
  119. data/{src/stylesheets → app/assets/stylesheets/luca}/components/viewport.scss +0 -0
  120. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/container.scss +0 -0
  121. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/modal_view.scss +0 -0
  122. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/panels.scss +0 -0
  123. data/{src/stylesheets → app/assets/stylesheets/luca}/containers/tab_view.scss +0 -0
  124. data/{src/stylesheets/tools → app/assets/stylesheets/luca/development}/console.scss +0 -0
  125. data/app/assets/stylesheets/luca/development/index.css +3 -0
  126. data/app/assets/stylesheets/luca/index.css +4 -0
  127. data/{src/stylesheets → app/assets/stylesheets/luca}/normalize.scss +0 -0
  128. data/app.rb +2 -4
  129. data/lib/generators/luca/application/application_generator.rb +12 -8
  130. data/lib/generators/luca/application/templates/controller.rb +0 -2
  131. data/lib/generators/luca/application/templates/index.html.erb +12 -0
  132. data/lib/generators/luca/application/templates/index.html.haml +1 -0
  133. data/lib/generators/luca/application/templates/javascripts/application.coffee +18 -0
  134. data/lib/generators/luca/application/templates/javascripts/collection_manager.coffee +2 -0
  135. data/lib/generators/luca/application/templates/javascripts/config.coffee +3 -0
  136. data/lib/generators/luca/application/templates/javascripts/{dependencies.js.coffee → dependencies.coffee} +1 -0
  137. data/lib/generators/luca/application/templates/javascripts/home.jst.ejs +2 -0
  138. data/lib/generators/luca/application/templates/javascripts/index.coffee +15 -0
  139. data/lib/generators/luca/application/templates/javascripts/router.coffee +4 -0
  140. data/lib/luca/component_documentation.rb +72 -0
  141. data/lib/luca/rails/engine.rb +4 -0
  142. data/lib/luca/rails/version.rb +1 -1
  143. data/lib/luca.rb +1 -1
  144. data/lib/railties/luca/tasks.rake +31 -0
  145. data/luca.gemspec +1 -0
  146. data/spec/components/controller_spec.coffee +62 -0
  147. data/spec/components/form_view_spec.coffee +4 -0
  148. data/spec/concerns/collection_event_bindings_spec.coffee +15 -0
  149. data/spec/concerns/dom_helpers_spec.coffee +2 -2
  150. data/spec/concerns/filterable_spec.coffee +4 -4
  151. data/spec/concerns/state_model_spec.coffee +50 -0
  152. data/spec/core/collection_spec.coffee +25 -0
  153. data/spec/{concerns_spec.coffee → core/concerns_spec.coffee} +0 -0
  154. data/spec/core/container_spec.coffee +57 -5
  155. data/spec/core/define_spec.coffee +116 -0
  156. data/spec/core/events_spec.coffee +26 -0
  157. data/spec/core/field_spec.coffee +4 -0
  158. data/spec/{framework_spec.coffee → core/framework_spec.coffee} +31 -2
  159. data/spec/{util_spec.coffee → core/util_spec.coffee} +2 -2
  160. data/spec/core/view_spec.coffee +65 -1
  161. data/spec/dependencies/index.coffee +3 -0
  162. data/{assets/javascripts → spec}/dependencies/jasmine-html.js +0 -0
  163. data/{assets/javascripts → spec}/dependencies/jasmine.js +0 -0
  164. data/{assets/javascripts → spec}/dependencies/sinon.js +0 -0
  165. data/spec/luca-spec.coffee +9 -0
  166. data/vendor/assets/javascripts/backbone-ext.js +21 -0
  167. data/vendor/assets/javascripts/backbone-min.js +38 -0
  168. data/vendor/assets/javascripts/backbone-query.min.js +1 -0
  169. data/vendor/assets/javascripts/bootstrap.min.js +7 -0
  170. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-coffeescript.js +0 -0
  171. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-css.js +0 -0
  172. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-html.js +0 -0
  173. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-javascript.js +0 -0
  174. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-less.js +0 -0
  175. data/vendor/assets/javascripts/codemirror-ui.js +503 -0
  176. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror-vim.js +0 -0
  177. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/codemirror.js +0 -0
  178. data/vendor/assets/javascripts/inflections.js +656 -0
  179. data/vendor/assets/javascripts/jasmine-html.js +190 -0
  180. data/vendor/assets/javascripts/jasmine.js +2476 -0
  181. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/jquery.js +0 -0
  182. data/vendor/assets/javascripts/luca-spec.js +11 -0
  183. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/modal.js +0 -0
  184. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/modernizr.min.js +0 -0
  185. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/prettify.js +0 -0
  186. data/vendor/assets/javascripts/sinon.js +3469 -0
  187. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/spin-min.js +0 -0
  188. data/{assets/javascripts/dependencies → vendor/assets/javascripts}/underscore-min.js +0 -0
  189. data/vendor/assets/javascripts/underscore-string.min.js +1 -0
  190. data/vendor/assets/stylesheets/bootstrap-responsive.min.css +9 -0
  191. data/vendor/assets/stylesheets/bootstrap.min.css +9 -0
  192. data/{assets → vendor/assets}/stylesheets/codemirror-blackboard.css +0 -0
  193. data/{assets → vendor/assets}/stylesheets/codemirror-monokai.css +0 -0
  194. data/{assets → vendor/assets}/stylesheets/codemirror.css +0 -0
  195. data/{assets → vendor/assets}/stylesheets/jasmine.css +0 -0
  196. data/vendor/assets/stylesheets/luca-ui.css +0 -601
  197. data/views/jasmine.erb +2 -2
  198. metadata +190 -299
  199. data/assets/javascripts/dependencies/backbone-min.js +0 -37
  200. data/assets/javascripts/dependencies/backbone-query.min.js +0 -1
  201. data/assets/javascripts/dependencies/bootstrap.min.js +0 -7
  202. data/assets/javascripts/dependencies/coffee-script.js +0 -12189
  203. data/assets/javascripts/dependencies/underscore-string.min.js +0 -14
  204. data/assets/javascripts/dependencies.coffee +0 -5
  205. data/assets/javascripts/luca/index.coffee +0 -1
  206. data/assets/javascripts/luca-templates.js +0 -1
  207. data/assets/javascripts/luca-ui-base.coffee +0 -1
  208. data/assets/javascripts/luca-ui-bootstrap.js +0 -1
  209. data/assets/javascripts/luca-ui-development-tools.coffee +0 -9
  210. data/assets/javascripts/luca-ui-full.js +0 -3
  211. data/assets/javascripts/luca-ui-spec.coffee +0 -2
  212. data/assets/javascripts/luca-ui.js +0 -3
  213. data/assets/javascripts/sandbox/application.coffee +0 -57
  214. data/assets/javascripts/sandbox/config.coffee +0 -7
  215. data/assets/javascripts/sandbox/router.coffee +0 -24
  216. data/assets/javascripts/sandbox/templates/builder/component_list.luca +0 -1
  217. data/assets/javascripts/sandbox/templates/builder.luca +0 -2
  218. data/assets/javascripts/sandbox/templates/main.luca +0 -53
  219. data/assets/javascripts/sandbox/templates/sandbox/docs_index.luca +0 -1
  220. data/assets/javascripts/sandbox/templates/sandbox/navigation.luca +0 -8
  221. data/assets/javascripts/sandbox/templates/sandbox/readme.luca +0 -30
  222. data/assets/javascripts/sandbox/templates/sandbox.luca +0 -1
  223. data/assets/javascripts/sandbox/views/builder/builder_canvas.coffee +0 -3
  224. data/assets/javascripts/sandbox/views/builder/builder_editor.coffee +0 -6
  225. data/assets/javascripts/sandbox/views/builder/component_list.coffee +0 -38
  226. data/assets/javascripts/sandbox/views/builder/project_browser.coffee +0 -14
  227. data/assets/javascripts/sandbox/views/builder.coffee +0 -133
  228. data/assets/javascripts/sandbox/views/docs_controller.coffee +0 -7
  229. data/assets/javascripts/sandbox/views/inspector/instance_filter.coffee +0 -18
  230. data/assets/javascripts/sandbox/views/inspector/instance_list.coffee +0 -0
  231. data/assets/javascripts/sandbox/views/inspector.coffee +0 -11
  232. data/assets/javascripts/sandbox/views/top_navigation.coffee +0 -4
  233. data/assets/javascripts/sandbox.coffee +0 -7
  234. data/assets/javascripts/spec-dependencies.coffee +0 -4
  235. data/assets/stylesheets/bootstrap-responsive.min.css +0 -2
  236. data/assets/stylesheets/bootstrap.min.css +0 -727
  237. data/assets/stylesheets/luca-ui-bootstrap.css +0 -4
  238. data/assets/stylesheets/luca-ui-development-tools.css +0 -5
  239. data/assets/stylesheets/luca-ui-full.css +0 -3
  240. data/assets/stylesheets/luca-ui-spec.css +0 -3
  241. data/assets/stylesheets/luca-ui.css +0 -3
  242. data/assets/stylesheets/prettify.css +0 -40
  243. data/assets/stylesheets/sandbox/builder.scss +0 -79
  244. data/assets/stylesheets/sandbox/sandbox.scss +0 -18
  245. data/assets/stylesheets/sandbox.css +0 -3
  246. data/assets/stylesheets/themes/amelia-bootstrap.css +0 -826
  247. data/assets/stylesheets/themes/slate-bootstrap.css +0 -797
  248. data/assets/stylesheets/themes/superhero-bootstrap.css +0 -830
  249. data/lib/generators/luca/application/templates/javascripts/application.js +0 -28
  250. data/lib/generators/luca/application/templates/javascripts/application.js.coffee +0 -20
  251. data/lib/generators/luca/application/templates/javascripts/config.js +0 -15
  252. data/lib/generators/luca/application/templates/javascripts/config.js.coffee +0 -9
  253. data/lib/generators/luca/application/templates/javascripts/dependencies.js +0 -5
  254. data/lib/generators/luca/application/templates/javascripts/index.js +0 -9
  255. data/lib/generators/luca/application/templates/javascripts/index.js.coffee +0 -9
  256. data/lib/generators/luca/application/templates/javascripts/main.js +0 -8
  257. data/lib/generators/luca/application/templates/javascripts/main.js.coffee +0 -3
  258. data/lib/generators/luca/application/templates/javascripts/main.jst.ejs +0 -1
  259. data/lib/generators/luca/application/templates/javascripts/router.js +0 -12
  260. data/lib/generators/luca/application/templates/javascripts/router.js.coffee +0 -7
  261. data/spec/containers/column_view_spec.coffee +0 -0
  262. data/spec/containers/split_view_spec.coffee +0 -0
  263. data/spec/define_spec.coffee +0 -13
  264. data/src/components/controller.coffee +0 -65
  265. data/src/components/load_mask.coffee +0 -3
  266. data/src/components/multi_collection_view.coffee +0 -121
  267. data/src/components/page_controller.coffee +0 -2
  268. data/src/components/table_view.coffee +0 -62
  269. data/src/concerns/collection_event_bindings.coffee +0 -26
  270. data/src/concerns/filterable.coffee +0 -82
  271. data/src/concerns/state_model.coffee +0 -16
  272. data/src/containers/column_view.coffee +0 -42
  273. data/src/containers/page_view.coffee +0 -2
  274. data/src/containers/panel_view.coffee +0 -23
  275. data/src/containers/split_view.coffee +0 -8
  276. data/src/core/core.coffee +0 -0
  277. data/src/core/meta_data.coffee +0 -37
  278. data/src/core/panel.coffee +0 -118
  279. data/src/define.coffee +0 -170
  280. data/src/index.coffee +0 -25
  281. data/src/managers/socket_manager.coffee +0 -54
  282. data/src/samples/definition.coffee +0 -49
  283. data/src/stylesheets/base.scss +0 -0
  284. data/src/stylesheets/components/form_view.scss +0 -59
  285. data/src/stylesheets/components/toolbar.scss +0 -0
  286. data/src/stylesheets/tools/class_browser.scss +0 -32
  287. data/src/stylesheets/tools/code_editor.scss +0 -24
  288. data/src/stylesheets/tools/component_tester.scss +0 -26
  289. data/src/tools/application_inspector.coffee +0 -2
  290. data/src/tools/code_editor.coffee +0 -258
  291. data/src/tools/coffee_script_editor.coffee +0 -82
  292. data/src/tools/collection_inspector.coffee +0 -4
  293. data/src/tools/collections/components.coffee +0 -59
  294. data/src/tools/collections/instances.coffee +0 -15
  295. data/src/tools/component_tester.coffee +0 -462
  296. data/src/tools/models/components.coffee +0 -25
  297. data/src/tools/models/instance.coffee +0 -2
  298. data/src/tools/templates/component_tester/help.luca +0 -14
  299. data/vendor/assets/javascripts/luca-ui-base.js +0 -5304
  300. data/vendor/assets/javascripts/luca-ui-bootstrap.js +0 -9
  301. data/vendor/assets/javascripts/luca-ui-development-tools.js +0 -18561
  302. data/vendor/assets/javascripts/luca-ui-development-tools.min.js +0 -15
  303. data/vendor/assets/javascripts/luca-ui-full.js +0 -6319
  304. data/vendor/assets/javascripts/luca-ui-full.min.js +0 -9
  305. data/vendor/assets/javascripts/luca-ui-spec.js +0 -6815
  306. data/vendor/assets/javascripts/luca-ui-templates.js +0 -92
  307. data/vendor/assets/javascripts/luca-ui.js +0 -6234
  308. data/vendor/assets/javascripts/luca-ui.min.js +0 -5
  309. data/vendor/assets/luca-ui/base.css +0 -85
  310. data/vendor/assets/luca-ui/components/application.js +0 -91
  311. data/vendor/assets/luca-ui/components/base_toolbar.js +0 -23
  312. data/vendor/assets/luca-ui/components/controller.js +0 -38
  313. data/vendor/assets/luca-ui/components/fields/button_field.js +0 -45
  314. data/vendor/assets/luca-ui/components/fields/checkbox_field.js +0 -43
  315. data/vendor/assets/luca-ui/components/fields/file_upload_field.js +0 -20
  316. data/vendor/assets/luca-ui/components/fields/hidden_field.js +0 -20
  317. data/vendor/assets/luca-ui/components/fields/select_field.js +0 -97
  318. data/vendor/assets/luca-ui/components/fields/text_area_field.js +0 -48
  319. data/vendor/assets/luca-ui/components/fields/text_field.js +0 -46
  320. data/vendor/assets/luca-ui/components/fields/type_ahead_field.js +0 -13
  321. data/vendor/assets/luca-ui/components/form_button_toolbar.js +0 -32
  322. data/vendor/assets/luca-ui/components/form_view.css +0 -32
  323. data/vendor/assets/luca-ui/components/form_view.js +0 -207
  324. data/vendor/assets/luca-ui/components/grid_view.css +0 -76
  325. data/vendor/assets/luca-ui/components/grid_view.js +0 -202
  326. data/vendor/assets/luca-ui/components/record_manager.js +0 -207
  327. data/vendor/assets/luca-ui/components/router.js +0 -36
  328. data/vendor/assets/luca-ui/components/template.js +0 -26
  329. data/vendor/assets/luca-ui/components/toolbar.css +0 -11
  330. data/vendor/assets/luca-ui/containers/card_view.js +0 -98
  331. data/vendor/assets/luca-ui/containers/column_view.js +0 -52
  332. data/vendor/assets/luca-ui/containers/container.css +0 -3
  333. data/vendor/assets/luca-ui/containers/modal_view.css +0 -0
  334. data/vendor/assets/luca-ui/containers/modal_view.js +0 -87
  335. data/vendor/assets/luca-ui/containers/panel_view.js +0 -34
  336. data/vendor/assets/luca-ui/containers/split_view.js +0 -13
  337. data/vendor/assets/luca-ui/containers/tab_view.css +0 -16
  338. data/vendor/assets/luca-ui/containers/tab_view.js +0 -80
  339. data/vendor/assets/luca-ui/containers/viewport.js +0 -18
  340. data/vendor/assets/luca-ui/core/collection.js +0 -221
  341. data/vendor/assets/luca-ui/core/container.js +0 -205
  342. data/vendor/assets/luca-ui/core/field.js +0 -59
  343. data/vendor/assets/luca-ui/core/observer.js +0 -42
  344. data/vendor/assets/luca-ui/core/view.js +0 -127
  345. data/vendor/assets/luca-ui/framework.js +0 -110
  346. data/vendor/assets/luca-ui/index.js +0 -5
  347. data/vendor/assets/luca-ui/managers/collection_manager.js +0 -98
  348. data/vendor/assets/luca-ui/managers/socket_manager.js +0 -52
  349. data/vendor/assets/luca-ui/modules/deferrable.js +0 -21
  350. data/vendor/assets/luca-ui/modules/local_storage.js +0 -81
  351. data/vendor/assets/luca-ui/normalize.css +0 -359
  352. data/vendor/assets/luca-ui/stylesheets/base.css +0 -85
  353. data/vendor/assets/luca-ui/stylesheets/components/form_view.css +0 -32
  354. data/vendor/assets/luca-ui/stylesheets/components/grid_view.css +0 -76
  355. data/vendor/assets/luca-ui/stylesheets/components/toolbar.css +0 -11
  356. data/vendor/assets/luca-ui/stylesheets/containers/container.css +0 -3
  357. data/vendor/assets/luca-ui/stylesheets/containers/modal_view.css +0 -0
  358. data/vendor/assets/luca-ui/stylesheets/containers/tab_view.css +0 -16
  359. data/vendor/assets/luca-ui/stylesheets/normalize.css +0 -359
  360. data/vendor/assets/luca-ui/templates/components/bootstrap_form_controls.js +0 -4
  361. data/vendor/assets/luca-ui/templates/components/form_view.js +0 -4
  362. data/vendor/assets/luca-ui/templates/components/grid_view.js +0 -4
  363. data/vendor/assets/luca-ui/templates/components/grid_view_empty_text.js +0 -4
  364. data/vendor/assets/luca-ui/templates/containers/basic.js +0 -4
  365. data/vendor/assets/luca-ui/templates/containers/tab_selector_container.js +0 -4
  366. data/vendor/assets/luca-ui/templates/containers/tab_view.js +0 -4
  367. data/vendor/assets/luca-ui/templates/containers/toolbar_wrapper.js +0 -4
  368. data/vendor/assets/luca-ui/templates/fields/button_field.js +0 -4
  369. data/vendor/assets/luca-ui/templates/fields/button_field_link.js +0 -4
  370. data/vendor/assets/luca-ui/templates/fields/checkbox_field.js +0 -4
  371. data/vendor/assets/luca-ui/templates/fields/file_upload_field.js +0 -4
  372. data/vendor/assets/luca-ui/templates/fields/hidden_field.js +0 -4
  373. data/vendor/assets/luca-ui/templates/fields/select_field.js +0 -4
  374. data/vendor/assets/luca-ui/templates/fields/text_area_field.js +0 -4
  375. data/vendor/assets/luca-ui/templates/fields/text_field.js +0 -4
  376. data/vendor/assets/luca-ui/templates/sample/contents.js +0 -4
  377. data/vendor/assets/luca-ui/templates/sample/welcome.js +0 -4
@@ -0,0 +1,503 @@
1
+ /* Demonstration of embedding CodeMirror in a bigger application. The
2
+ * interface defined here is a mess of prompts and confirms, and
3
+ * should probably not be used in a real project.
4
+ */
5
+ //var CodeMirrorUI = Class.create();
6
+
7
+ function CodeMirrorUI(place, options, mirrorOptions) {
8
+ this.initialize(place, options, mirrorOptions);
9
+ }
10
+
11
+ CodeMirrorUI.prototype = {
12
+
13
+ initialize: function(textarea, options, mirrorOptions) {
14
+ var defaultOptions = {
15
+ searchMode: 'popup', // other options are 'inline' and 'dialog'. The 'dialog' option needs work.
16
+ imagePath: 'images/silk',
17
+ path: 'js',
18
+ buttons: ['search', 'undo', 'redo', 'jump', 'reindentSelection', 'reindent','about'],
19
+ saveCallback: function() {},
20
+ }
21
+ this.textarea = textarea
22
+ this.options = options;
23
+ this.setDefaults(this.options, defaultOptions);
24
+
25
+ this.buttonDefs = {
26
+ 'save': ["Save", "save", this.options.imagePath + "/page_save.png", this.save],
27
+ 'search': ["Search/Replace", "find_replace_popup", this.options.imagePath + "/find.png", this.find_replace_popup],
28
+ 'searchClose': ["Close", "find_replace_popup_close", this.options.imagePath + "/cancel.png", this.find_replace_popup_close],
29
+ 'searchDialog': ["Search/Replace", "find_replace_window", this.options.imagePath + "/find.png", this.find_replace_window],
30
+ 'undo': ["Undo", "undo", this.options.imagePath + "/arrow_undo.png", this.undo],
31
+ 'redo': ["Redo", "redo", this.options.imagePath + "/arrow_redo.png", this.redo],
32
+ 'jump': ["Jump to line #", "jump", this.options.imagePath + "/page_go.png", this.jump],
33
+ 'reindentSelection': ["Reformat selection", "reindentSelect", this.options.imagePath + "/text_indent.png", this.reindentSelection],
34
+ 'reindent': ["Reformat whole document", "reindent", this.options.imagePath + "/page_refresh.png", this.reindent],
35
+ 'about': ["About CodeMirror-UI", "about", this.options.imagePath + "/help.png", this.about]
36
+ };
37
+
38
+ //place = CodeMirror.replace(place)
39
+
40
+ this.home = document.createElement("div");
41
+ this.textarea.parentNode.insertBefore(this.home, this.textarea);
42
+ /*if (place.appendChild)
43
+ place.appendChild(this.home);
44
+ else
45
+ place(this.home);
46
+ */
47
+ this.self = this;
48
+
49
+ var onChange = this.editorChanged.cmuiBind(this);
50
+ // preserve custom onChance handler
51
+ if (mirrorOptions.onChange) {
52
+ mirrorOptions.onChange = function() {
53
+ mirrorOptions.onChange();
54
+ onChange();
55
+ }
56
+ } else {
57
+ mirrorOptions.onChange = onChange;
58
+ }
59
+ mir = CodeMirror.fromTextArea(this.textarea, mirrorOptions);
60
+ //console.log(mir);
61
+ this.mirror = mir;
62
+
63
+ this.initButtons();
64
+
65
+ //this.initWordWrapControl(); // CodeMirror v2 does not support word wrapping
66
+
67
+ if (this.options.searchMode == 'inline') {
68
+ this.initFindControl();
69
+ } else if (this.options.searchMode == 'popup') {
70
+ this.initPopupFindControl();
71
+ }
72
+
73
+ if (this.saveButton) this.addClass(this.saveButton,'inactive');
74
+ if (this.undoButton) this.addClass(this.undoButton,'inactive');
75
+ if (this.redoButton) this.addClass(this.redoButton,'inactive');
76
+ },
77
+ setDefaults: function(object, defaults) {
78
+ for (var option in defaults) {
79
+ if (!object.hasOwnProperty(option))
80
+ object[option] = defaults[option];
81
+ }
82
+ },
83
+ toTextArea: function() {
84
+ this.home.parentNode.removeChild(this.home);
85
+ this.mirror.toTextArea();
86
+ },
87
+ initButtons: function() {
88
+ this.buttonFrame = document.createElement("div");
89
+ this.buttonFrame.className = "codemirror-ui-clearfix codemirror-ui-button-frame";
90
+ this.home.appendChild(this.buttonFrame);
91
+ for (var i = 0; i < this.options.buttons.length; i++) {
92
+ var buttonId = this.options.buttons[i];
93
+ var buttonDef = this.buttonDefs[buttonId];
94
+ this.addButton(buttonDef[0], buttonDef[1], buttonDef[2], buttonDef[3], this.buttonFrame);
95
+ }
96
+
97
+ //this.makeButton("Search", "search");
98
+ //this.makeButton("Replace", "replace");
99
+ //this.makeButton("Current line", "line");
100
+ //this.makeButton("Jump to line", "jump");
101
+ //this.makeButton("Insert constructor", "macro");
102
+ //this.makeButton("Indent all", "reindent");
103
+ },
104
+ /*
105
+ * This is left over from the MirrorFrame demo.
106
+ * Get rid of it quick.
107
+ */
108
+ /*
109
+ makeButton : function(name, action){
110
+ var button = document.createElement("input");
111
+ button.type = "button";
112
+ button.value = name;
113
+ this.home.appendChild(button);
114
+ button.onclick = function(){
115
+ self[action].call(self);
116
+ };
117
+ },
118
+ */
119
+ createFindBar: function() {
120
+ var findBar = document.createElement("div");
121
+ findBar.className = "codemirror-ui-find-bar";
122
+
123
+ this.findString = document.createElement("input");
124
+ this.findString.type = "text";
125
+ this.findString.size = 8;
126
+
127
+ this.findButton = document.createElement("input");
128
+ this.findButton.type = "button";
129
+ this.findButton.value = "Find";
130
+ this.findButton.onclick = function(){this.find()}.cmuiBind(this);
131
+
132
+ this.connect(this.findString, "keyup", function(e){
133
+ var code = e.keyCode;
134
+ if (code == 13){
135
+ this.find(this.mirror.getCursor(false))
136
+ }else{
137
+ if(!this.findString.value == ""){
138
+ this.find(this.mirror.getCursor(true))
139
+ }
140
+ }
141
+ this.findString.focus();
142
+
143
+ }.cmuiBind(this) );
144
+
145
+ var regLabel = document.createElement("label");
146
+ regLabel.title = "Regular Expressions"
147
+ this.regex = document.createElement("input");
148
+ this.regex.type = "checkbox"
149
+ this.regex.className = "codemirror-ui-checkbox"
150
+ regLabel.appendChild(this.regex);
151
+ regLabel.appendChild(document.createTextNode("RegEx"));
152
+
153
+ var caseLabel = document.createElement("label");
154
+ caseLabel.title = "Case Sensitive"
155
+ this.caseSensitive = document.createElement("input");
156
+ this.caseSensitive.type = "checkbox"
157
+ this.caseSensitive.className = "codemirror-ui-checkbox"
158
+ caseLabel.appendChild(this.caseSensitive);
159
+ caseLabel.appendChild(document.createTextNode("A/a"));
160
+
161
+ this.replaceString = document.createElement("input");
162
+ this.replaceString.type = "text";
163
+ this.replaceString.size = 8;
164
+
165
+ this.connect(this.replaceString, "keyup", function(e){
166
+ var code = e.keyCode;
167
+ if (code == 13){
168
+ this.replace()
169
+ }
170
+ }.cmuiBind(this) );
171
+
172
+ this.replaceButton = document.createElement("input");
173
+ this.replaceButton.type = "button";
174
+ this.replaceButton.value = "Replace";
175
+ this.replaceButton.onclick = this.replace.cmuiBind(this);
176
+
177
+ var replaceAllLabel = document.createElement("label");
178
+ replaceAllLabel.title = "Replace All"
179
+ this.replaceAll = document.createElement("input");
180
+ this.replaceAll.type = "checkbox"
181
+ this.replaceAll.className = "codemirror-ui-checkbox"
182
+ replaceAllLabel.appendChild(this.replaceAll);
183
+ replaceAllLabel.appendChild(document.createTextNode("All"));
184
+
185
+ findBar.appendChild(this.findString);
186
+ findBar.appendChild(this.findButton);
187
+ findBar.appendChild(caseLabel);
188
+ findBar.appendChild(regLabel);
189
+
190
+ findBar.appendChild(this.replaceString);
191
+ findBar.appendChild(this.replaceButton);
192
+ findBar.appendChild(replaceAllLabel);
193
+ return findBar;
194
+ },
195
+ initPopupFindControl: function() {
196
+ var findBar = this.createFindBar();
197
+
198
+ this.popupFindWrap = document.createElement("div");
199
+ this.popupFindWrap.className = "codemirror-ui-popup-find-wrap";
200
+
201
+ this.popupFindWrap.appendChild(findBar);
202
+
203
+ var buttonDef = this.buttonDefs['searchClose'];
204
+ this.addButton(buttonDef[0], buttonDef[1], buttonDef[2], buttonDef[3], this.popupFindWrap);
205
+
206
+ this.buttonFrame.appendChild(this.popupFindWrap);
207
+
208
+ },
209
+ initFindControl: function() {
210
+ var findBar = this.createFindBar();
211
+ this.buttonFrame.appendChild(findBar);
212
+ },
213
+ find: function( start ) {
214
+ var isCaseSensitive = this.caseSensitive.checked;
215
+ if(start == null){
216
+ start = this.mirror.getCursor();
217
+ }
218
+ var findString = this.findString.value;
219
+ if (findString == null || findString == '') {
220
+ alert('You must enter something to search for.');
221
+ return;
222
+ }
223
+ if (this.regex.checked) {
224
+ findString = new RegExp(findString, !isCaseSensitive ? "i" : "");
225
+ }
226
+
227
+ this.cursor = this.mirror.getSearchCursor(findString, start, !isCaseSensitive );
228
+ var found = this.cursor.findNext();
229
+ if (found) {
230
+ this.mirror.setSelection(this.cursor.from(),this.cursor.to())
231
+ //this.cursor.select();
232
+ } else {
233
+ if (confirm("No more matches. Should we start from the top?")) {
234
+ this.cursor = this.mirror.getSearchCursor(findString, 0, !isCaseSensitive);
235
+ found = this.cursor.findNext();
236
+ if (found) {
237
+ this.mirror.setSelection(this.cursor.from(),this.cursor.to())
238
+ //this.cursor.select();
239
+ } else {
240
+ alert("No matches found.");
241
+ }
242
+ }
243
+ }
244
+ },
245
+ replace: function() {
246
+ var findString = this.findString.value,
247
+ replaceString = this.replaceString.value,
248
+ isCaseSensitive = this.caseSensitive.checked,
249
+ isRegex = this.regex.checked,
250
+ regFindString = isRegex ? new RegExp(findString, !isCaseSensitive ? "i" : "") : "";
251
+
252
+ if (this.replaceAll.checked) {
253
+ var cursor = this.mirror.getSearchCursor(isRegex ? regFindString : findString, 0, !isCaseSensitive);
254
+ while (cursor.findNext())
255
+ this.mirror.replaceRange(
256
+ isRegex ? cursor.pos.match[0].replace(regFindString, replaceString) : replaceString
257
+ ,cursor.from(),cursor.to());
258
+ //cursor.replace(this.replaceString.value);
259
+ } else {
260
+ this.mirror.replaceRange(
261
+ isRegex ? this.cursor.pos.match[0].replace(regFindString, replaceString) : replaceString
262
+ ,this.cursor.from(),this.cursor.to())
263
+ //this.cursor.replace(this.replaceString.value);
264
+ this.find();
265
+ }
266
+ },
267
+ initWordWrapControl: function() {
268
+ var wrapDiv = document.createElement("div");
269
+ wrapDiv.className = "codemirror-ui-wrap"
270
+
271
+ var label = document.createElement("label");
272
+
273
+ this.wordWrap = document.createElement("input");
274
+ this.wordWrap.type = "checkbox"
275
+ this.wordWrap.checked = true;
276
+ label.appendChild(this.wordWrap);
277
+ label.appendChild(document.createTextNode("Word Wrap"));
278
+ this.wordWrap.onchange = this.toggleWordWrap.cmuiBind(this);
279
+ wrapDiv.appendChild(label);
280
+ this.buttonFrame.appendChild(wrapDiv);
281
+ },
282
+ toggleWordWrap: function() {
283
+ if (this.wordWrap.checked) {
284
+ this.mirror.setTextWrapping("nowrap");
285
+ } else {
286
+ this.mirror.setTextWrapping("");
287
+ }
288
+ },
289
+ addButton: function(name, action, image, func, frame) {
290
+ var button = document.createElement("a");
291
+ //button.href = "#";
292
+ button.className = "codemirror-ui-button " + action;
293
+ button.title = name;
294
+ button.func = func.cmuiBind(this);
295
+ button.onclick = function(event) {
296
+ //alert(event.target);
297
+ event.target.func();
298
+ return false;
299
+ //this.self[action].call(this);
300
+ //eval("this."+action)();
301
+ }
302
+ .cmuiBind(this, func);
303
+ var img = document.createElement("img");
304
+ img.src = image;
305
+ img.border = 0;
306
+ img.func = func.cmuiBind(this);
307
+ button.appendChild(img);
308
+ frame.appendChild(button);
309
+ if (action == 'save') {
310
+ this.saveButton = button;
311
+ }
312
+ if (action == 'undo') {
313
+ this.undoButton = button;
314
+ }
315
+ if (action == 'redo') {
316
+ this.redoButton = button;
317
+ }
318
+ },
319
+ classNameRegex: function(className) {
320
+ var regex = new RegExp("(.*) *" + className + " *(.*)");
321
+ return regex;
322
+ },
323
+ addClass: function(element, className) {
324
+ if (!element.className.match(this.classNameRegex(className))) {
325
+ element.className += " " + className;
326
+ }
327
+ },
328
+ removeClass: function(element, className) {
329
+ var m = element.className.match(this.classNameRegex(className))
330
+ if (m) {
331
+ element.className = m[1] + " " + m[2];
332
+ }
333
+ },
334
+ editorChanged: function() {
335
+ if(!this.mirror) {
336
+ return
337
+ }
338
+ var his = this.mirror.historySize();
339
+ if (his['undo'] > 0) {
340
+ this.removeClass(this.saveButton, 'inactive');
341
+ this.removeClass(this.undoButton, 'inactive');
342
+ } else {
343
+ this.addClass(this.saveButton, 'inactive');
344
+ this.addClass(this.undoButton, 'inactive');
345
+ }
346
+ if (his['redo'] > 0) {
347
+ this.removeClass(this.redoButton, 'inactive');
348
+ } else {
349
+ this.addClass(this.redoButton, 'inactive');
350
+ }
351
+ //alert("undo size = " + his['undo'] + " and redo size = " + his['redo']);
352
+ },
353
+ save: function() {
354
+ this.options.saveCallback();
355
+ this.addClass(this.saveButton, 'inactive');
356
+ },
357
+ undo: function() {
358
+ this.mirror.undo();
359
+ },
360
+ redo: function() {
361
+ this.mirror.redo();
362
+ },
363
+ replaceSelection: function(newVal) {
364
+ this.mirror.replaceSelection(newVal);
365
+ this.searchWindow.focus();
366
+ },
367
+ raise_search_window: function() {
368
+ //alert('raising window!');
369
+ this.searchWindow.focus();
370
+ },
371
+ find_replace_window: function() {
372
+ if (this.searchWindow == null) {
373
+ this.searchWindow = window.open(this.options.path + "find_replace.html", "mywindow", "scrollbars=1,width=400,height=350,modal=yes");
374
+ this.searchWindow.codeMirrorUI = this;
375
+ }
376
+ this.searchWindow.focus();
377
+ },
378
+ find_replace_popup: function() {
379
+ //alert('Hello!');
380
+ this.popupFindWrap.className = "codemirror-ui-popup-find-wrap active";
381
+ this.findString.focus();
382
+ },
383
+ find_replace_popup_close: function() {
384
+ //alert('Hello!');
385
+ this.popupFindWrap.className = "codemirror-ui-popup-find-wrap";
386
+ },
387
+ /*
388
+ find_replace: function(){
389
+ this.find_replace = document.createElement("div");
390
+ this.find_replace.className = "codemirror-search-replace";
391
+ this.find_replace.innerHTML = "Just a test!";
392
+ this.home.appendChild(this.find_replace);
393
+ },
394
+
395
+ search: function(){
396
+ var text = prompt("Enter search term:", "");
397
+ if (!text)
398
+ return;
399
+
400
+ var first = true;
401
+ do {
402
+ var cursor = this.mirror.getSearchCursor(text, first);
403
+ first = false;
404
+ while (cursor.findNext()) {
405
+ cursor.select();
406
+ if (!confirm("Search again?"))
407
+ return;
408
+ }
409
+ }
410
+ while (confirm("End of document reached. Start over?"));
411
+ },
412
+
413
+ replace: function(){
414
+ // This is a replace-all, but it is possible to implement a
415
+ // prompting replace.
416
+ var from = prompt("Enter search string:", ""), to;
417
+ if (from)
418
+ to = prompt("What should it be replaced with?", "");
419
+ if (to == null)
420
+ return;
421
+
422
+ var cursor = this.mirror.getSearchCursor(from, false);
423
+ while (cursor.findNext())
424
+ cursor.replace(to);
425
+ },
426
+ */
427
+ jump: function() {
428
+ var line = prompt("Jump to line:", "");
429
+ if (line && !isNaN(Number(line))) {
430
+ this.mirror.setCursor(Number(line),0);
431
+ this.mirror.setSelection({line:Number(line),ch:0},{line:Number(line)+1,ch:0});
432
+ this.mirror.focus();
433
+ }
434
+ },
435
+ /*
436
+ line: function(){
437
+ alert("The cursor is currently at line " + this.mirror.currentLine());
438
+ this.mirror.focus();
439
+ },
440
+
441
+ macro: function(){
442
+ var name = prompt("Name your constructor:", "");
443
+ if (name)
444
+ this.mirror.replaceSelection("function " + name + "() {\n \n}\n\n" + name + ".prototype = {\n \n};\n");
445
+ },
446
+ */
447
+ reindent: function() {
448
+ var lineCount = this.mirror.lineCount();
449
+ for(var line = 0; line < lineCount; line++) {
450
+ this.mirror.indentLine(line);
451
+ }
452
+ },
453
+ about : function() {
454
+ string = "CodeMirror-UI was written by Jeremy Green (http://www.octolabs.com/) as a light interface around CodeMirror by Marijn Haverbeke (http://codemirror.net)."
455
+ string += "\n\n"
456
+ string += "Documentation and the code can be found at https://github.com/jagthedrummer/codemirror-ui/."
457
+ alert(string);
458
+ },
459
+ reindentSelection: function() {
460
+ var cur = this.mirror.getCursor()
461
+ //console.log(cur)
462
+ var start = this.mirror.getCursor(true)["line"]
463
+ var end = this.mirror.getCursor(false)["line"]
464
+ for(var line = start; line <= end; line++) {
465
+ this.mirror.indentLine(line);
466
+ }
467
+ //this.mirror.reindentSelection();
468
+
469
+ },
470
+ // Event handler registration. If disconnect is true, it'll return a
471
+ // function that unregisters the handler.
472
+ // Borrowed from CodeMirror + modified
473
+ connect: function (node, type, handler, disconnect) {
474
+ /*function wrapHandler(event) {
475
+ handler(new Event(event || window.event));
476
+ }*/
477
+
478
+ if (typeof node.addEventListener == "function") {
479
+ node.addEventListener(type, handler, false);
480
+ if (disconnect)
481
+ return function() {
482
+ node.removeEventListener(type, handler, false);
483
+ };
484
+ } else {
485
+ node.attachEvent("on" + type, handler);
486
+ if (disconnect)
487
+ return function() {
488
+ node.detachEvent("on" + type, handler);
489
+ };
490
+ }
491
+ }
492
+ };
493
+
494
+ /*
495
+ * This makes coding callbacks much more sane
496
+ */
497
+ Function.prototype.cmuiBind = function(scope) {
498
+ var _function = this;
499
+
500
+ return function() {
501
+ return _function.apply(scope, arguments);
502
+ }
503
+ }