redcar-dev 0.12.17dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (655) hide show
  1. data/CHANGES +664 -0
  2. data/LICENSE +32 -0
  3. data/README.md +119 -0
  4. data/Rakefile +283 -0
  5. data/bin/redcar +29 -0
  6. data/lib/redcar.rb +307 -0
  7. data/lib/redcar/installer.rb +178 -0
  8. data/lib/redcar/instance_exec.rb +25 -0
  9. data/lib/redcar/logger.rb +64 -0
  10. data/lib/redcar/plist.rb +83 -0
  11. data/lib/redcar/ruby_extensions.rb +201 -0
  12. data/lib/redcar/runner.rb +130 -0
  13. data/lib/redcar/usage.rb +42 -0
  14. data/lib/redcar_quick_start.rb +100 -0
  15. data/lib/regex_replace.rb +221 -0
  16. data/lib/tasks/app-bundle.rake +63 -0
  17. data/plugins/application/features/main_menu.feature +9 -0
  18. data/plugins/application/features/navigation_history.feature +66 -0
  19. data/plugins/application/features/step_definitions/command_steps.rb +10 -0
  20. data/plugins/application/features/step_definitions/dialog_steps.rb +25 -0
  21. data/plugins/application/features/step_definitions/filter_list_dialog_steps.rb +42 -0
  22. data/plugins/application/features/step_definitions/key_steps.rb +18 -0
  23. data/plugins/application/features/step_definitions/menu_steps.rb +42 -0
  24. data/plugins/application/features/step_definitions/navigation_history_steps.rb +4 -0
  25. data/plugins/application/features/step_definitions/speedbar_steps.rb +88 -0
  26. data/plugins/application/features/step_definitions/tree_steps.rb +107 -0
  27. data/plugins/application/features/step_definitions/window_steps.rb +17 -0
  28. data/plugins/application/features/support/env.rb +257 -0
  29. data/plugins/application/features/support/fake_event.rb +26 -0
  30. data/plugins/application/lib/application.rb +425 -0
  31. data/plugins/application/lib/application/assets/file.png +0 -0
  32. data/plugins/application/lib/application/clipboard.rb +95 -0
  33. data/plugins/application/lib/application/command.rb +108 -0
  34. data/plugins/application/lib/application/command/executor.rb +80 -0
  35. data/plugins/application/lib/application/command/history.rb +54 -0
  36. data/plugins/application/lib/application/commands/application_commands.rb +21 -0
  37. data/plugins/application/lib/application/commands/notebook_commands.rb +73 -0
  38. data/plugins/application/lib/application/commands/tab_commands.rb +105 -0
  39. data/plugins/application/lib/application/commands/treebook_commands.rb +117 -0
  40. data/plugins/application/lib/application/commands/window_commands.rb +68 -0
  41. data/plugins/application/lib/application/dialog.rb +170 -0
  42. data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +123 -0
  43. data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
  44. data/plugins/application/lib/application/event_spewer.rb +32 -0
  45. data/plugins/application/lib/application/keymap.rb +41 -0
  46. data/plugins/application/lib/application/keymap/builder.rb +23 -0
  47. data/plugins/application/lib/application/menu.rb +117 -0
  48. data/plugins/application/lib/application/menu/builder.rb +80 -0
  49. data/plugins/application/lib/application/menu/builder/group.rb +47 -0
  50. data/plugins/application/lib/application/menu/item.rb +79 -0
  51. data/plugins/application/lib/application/menu/lazy_menu.rb +25 -0
  52. data/plugins/application/lib/application/navigation_history.rb +71 -0
  53. data/plugins/application/lib/application/notebook.rb +163 -0
  54. data/plugins/application/lib/application/sensitive.rb +57 -0
  55. data/plugins/application/lib/application/sensitivity.rb +82 -0
  56. data/plugins/application/lib/application/speedbar.rb +100 -0
  57. data/plugins/application/lib/application/tab.rb +92 -0
  58. data/plugins/application/lib/application/tab/command.rb +5 -0
  59. data/plugins/application/lib/application/toolbar.rb +83 -0
  60. data/plugins/application/lib/application/toolbar/builder.rb +80 -0
  61. data/plugins/application/lib/application/toolbar/builder/group.rb +47 -0
  62. data/plugins/application/lib/application/toolbar/item.rb +71 -0
  63. data/plugins/application/lib/application/toolbar/lazy_toolbar.rb +25 -0
  64. data/plugins/application/lib/application/tree.rb +94 -0
  65. data/plugins/application/lib/application/tree/command.rb +5 -0
  66. data/plugins/application/lib/application/tree/controller.rb +64 -0
  67. data/plugins/application/lib/application/tree/mirror.rb +132 -0
  68. data/plugins/application/lib/application/treebook.rb +83 -0
  69. data/plugins/application/lib/application/window.rb +274 -0
  70. data/plugins/application/plugin.rb +8 -0
  71. data/plugins/application/spec/application/application_spec.rb +23 -0
  72. data/plugins/application/spec/application/clipboard_spec.rb +55 -0
  73. data/plugins/application/spec/application/command/executor_spec.rb +78 -0
  74. data/plugins/application/spec/application/command/history_spec.rb +49 -0
  75. data/plugins/application/spec/application/command_spec.rb +78 -0
  76. data/plugins/application/spec/application/controllers/application_controller.rb +4 -0
  77. data/plugins/application/spec/application/controllers/notebook_controller.rb +4 -0
  78. data/plugins/application/spec/application/controllers/window_controller.rb +5 -0
  79. data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
  80. data/plugins/application/spec/application/menu/builder_spec.rb +61 -0
  81. data/plugins/application/spec/application/menu/menu_item_spec.rb +17 -0
  82. data/plugins/application/spec/application/menu_spec.rb +171 -0
  83. data/plugins/application/spec/application/navigation_history_spec.rb +96 -0
  84. data/plugins/application/spec/application/notebook_spec.rb +31 -0
  85. data/plugins/application/spec/application/sensitive_spec.rb +156 -0
  86. data/plugins/application/spec/application/speedbar_spec.rb +77 -0
  87. data/plugins/application/spec/application/treebook_spec.rb +27 -0
  88. data/plugins/application/spec/application/window_spec.rb +24 -0
  89. data/plugins/application/spec/spec_helper.rb +18 -0
  90. data/plugins/application_swt/build.xml +74 -0
  91. data/plugins/application_swt/lib/application_swt.rb +218 -0
  92. data/plugins/application_swt/lib/application_swt/bring_to_front.rb +53 -0
  93. data/plugins/application_swt/lib/application_swt/clipboard.rb +42 -0
  94. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +180 -0
  95. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +233 -0
  96. data/plugins/application_swt/lib/application_swt/dialogs/input_dialog.rb +46 -0
  97. data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
  98. data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
  99. data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
  100. data/plugins/application_swt/lib/application_swt/dialogs/no_buttons_dialog.rb +24 -0
  101. data/plugins/application_swt/lib/application_swt/dialogs/text_and_file_dialog.rb +118 -0
  102. data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
  103. data/plugins/application_swt/lib/application_swt/html_tab.rb +79 -0
  104. data/plugins/application_swt/lib/application_swt/icon.rb +35 -0
  105. data/plugins/application_swt/lib/application_swt/listener_helpers.rb +20 -0
  106. data/plugins/application_swt/lib/application_swt/menu.rb +167 -0
  107. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +94 -0
  108. data/plugins/application_swt/lib/application_swt/notebook.rb +148 -0
  109. data/plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb +124 -0
  110. data/plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb +83 -0
  111. data/plugins/application_swt/lib/application_swt/speedbar.rb +185 -0
  112. data/plugins/application_swt/lib/application_swt/speedbar/button_item.rb +20 -0
  113. data/plugins/application_swt/lib/application_swt/speedbar/combo_item.rb +55 -0
  114. data/plugins/application_swt/lib/application_swt/speedbar/label_item.rb +15 -0
  115. data/plugins/application_swt/lib/application_swt/speedbar/slider_item.rb +32 -0
  116. data/plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb +36 -0
  117. data/plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb +29 -0
  118. data/plugins/application_swt/lib/application_swt/tab.rb +84 -0
  119. data/plugins/application_swt/lib/application_swt/toolbar.rb +138 -0
  120. data/plugins/application_swt/lib/application_swt/toolbar/binding_translator.rb +94 -0
  121. data/plugins/application_swt/lib/application_swt/treebook.rb +78 -0
  122. data/plugins/application_swt/lib/application_swt/window.rb +419 -0
  123. data/plugins/application_swt/lib/dist/application_swt.jar +0 -0
  124. data/plugins/application_swt/lib/swt/graphics_utils.rb +193 -0
  125. data/plugins/application_swt/lib/swt/vtab_folder.rb +177 -0
  126. data/plugins/application_swt/lib/swt/vtab_item.rb +78 -0
  127. data/plugins/application_swt/lib/swt/vtab_label.rb +127 -0
  128. data/plugins/application_swt/plugin.rb +8 -0
  129. data/plugins/application_swt/spec/application_swt/gradient_spec.rb +133 -0
  130. data/plugins/application_swt/spec/application_swt/menu/binding_translator_spec.rb +73 -0
  131. data/plugins/application_swt/spec/application_swt/menu_spec.rb +7 -0
  132. data/plugins/application_swt/spec/spec_helper.rb +20 -0
  133. data/plugins/application_swt/src/com/redcareditor/application_swt/CocoaUIEnhancer.java +313 -0
  134. data/plugins/auto_completer/features/auto_complete.feature +65 -0
  135. data/plugins/auto_completer/features/step_definitions/auto_complete_steps.rb +4 -0
  136. data/plugins/auto_completer/features/support/env.rb +2 -0
  137. data/plugins/auto_completer/lib/auto_completer.rb +129 -0
  138. data/plugins/auto_completer/lib/auto_completer/current_document_completion_source.rb +19 -0
  139. data/plugins/auto_completer/lib/auto_completer/document_controller.rb +52 -0
  140. data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
  141. data/plugins/auto_completer/lib/auto_completer/word_iterator.rb +48 -0
  142. data/plugins/auto_completer/lib/auto_completer/word_list.rb +47 -0
  143. data/plugins/auto_completer/plugin.rb +10 -0
  144. data/plugins/auto_indenter/features/java_style_indentation.feature +36 -0
  145. data/plugins/auto_indenter/features/ruby_style_indentation.feature +42 -0
  146. data/plugins/auto_indenter/features/step_definitions/indentation_steps.rb +15 -0
  147. data/plugins/auto_indenter/features/support/env.rb +1 -0
  148. data/plugins/auto_indenter/lib/auto_indenter.rb +108 -0
  149. data/plugins/auto_indenter/lib/auto_indenter/analyzer.rb +100 -0
  150. data/plugins/auto_indenter/lib/auto_indenter/commands.rb +66 -0
  151. data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +103 -0
  152. data/plugins/auto_indenter/lib/auto_indenter/rules.rb +41 -0
  153. data/plugins/auto_indenter/plugin.rb +9 -0
  154. data/plugins/auto_indenter/spec/auto_indenter/analyzer_spec.rb +151 -0
  155. data/plugins/auto_indenter/spec/spec_helper.rb +5 -0
  156. data/plugins/auto_pairer/features/auto_pairer.feature +92 -0
  157. data/plugins/auto_pairer/features/step_definitions/auto_pairer_steps.rb +0 -0
  158. data/plugins/auto_pairer/features/support/env.rb +1 -0
  159. data/plugins/auto_pairer/lib/auto_pairer.rb +12 -0
  160. data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +168 -0
  161. data/plugins/auto_pairer/lib/auto_pairer/pairs_for_scope.rb +57 -0
  162. data/plugins/auto_pairer/plugin.rb +9 -0
  163. data/plugins/clipboard-viewer/Screenshot.png +0 -0
  164. data/plugins/clipboard-viewer/lib/clipboard_viewer.rb +50 -0
  165. data/plugins/clipboard-viewer/lib/clipboard_viewer/browser_controller.rb +27 -0
  166. data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +67 -0
  167. data/plugins/clipboard-viewer/plugin.rb +9 -0
  168. data/plugins/clipboard-viewer/views/clipboard.html.erb +19 -0
  169. data/plugins/clipboard-viewer/views/default.css +43 -0
  170. data/plugins/clipboard-viewer/views/redcar_small_icon.png +0 -0
  171. data/plugins/comment/features/line_comment.feature +249 -0
  172. data/plugins/comment/features/selection_comment.feature +21 -0
  173. data/plugins/comment/features/step_definitions/comment_steps.rb +7 -0
  174. data/plugins/comment/lib/comment.rb +268 -0
  175. data/plugins/comment/plugin.rb +7 -0
  176. data/plugins/comment/vendor/comment_lib.json +47 -0
  177. data/plugins/connection_manager/lib/connection_manager.rb +57 -0
  178. data/plugins/connection_manager/lib/connection_manager/commands.rb +14 -0
  179. data/plugins/connection_manager/lib/connection_manager/connection_store.rb +87 -0
  180. data/plugins/connection_manager/lib/connection_manager/controller.rb +100 -0
  181. data/plugins/connection_manager/lib/connection_manager/filter_dialog.rb +38 -0
  182. data/plugins/connection_manager/lib/connection_manager/private_key_store.rb +93 -0
  183. data/plugins/connection_manager/plugin.rb +12 -0
  184. data/plugins/connection_manager/views/index.html.erb +284 -0
  185. data/plugins/core/lib/core.rb +41 -0
  186. data/plugins/core/lib/core/controller.rb +23 -0
  187. data/plugins/core/lib/core/gui.rb +100 -0
  188. data/plugins/core/lib/core/has_spi.rb +10 -0
  189. data/plugins/core/lib/core/interface.rb +73 -0
  190. data/plugins/core/lib/core/model.rb +11 -0
  191. data/plugins/core/lib/core/observable.rb +115 -0
  192. data/plugins/core/lib/core/observable_struct.rb +34 -0
  193. data/plugins/core/lib/core/persistent_cache.rb +57 -0
  194. data/plugins/core/lib/core/plugin.rb +12 -0
  195. data/plugins/core/lib/core/plugin/storage.rb +133 -0
  196. data/plugins/core/lib/core/reentry_helpers.rb +13 -0
  197. data/plugins/core/lib/core/resource.rb +86 -0
  198. data/plugins/core/lib/core/task.rb +62 -0
  199. data/plugins/core/lib/core/task_queue.rb +72 -0
  200. data/plugins/core/plugin.rb +7 -0
  201. data/plugins/core/spec/core/base_storage_spec.rb +81 -0
  202. data/plugins/core/spec/core/gui_spec.rb +27 -0
  203. data/plugins/core/spec/core/observable_spec.rb +104 -0
  204. data/plugins/core/spec/core/persistent_cache_spec.rb +100 -0
  205. data/plugins/core/spec/core/resource_spec.rb +125 -0
  206. data/plugins/core/spec/core/shared_storage_spec.rb +49 -0
  207. data/plugins/core/spec/core/storage_spec.rb +27 -0
  208. data/plugins/core/spec/core/task_queue_spec.rb +199 -0
  209. data/plugins/core/spec/spec_helper.rb +27 -0
  210. data/plugins/declarations/lib/declarations.rb +159 -0
  211. data/plugins/declarations/lib/declarations/completion_source.rb +22 -0
  212. data/plugins/declarations/lib/declarations/file.rb +68 -0
  213. data/plugins/declarations/lib/declarations/parser.rb +186 -0
  214. data/plugins/declarations/lib/declarations/select_tag_dialog.rb +45 -0
  215. data/plugins/declarations/plugin.rb +7 -0
  216. data/plugins/declarations/spec/declarations/file_spec.rb +62 -0
  217. data/plugins/declarations/spec/fixtures/federalist.rb +15 -0
  218. data/plugins/declarations/spec/spec_helper.rb +5 -0
  219. data/plugins/document_search/Readme.md +14 -0
  220. data/plugins/document_search/features/find.feature +541 -0
  221. data/plugins/document_search/features/incremental_search.feature +351 -0
  222. data/plugins/document_search/features/replace.feature +178 -0
  223. data/plugins/document_search/features/step_definitions/find_steps.rb +16 -0
  224. data/plugins/document_search/features/support/env.rb +14 -0
  225. data/plugins/document_search/lib/document_search.rb +191 -0
  226. data/plugins/document_search/lib/document_search/commands.rb +307 -0
  227. data/plugins/document_search/lib/document_search/find_speedbar.rb +162 -0
  228. data/plugins/document_search/lib/document_search/incremental_search_speedbar.rb +70 -0
  229. data/plugins/document_search/lib/document_search/query_options.rb +21 -0
  230. data/plugins/document_search/plugin.rb +8 -0
  231. data/plugins/edit_view/features/align_assignment.feature +106 -0
  232. data/plugins/edit_view/features/case_change.feature +67 -0
  233. data/plugins/edit_view/features/cursor_navigation.feature +36 -0
  234. data/plugins/edit_view/features/cut_and_paste.feature +45 -0
  235. data/plugins/edit_view/features/grammar.feature +11 -0
  236. data/plugins/edit_view/features/indentation_commands.feature +49 -0
  237. data/plugins/edit_view/features/line_delimiter.feature +47 -0
  238. data/plugins/edit_view/features/multiple_notebooks.feature +52 -0
  239. data/plugins/edit_view/features/multiple_windows.feature +48 -0
  240. data/plugins/edit_view/features/new_tab.feature +11 -0
  241. data/plugins/edit_view/features/soft_tabs.feature +243 -0
  242. data/plugins/edit_view/features/sort_lines.feature +15 -0
  243. data/plugins/edit_view/features/step_definitions/editing_steps.rb +350 -0
  244. data/plugins/edit_view/features/step_definitions/grammar_steps.rb +4 -0
  245. data/plugins/edit_view/features/step_definitions/key_steps.rb +48 -0
  246. data/plugins/edit_view/features/step_definitions/notebook_steps.rb +59 -0
  247. data/plugins/edit_view/features/step_definitions/tab_steps.rb +113 -0
  248. data/plugins/edit_view/features/step_definitions/window_steps.rb +86 -0
  249. data/plugins/edit_view/features/support/env.rb +59 -0
  250. data/plugins/edit_view/features/switch_tabs.feature +106 -0
  251. data/plugins/edit_view/features/tabs.feature +146 -0
  252. data/plugins/edit_view/features/undo_and_redo.feature +73 -0
  253. data/plugins/edit_view/features/word_matching.feature +67 -0
  254. data/plugins/edit_view/lib/edit_view.rb +659 -0
  255. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +170 -0
  256. data/plugins/edit_view/lib/edit_view/actions/cmd_enter.rb +11 -0
  257. data/plugins/edit_view/lib/edit_view/actions/deletion.rb +40 -0
  258. data/plugins/edit_view/lib/edit_view/actions/esc.rb +15 -0
  259. data/plugins/edit_view/lib/edit_view/actions/tab.rb +70 -0
  260. data/plugins/edit_view/lib/edit_view/command.rb +14 -0
  261. data/plugins/edit_view/lib/edit_view/commands/align_assignment_command.rb +55 -0
  262. data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +85 -0
  263. data/plugins/edit_view/lib/edit_view/document.rb +796 -0
  264. data/plugins/edit_view/lib/edit_view/document/command.rb +25 -0
  265. data/plugins/edit_view/lib/edit_view/document/controller.rb +43 -0
  266. data/plugins/edit_view/lib/edit_view/document/history.rb +41 -0
  267. data/plugins/edit_view/lib/edit_view/document/indentation.rb +40 -0
  268. data/plugins/edit_view/lib/edit_view/document/mirror.rb +42 -0
  269. data/plugins/edit_view/lib/edit_view/edit_tab.rb +59 -0
  270. data/plugins/edit_view/lib/edit_view/grammar.rb +58 -0
  271. data/plugins/edit_view/lib/edit_view/grammars/default.rb +10 -0
  272. data/plugins/edit_view/lib/edit_view/grammars/ruby.rb +10 -0
  273. data/plugins/edit_view/lib/edit_view/grammars/ruby_on_rails.rb +7 -0
  274. data/plugins/edit_view/lib/edit_view/info_speedbar.rb +98 -0
  275. data/plugins/edit_view/lib/edit_view/modified_tabs_checker.rb +35 -0
  276. data/plugins/edit_view/lib/edit_view/select_font_dialog.rb +45 -0
  277. data/plugins/edit_view/lib/edit_view/select_theme_dialog.rb +42 -0
  278. data/plugins/edit_view/lib/edit_view/tab_settings.rb +135 -0
  279. data/plugins/edit_view/plugin.rb +9 -0
  280. data/plugins/edit_view/spec/edit_view/document/indentation_spec.rb +112 -0
  281. data/plugins/edit_view/spec/edit_view/document_spec.rb +130 -0
  282. data/plugins/edit_view/spec/spec_helper.rb +5 -0
  283. data/plugins/edit_view_swt/lib/edit_view_swt.rb +621 -0
  284. data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +224 -0
  285. data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +50 -0
  286. data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +68 -0
  287. data/plugins/edit_view_swt/plugin.rb +9 -0
  288. data/plugins/edit_view_swt/spec/edit_view_swt/word_movement_spec.rb +29 -0
  289. data/plugins/edit_view_swt/spec/spec_helper.rb +5 -0
  290. data/plugins/encryption/encryption.rb +52 -0
  291. data/plugins/encryption/ezcrypto.rb +652 -0
  292. data/plugins/encryption/jarmor-1.1.jar +0 -0
  293. data/plugins/encryption/plugin.rb +9 -0
  294. data/plugins/execute_current_tab/lib/execute_current_tab.rb +68 -0
  295. data/plugins/execute_current_tab/plugin.rb +8 -0
  296. data/plugins/help/lib/help.rb +64 -0
  297. data/plugins/help/lib/help/help_tab.rb +11 -0
  298. data/plugins/help/lib/help/view_controller.rb +30 -0
  299. data/plugins/help/plugin.rb +9 -0
  300. data/plugins/help/views/default.css +31 -0
  301. data/plugins/help/views/index.html.erb +41 -0
  302. data/plugins/help/views/redcar_small_icon.png +0 -0
  303. data/plugins/html_view/assets/blueprint/ie.css +35 -0
  304. data/plugins/html_view/assets/blueprint/print.css +29 -0
  305. data/plugins/html_view/assets/blueprint/screen.css +257 -0
  306. data/plugins/html_view/assets/blueprint/src/forms.css +65 -0
  307. data/plugins/html_view/assets/blueprint/src/grid.css +281 -0
  308. data/plugins/html_view/assets/blueprint/src/grid.png +0 -0
  309. data/plugins/html_view/assets/blueprint/src/ie.css +76 -0
  310. data/plugins/html_view/assets/blueprint/src/print.css +85 -0
  311. data/plugins/html_view/assets/blueprint/src/reset.css +38 -0
  312. data/plugins/html_view/assets/blueprint/src/typography.css +106 -0
  313. data/plugins/html_view/assets/jquery-1.4.min.js +151 -0
  314. data/plugins/html_view/assets/json2.js +476 -0
  315. data/plugins/html_view/assets/redcar.css +44 -0
  316. data/plugins/html_view/features/browser_bar.feature +47 -0
  317. data/plugins/html_view/features/fixtures/other.html +1 -0
  318. data/plugins/html_view/features/fixtures/sample.html +1 -0
  319. data/plugins/html_view/features/step_definitions/html_view_steps.rb +64 -0
  320. data/plugins/html_view/features/step_definitions/web_view_steps.rb +12 -0
  321. data/plugins/html_view/features/support/env.rb +27 -0
  322. data/plugins/html_view/features/web_preview.feature +21 -0
  323. data/plugins/html_view/lib/html_controller.rb +50 -0
  324. data/plugins/html_view/lib/html_view.rb +170 -0
  325. data/plugins/html_view/lib/html_view/browser_bar.rb +82 -0
  326. data/plugins/html_view/lib/html_view/commands.rb +64 -0
  327. data/plugins/html_view/lib/html_view/default_controller.rb +23 -0
  328. data/plugins/html_view/lib/html_view/html_tab.rb +40 -0
  329. data/plugins/html_view/plugin.rb +13 -0
  330. data/plugins/html_view/views/default.css +117 -0
  331. data/plugins/html_view/views/index.html.erb +5 -0
  332. data/plugins/html_view/views/watermark-48.png +0 -0
  333. data/plugins/java/features/fixtures/lib/classes.jar +0 -0
  334. data/plugins/java/features/fixtures/test.java +0 -0
  335. data/plugins/java/features/support/env.rb +27 -0
  336. data/plugins/java/features/syntax_check_java.feature +86 -0
  337. data/plugins/java/lib/syntax_check/java.rb +86 -0
  338. data/plugins/java/plugin.rb +7 -0
  339. data/plugins/key_bindings/lib/key_bindings.rb +34 -0
  340. data/plugins/key_bindings/plugin.rb +8 -0
  341. data/plugins/key_bindings/spec/spec_helper.rb +5 -0
  342. data/plugins/line_tools/features/clear_line.feature +25 -0
  343. data/plugins/line_tools/features/kill_line.feature +25 -0
  344. data/plugins/line_tools/features/lower_text.feature +54 -0
  345. data/plugins/line_tools/features/raise_text.feature +50 -0
  346. data/plugins/line_tools/features/replace_line.feature +33 -0
  347. data/plugins/line_tools/features/step_definitions/line_tools_steps.rb +23 -0
  348. data/plugins/line_tools/features/support/env.rb +0 -0
  349. data/plugins/line_tools/features/trim_line.feature +73 -0
  350. data/plugins/line_tools/lib/line_tools.rb +217 -0
  351. data/plugins/line_tools/plugin.rb +9 -0
  352. data/plugins/macros/features/block_selection_in_macros.feature +48 -0
  353. data/plugins/macros/features/predictive_macros.feature +79 -0
  354. data/plugins/macros/features/record_and_run_macro.feature +87 -0
  355. data/plugins/macros/features/step_definitions/macro_steps.rb +11 -0
  356. data/plugins/macros/features/step_definitions/prediction_steps.rb +8 -0
  357. data/plugins/macros/features/support/env.rb +0 -0
  358. data/plugins/macros/lib/macros.rb +167 -0
  359. data/plugins/macros/lib/macros/action_sequence.rb +30 -0
  360. data/plugins/macros/lib/macros/commands.rb +108 -0
  361. data/plugins/macros/lib/macros/macro.rb +37 -0
  362. data/plugins/macros/lib/macros/manager_controller.rb +67 -0
  363. data/plugins/macros/lib/macros/predictive/document_controller.rb +69 -0
  364. data/plugins/macros/lib/macros/predictive/sequence_finder.rb +112 -0
  365. data/plugins/macros/plugin.rb +9 -0
  366. data/plugins/macros/spec/macros/predictive/sequence_finder_spec.rb +142 -0
  367. data/plugins/macros/spec/spec_helper.rb +6 -0
  368. data/plugins/macros/views/macro_manager.html.erb +92 -0
  369. data/plugins/my_plugin/lib/my_plugin.rb +47 -0
  370. data/plugins/my_plugin/plugin.rb +8 -0
  371. data/plugins/open_default_app/lib/open_default_app.rb +61 -0
  372. data/plugins/open_default_app/plugin.rb +8 -0
  373. data/plugins/open_default_app/screenshot.png +0 -0
  374. data/plugins/outline_view/features/outline_view.feature +79 -0
  375. data/plugins/outline_view/features/step_definitions/outline_steps.rb +45 -0
  376. data/plugins/outline_view/lib/outline_view.rb +66 -0
  377. data/plugins/outline_view/lib/outline_view/commands.rb +13 -0
  378. data/plugins/outline_view/plugin.rb +10 -0
  379. data/plugins/outline_view/spec/fixtures/some_project/javascript.js +10 -0
  380. data/plugins/outline_view/spec/fixtures/some_project/nothing_to_see.rb +0 -0
  381. data/plugins/outline_view/spec/fixtures/some_project/one_lonely_class.rb +2 -0
  382. data/plugins/outline_view/spec/fixtures/some_project/similar_names.rb +18 -0
  383. data/plugins/outline_view/spec/fixtures/some_project/something_fancy.rb +736 -0
  384. data/plugins/outline_view/spec/fixtures/some_project/trailing_space.rb +5 -0
  385. data/plugins/outline_view_swt/lib/outline_view_swt.rb +79 -0
  386. data/plugins/outline_view_swt/plugin.rb +7 -0
  387. data/plugins/pair_highlighter/lib/pair_highlighter.rb +34 -0
  388. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +185 -0
  389. data/plugins/pair_highlighter/plugin.rb +9 -0
  390. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +122 -0
  391. data/plugins/plugin_manager_ui/plugin.rb +13 -0
  392. data/plugins/plugin_manager_ui/views/index.html.erb +62 -0
  393. data/plugins/project/features/close_directory_tree.feature +28 -0
  394. data/plugins/project/features/find_file.feature +119 -0
  395. data/plugins/project/features/highlight_focussed_tab.feature +53 -0
  396. data/plugins/project/features/move_and_rename_files.feature +25 -0
  397. data/plugins/project/features/open_and_save_files.feature +85 -0
  398. data/plugins/project/features/open_directory_tree.feature +93 -0
  399. data/plugins/project/features/refresh_directory_tree.feature +44 -0
  400. data/plugins/project/features/step_definitions/directory_steps.rb +35 -0
  401. data/plugins/project/features/step_definitions/drb_steps.rb +40 -0
  402. data/plugins/project/features/step_definitions/file_steps.rb +66 -0
  403. data/plugins/project/features/step_definitions/find_file_steps.rb +7 -0
  404. data/plugins/project/features/step_definitions/project_tree_steps.rb +7 -0
  405. data/plugins/project/features/sub_project.feature +15 -0
  406. data/plugins/project/features/support/env.rb +35 -0
  407. data/plugins/project/features/watch_for_modified_files.feature +109 -0
  408. data/plugins/project/lib/project.rb +266 -0
  409. data/plugins/project/lib/project/adapters/local.rb +82 -0
  410. data/plugins/project/lib/project/adapters/remote.rb +96 -0
  411. data/plugins/project/lib/project/adapters/remote_protocols/ftp.rb +93 -0
  412. data/plugins/project/lib/project/adapters/remote_protocols/protocol.rb +94 -0
  413. data/plugins/project/lib/project/adapters/remote_protocols/sftp.rb +181 -0
  414. data/plugins/project/lib/project/commands.rb +449 -0
  415. data/plugins/project/lib/project/dir_controller.rb +275 -0
  416. data/plugins/project/lib/project/dir_mirror.rb +176 -0
  417. data/plugins/project/lib/project/drb_service.rb +86 -0
  418. data/plugins/project/lib/project/file_list.rb +164 -0
  419. data/plugins/project/lib/project/file_mirror.rb +85 -0
  420. data/plugins/project/lib/project/find_file_dialog.rb +118 -0
  421. data/plugins/project/lib/project/find_recent_dialog.rb +30 -0
  422. data/plugins/project/lib/project/manager.rb +545 -0
  423. data/plugins/project/lib/project/project_tree_controller.rb +24 -0
  424. data/plugins/project/lib/project/recent.rb +64 -0
  425. data/plugins/project/lib/project/sub_project.rb +17 -0
  426. data/plugins/project/lib/project/support/recycle.js +2 -0
  427. data/plugins/project/lib/project/support/trash.rb +73 -0
  428. data/plugins/project/plugin.rb +11 -0
  429. data/plugins/project/spec/fixture_helper.rb +30 -0
  430. data/plugins/project/spec/project/adapters/remote_protocols/ftp_spec.rb +75 -0
  431. data/plugins/project/spec/project/adapters/remote_protocols/sftp_spec.rb +121 -0
  432. data/plugins/project/spec/project/adapters/remote_spec.rb +136 -0
  433. data/plugins/project/spec/project/dir_mirror_spec.rb +65 -0
  434. data/plugins/project/spec/project/file_list_spec.rb +151 -0
  435. data/plugins/project/spec/project/file_mirror_spec.rb +97 -0
  436. data/plugins/project/spec/spec_helper.rb +26 -0
  437. data/plugins/project/views/bulk_rename.html.erb +162 -0
  438. data/plugins/project_search/features/support/env.rb +6 -0
  439. data/plugins/project_search/features/word_search.feature +34 -0
  440. data/plugins/project_search/lib/project_search.rb +82 -0
  441. data/plugins/project_search/lib/project_search/binary_data_detector.rb +46 -0
  442. data/plugins/project_search/lib/project_search/commands.rb +50 -0
  443. data/plugins/project_search/lib/project_search/hit.rb +21 -0
  444. data/plugins/project_search/lib/project_search/images/spinner.gif +0 -0
  445. data/plugins/project_search/lib/project_search/lucene_index.rb +81 -0
  446. data/plugins/project_search/lib/project_search/lucene_refresh.rb +22 -0
  447. data/plugins/project_search/lib/project_search/project.rb +14 -0
  448. data/plugins/project_search/lib/project_search/query.rb +29 -0
  449. data/plugins/project_search/lib/project_search/stylesheets/style.css +279 -0
  450. data/plugins/project_search/lib/project_search/views/_file.html.erb +58 -0
  451. data/plugins/project_search/lib/project_search/views/index.html.erb +156 -0
  452. data/plugins/project_search/lib/project_search/word_search.rb +143 -0
  453. data/plugins/project_search/lib/project_search/word_search_controller.rb +219 -0
  454. data/plugins/project_search/plugin.rb +8 -0
  455. data/plugins/project_search/spec/fixtures/project/binary_file.bin +0 -0
  456. data/plugins/project_search/spec/fixtures/project/foo.txt +43 -0
  457. data/plugins/project_search/spec/fixtures/project/qux.rb +3 -0
  458. data/plugins/project_search/spec/project_search/binary_data_detector_spec.rb +24 -0
  459. data/plugins/project_search/spec/project_search/word_search_spec.rb +157 -0
  460. data/plugins/project_search/spec/spec_helper.rb +27 -0
  461. data/plugins/redcar/features/alter_font_size.feature +26 -0
  462. data/plugins/redcar/features/goto_line_command.feature +20 -0
  463. data/plugins/redcar/features/step_definitions/env.rb +5 -0
  464. data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
  465. data/plugins/redcar/features/text_editing.feature +34 -0
  466. data/plugins/redcar/features/text_navigation.feature +30 -0
  467. data/plugins/redcar/plugin.rb +17 -0
  468. data/plugins/redcar/redcar.rb +1097 -0
  469. data/plugins/redcar_debug/lib/redcar_debug.rb +91 -0
  470. data/plugins/redcar_debug/plugin.rb +8 -0
  471. data/plugins/redcar_debug/views/history.html.erb +34 -0
  472. data/plugins/redcar_debug/views/index.html.erb +36 -0
  473. data/plugins/repl/features/command_editing.feature +55 -0
  474. data/plugins/repl/features/command_history.feature +75 -0
  475. data/plugins/repl/features/step_definitions/repl_steps.rb +19 -0
  476. data/plugins/repl/features/support/env.rb +24 -0
  477. data/plugins/repl/features/support/fake_repl.rb +16 -0
  478. data/plugins/repl/lib/repl.rb +40 -0
  479. data/plugins/repl/lib/repl/repl_command.rb +20 -0
  480. data/plugins/repl/lib/repl/repl_mirror.rb +255 -0
  481. data/plugins/repl/lib/repl/repl_tab.rb +154 -0
  482. data/plugins/repl/plugin.rb +8 -0
  483. data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
  484. data/plugins/repl/spec/spec_helper.rb +5 -0
  485. data/plugins/repl_swt/lib/repl_swt.rb +7 -0
  486. data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
  487. data/plugins/repl_swt/plugin.rb +8 -0
  488. data/plugins/ruby/features/fixtures/test.rb +0 -0
  489. data/plugins/ruby/features/support/env.rb +4 -0
  490. data/plugins/ruby/features/syntax_check_ruby.feature +26 -0
  491. data/plugins/ruby/lib/ruby.rb +35 -0
  492. data/plugins/ruby/lib/ruby/repl_mirror.rb +46 -0
  493. data/plugins/ruby/lib/ruby/syntax_checker.rb +30 -0
  494. data/plugins/ruby/plugin.rb +8 -0
  495. data/plugins/ruby/spec/ruby/repl_mirror_spec.rb +202 -0
  496. data/plugins/ruby/spec/spec_helper.rb +5 -0
  497. data/plugins/runnables/features/command_tree.feature +63 -0
  498. data/plugins/runnables/features/file_runner_input.feature +21 -0
  499. data/plugins/runnables/features/parameter_input.feature +43 -0
  500. data/plugins/runnables/features/run_alternate_command.feature +15 -0
  501. data/plugins/runnables/features/run_command_tab.feature +47 -0
  502. data/plugins/runnables/features/step_definitions/runnable_steps.rb +28 -0
  503. data/plugins/runnables/features/support/env.rb +124 -0
  504. data/plugins/runnables/lib/runnables.rb +180 -0
  505. data/plugins/runnables/lib/runnables/command_output_controller.rb +183 -0
  506. data/plugins/runnables/lib/runnables/commands.rb +82 -0
  507. data/plugins/runnables/lib/runnables/output_processor.rb +74 -0
  508. data/plugins/runnables/lib/runnables/running_process_checker.rb +34 -0
  509. data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable.rb +62 -0
  510. data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_group.rb +45 -0
  511. data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_type_group.rb +30 -0
  512. data/plugins/runnables/lib/runnables/tree_mirror/tree_controller.rb +36 -0
  513. data/plugins/runnables/lib/runnables/tree_mirror/tree_mirror.rb +66 -0
  514. data/plugins/runnables/plugin.rb +9 -0
  515. data/plugins/runnables/spec/runnables/output_processor_spec.rb +57 -0
  516. data/plugins/runnables/spec/spec_helper.rb +5 -0
  517. data/plugins/runnables/views/basic_ansi.css +34 -0
  518. data/plugins/runnables/views/color_tester.html +50 -0
  519. data/plugins/runnables/views/command_output.html.erb +32 -0
  520. data/plugins/runnables/views/default.css +79 -0
  521. data/plugins/runnables/views/indicator.gif +0 -0
  522. data/plugins/runnables/views/redcar_small_icon.png +0 -0
  523. data/plugins/runnables/views/reset.css +53 -0
  524. data/plugins/runnables/views/running_test.html +41 -0
  525. data/plugins/runnables/views/wedgeDown.png +0 -0
  526. data/plugins/runnables/views/wedgeRight.png +0 -0
  527. data/plugins/scm/lib/scm.rb +296 -0
  528. data/plugins/scm/lib/scm/commands.rb +48 -0
  529. data/plugins/scm/lib/scm/commit_mirror.rb +72 -0
  530. data/plugins/scm/lib/scm/diff_mirror.rb +31 -0
  531. data/plugins/scm/lib/scm/errors.rb +8 -0
  532. data/plugins/scm/lib/scm/model.rb +275 -0
  533. data/plugins/scm/lib/scm/scm_changes_controller.rb +107 -0
  534. data/plugins/scm/lib/scm/scm_changes_mirror.rb +51 -0
  535. data/plugins/scm/lib/scm/scm_changes_mirror/change.rb +63 -0
  536. data/plugins/scm/lib/scm/scm_changes_mirror/changes_node.rb +47 -0
  537. data/plugins/scm/lib/scm/scm_changes_mirror/drag_controller.rb +78 -0
  538. data/plugins/scm/lib/scm/scm_commits_controller.rb +49 -0
  539. data/plugins/scm/lib/scm/scm_commits_mirror.rb +36 -0
  540. data/plugins/scm/lib/scm/scm_commits_mirror/commit.rb +26 -0
  541. data/plugins/scm/lib/scm/scm_commits_mirror/commits_node.rb +38 -0
  542. data/plugins/scm/plugin.rb +8 -0
  543. data/plugins/scm/spec/spec_helper.rb +5 -0
  544. data/plugins/scm_git/lib/scm_git.rb +543 -0
  545. data/plugins/scm_git/lib/scm_git/change.rb +137 -0
  546. data/plugins/scm_git/lib/scm_git/commit.rb +18 -0
  547. data/plugins/scm_git/lib/scm_git/config_file.rb +31 -0
  548. data/plugins/scm_git/plugin.rb +7 -0
  549. data/plugins/scm_hg/lib/scm_hg.rb +30 -0
  550. data/plugins/scm_hg/plugin.rb +7 -0
  551. data/plugins/scm_svn/LICENSE +48 -0
  552. data/plugins/scm_svn/features/add_and_commit.feature +18 -0
  553. data/plugins/scm_svn/features/checkout.feature +5 -0
  554. data/plugins/scm_svn/features/edit_and_index.feature +12 -0
  555. data/plugins/scm_svn/features/ignore_files.feature +14 -0
  556. data/plugins/scm_svn/features/merge.feature +34 -0
  557. data/plugins/scm_svn/features/resolve_conflict.feature +23 -0
  558. data/plugins/scm_svn/features/revert_and_delete.feature +21 -0
  559. data/plugins/scm_svn/features/step_definitions/branch_and_merge_steps.rb +27 -0
  560. data/plugins/scm_svn/features/step_definitions/checkout_steps.rb +25 -0
  561. data/plugins/scm_svn/features/step_definitions/edit_and_index_steps.rb +50 -0
  562. data/plugins/scm_svn/features/step_definitions/scm_svn_steps.rb +57 -0
  563. data/plugins/scm_svn/features/support/env.rb +71 -0
  564. data/plugins/scm_svn/features/switch_branches.feature +53 -0
  565. data/plugins/scm_svn/features/update.feature +16 -0
  566. data/plugins/scm_svn/lib/scm_svn.rb +445 -0
  567. data/plugins/scm_svn/lib/scm_svn/change.rb +116 -0
  568. data/plugins/scm_svn/plugin.rb +7 -0
  569. data/plugins/snippets/features/snippet_indenting.feature +87 -0
  570. data/plugins/snippets/features/snippets.feature +398 -0
  571. data/plugins/snippets/features/step_definitions/snippet_steps.rb +16 -0
  572. data/plugins/snippets/features/support/env.rb +1 -0
  573. data/plugins/snippets/lib/snippets.rb +111 -0
  574. data/plugins/snippets/lib/snippets/document_controller.rb +591 -0
  575. data/plugins/snippets/lib/snippets/explorer.rb +48 -0
  576. data/plugins/snippets/lib/snippets/tab_handler.rb +117 -0
  577. data/plugins/snippets/plugin.rb +9 -0
  578. data/plugins/splash_screen/plugin.rb +8 -0
  579. data/plugins/splash_screen/splash_screen.rb +62 -0
  580. data/plugins/strip_trailing_spaces/features/fixtures/test.txt +3 -0
  581. data/plugins/strip_trailing_spaces/features/strip_trailing_spaces.feature +34 -0
  582. data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +60 -0
  583. data/plugins/strip_trailing_spaces/plugin.rb +8 -0
  584. data/plugins/syntax_check/README +6 -0
  585. data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +11 -0
  586. data/plugins/syntax_check/features/support/env.rb +3 -0
  587. data/plugins/syntax_check/lib/syntax_check.rb +100 -0
  588. data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
  589. data/plugins/syntax_check/lib/syntax_check/checker.rb +47 -0
  590. data/plugins/syntax_check/lib/syntax_check/error.rb +24 -0
  591. data/plugins/syntax_check/plugin.rb +7 -0
  592. data/plugins/task_manager/lib/task_manager.rb +30 -0
  593. data/plugins/task_manager/plugin.rb +11 -0
  594. data/plugins/task_manager/views/index.html.erb +70 -0
  595. data/plugins/test_runner/lib/test_runner.rb +40 -0
  596. data/plugins/test_runner/lib/test_runner/jasmine_test_runner.rb +15 -0
  597. data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
  598. data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
  599. data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +42 -0
  600. data/plugins/test_runner/plugin.rb +8 -0
  601. data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
  602. data/plugins/test_runner/spec/spec_helper.rb +5 -0
  603. data/plugins/textmate/features/bundle_tree.feature +23 -0
  604. data/plugins/textmate/features/step_definitions/tree_steps.rb +57 -0
  605. data/plugins/textmate/features/support/env.rb +19 -0
  606. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/If.tmSnippet +18 -0
  607. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/If__Else.tmSnippet +20 -0
  608. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Include.tmSnippet +16 -0
  609. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Loop.tmSnippet +18 -0
  610. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Unless.tmSnippet +18 -0
  611. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Var.tmSnippet +16 -0
  612. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/next_If__Else.tmSnippet +20 -0
  613. data/plugins/textmate/features/support/test_bundle.tmbundle/info.plist +26 -0
  614. data/plugins/textmate/lib/textmate.rb +202 -0
  615. data/plugins/textmate/lib/textmate/bundle.rb +100 -0
  616. data/plugins/textmate/lib/textmate/commands.rb +79 -0
  617. data/plugins/textmate/lib/textmate/environment.rb +76 -0
  618. data/plugins/textmate/lib/textmate/plist.rb +80 -0
  619. data/plugins/textmate/lib/textmate/preference.rb +125 -0
  620. data/plugins/textmate/lib/textmate/snippet.rb +47 -0
  621. data/plugins/textmate/lib/textmate/tree_mirror.rb +206 -0
  622. data/plugins/textmate/plugin.rb +8 -0
  623. data/plugins/textmate/views/installed_bundles.html.erb +24 -0
  624. data/plugins/todo_list/README.md +22 -0
  625. data/plugins/todo_list/features/support/env.rb +8 -0
  626. data/plugins/todo_list/features/todo_list.feature +26 -0
  627. data/plugins/todo_list/lib/todo_list.rb +49 -0
  628. data/plugins/todo_list/lib/todo_list/file_parser.rb +58 -0
  629. data/plugins/todo_list/lib/todo_list/todo_controller.rb +99 -0
  630. data/plugins/todo_list/plugin.rb +11 -0
  631. data/plugins/todo_list/spec/fixtures/project/FIXME.file +3 -0
  632. data/plugins/todo_list/spec/fixtures/project/NOTE.ignored.file +1 -0
  633. data/plugins/todo_list/spec/fixtures/project/OPTIMIZE_colon.file +1 -0
  634. data/plugins/todo_list/spec/fixtures/project/XXX.ignored +1 -0
  635. data/plugins/todo_list/spec/fixtures/project/ignored_directory/TODO.file +2 -0
  636. data/plugins/todo_list/spec/fixtures/settings.rb +11 -0
  637. data/plugins/todo_list/spec/spec_helper.rb +6 -0
  638. data/plugins/todo_list/spec/todo_list/file_parser_spec.rb +35 -0
  639. data/plugins/todo_list/views/default.css +15 -0
  640. data/plugins/todo_list/views/index.html.erb +19 -0
  641. data/plugins/todo_list/views/redcar_small_icon.png +0 -0
  642. data/plugins/tree_view_swt/lib/tree_view_swt.rb +496 -0
  643. data/plugins/tree_view_swt/plugin.rb +9 -0
  644. data/plugins/web_bookmarks/Screenshot.png +0 -0
  645. data/plugins/web_bookmarks/features/bookmark.feature +37 -0
  646. data/plugins/web_bookmarks/features/fixtures/other.html +1 -0
  647. data/plugins/web_bookmarks/features/fixtures/sample.html +1 -0
  648. data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +4 -0
  649. data/plugins/web_bookmarks/features/support/env.rb +26 -0
  650. data/plugins/web_bookmarks/lib/web_bookmarks.rb +49 -0
  651. data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +52 -0
  652. data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +65 -0
  653. data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +74 -0
  654. data/plugins/web_bookmarks/plugin.rb +10 -0
  655. metadata +937 -0
@@ -0,0 +1,25 @@
1
+ #TODO: find a way to test the http and svn protocols
2
+ When /^I checkout "([^"]*)" in a local repository$/ do |subdirectory|
3
+ path = create_dir(working_copy)
4
+ path = path + "#{subdirectory}" if subdirectory
5
+ File.mkdir_p(path) unless File.exist?(path)
6
+ svn_module.load(path)
7
+ svn_module.remote_init(svn_repository_url,path)
8
+ end
9
+
10
+ When /^I checkout a local repository$/ do
11
+ path = create_dir(working_copy)
12
+ svn_module.load(path)
13
+ svn_module.remote_init(svn_repository_url,path)
14
+ end
15
+
16
+ Then /^I should have a working copy$/ do
17
+ svn_module.repository?(get_dir(working_copy)).should == true
18
+ end
19
+
20
+ Then /^if I checkout to a new working copy, it should have "([^"]*)" files$/ do |file_count|
21
+ path = create_dir(working_copy_2)
22
+ svn_module_2.load(path)
23
+ svn_module_2.remote_init(svn_repository_url,path)
24
+ repo_file_count(svn_module_2.path).should == file_count.to_i
25
+ end
@@ -0,0 +1,50 @@
1
+ When /^I add "([^"]*)" to the index$/ do |files|
2
+ files.split(",").each do |file|
3
+ svn_module.index_add(File.new(get_dir(working_copy) + "/#{file}"))
4
+ end
5
+ end
6
+
7
+ When /^I create a wc file named "([^"]*)"$/ do |files|
8
+ files.split(",").each do |file|
9
+ FileUtils.touch(get_dir(working_copy) + "/#{file}")
10
+ end
11
+ end
12
+
13
+ When /^I create a wc directory named "([^"]*)"$/ do |dirs|
14
+ dirs.split(",").each do |dir|
15
+ FileUtils.mkdir_p get_dir(working_copy) + "/#{dir}"
16
+ end
17
+ end
18
+
19
+ Then /^there should be "([^"]*)" unindexed files and "([^"]*)" indexed files$/ do |ucount, count|
20
+ svn_module.unindexed_changes.length.should == ucount.to_i
21
+ svn_module.indexed_changes.length.should == count.to_i
22
+ end
23
+
24
+ When /^I replace "([^"]*)" contents(| in the new copy) with "([^"]*)"$/ do |file,repo,text|
25
+ if repo == ""
26
+ File.open(get_dir(working_copy) + "/#{file}", 'w') do |f|
27
+ f.rewind
28
+ f.truncate(0)
29
+ f.puts text
30
+ end
31
+ else
32
+ File.open(get_dir(working_copy_2) + "/#{file}", 'w') do |f|
33
+ f.rewind
34
+ f.truncate(0)
35
+ f.puts text
36
+ end
37
+ end
38
+ end
39
+
40
+ Then /^the contents of wc file "([^"]*)"(| in the new copy) should be "([^"]*)"$/ do |file,repo,text|
41
+ if repo == " in the new copy"
42
+ File.read(get_dir(working_copy_2) + "/#{file}").rstrip.should == text
43
+ else
44
+ File.read(get_dir(working_copy) + "/#{file}").rstrip.should == text
45
+ end
46
+ end
47
+
48
+ #Then /^the contents of wc file "([^"]*)" in the new copy should be "([^"]*)"$/ do |file,text|
49
+ # File.read(get_dir(working_copy_2) + "/#{file}").rstrip.should == text
50
+ #end
@@ -0,0 +1,57 @@
1
+
2
+ When /^I commit my changes(| in the new copy) with message "([^"]*)"$/ do |repo,message|
3
+ if repo == ""
4
+ svn_module.commit!(message)
5
+ else
6
+ svn_module_2.commit!(message)
7
+ end
8
+ end
9
+
10
+ When /^I ignore "([^"]*)"$/ do |file|
11
+ svn_module.index_ignore(File.new(svn_module.path + "/#{file}"))
12
+ end
13
+
14
+ When /^I ignore "([^"]*)" files$/ do |extension|
15
+ svn_module.index_ignore_all(extension,nil)
16
+ end
17
+
18
+ When /^I wc delete "([^"]*)"$/ do |file|
19
+ path = svn_module.path + "/#{file}"
20
+ svn_module.index_delete(Redcar::Scm::Subversion::Change.new(path,:normal,[],nil))
21
+ end
22
+
23
+ When /^I revert "([^"]*)"$/ do |file|
24
+ svn_module.index_revert(File.new(svn_module.path+"/#{file}"))
25
+ end
26
+
27
+ Then /^if I update my(| new) working copy, it should have "([^"]*)" files$/ do |repo,file_count|
28
+ if repo == " new"
29
+ svn_module_2.pull!
30
+ repo_file_count(svn_module_2.path).should == file_count.to_i
31
+ else
32
+ svn_module.pull!
33
+ repo_file_count(svn_module.path).should == file_count.to_i
34
+ end
35
+ end
36
+
37
+ Then /^there should be "([^"]*)" conflicted files(| in the new copy)$/ do |file_count,repo|
38
+ if repo == ""
39
+ mod = svn_module
40
+ else
41
+ mod = svn_module_2
42
+ end
43
+ changes = []
44
+ mod.indexed_changes.map {|i| changes << i if i.status[0] == :unmerged}
45
+ changes.length.should == file_count.to_i
46
+ end
47
+
48
+ When /^and I resolve "([^"]*)" conflicts(| in the new copy)$/ do |file,repo|
49
+ if repo == ""
50
+ mod = svn_module
51
+ else
52
+ mod = svn_module_2
53
+ end
54
+ changes = []
55
+ mod.indexed_changes.map {|i| changes << i if i.status[0] == :unmerged}
56
+ changes.each {|c| mod.resolve_conflict(c) if File.basename(c.path) == file}
57
+ end
@@ -0,0 +1,71 @@
1
+ require File.join(Redcar.asset_dir, "svnkit")
2
+ require 'java'
3
+ import 'org.tmatesoft.svn.core.io.SVNRepositoryFactory'
4
+
5
+ def scm_svn_fixtures
6
+ File.expand_path(File.dirname(__FILE__) + "/../fixtures")
7
+ end
8
+
9
+ # minus 3 for '.' and '..' and '.svn'
10
+ def repo_file_count(path)
11
+ (Dir.entries(path).size - 3).to_i
12
+ end
13
+
14
+ def parse_branch_path(branch_name)
15
+ if branch_name == 'trunk'
16
+ svn_module.trunk_path
17
+ else
18
+ svn_module.branch_path + "/#{branch_name}"
19
+ end
20
+ end
21
+
22
+ def svn_repository
23
+ "#{scm_svn_fixtures}/test_repo"
24
+ end
25
+
26
+ def working_copy
27
+ "my_repo"
28
+ end
29
+
30
+ def working_copy_2
31
+ "my_repo_2"
32
+ end
33
+
34
+ def svn_repository_url
35
+ "file://" + File.expand_path(svn_repository)
36
+ end
37
+
38
+ def create_dir(path)
39
+ FileUtils.mkdir_p "#{scm_svn_fixtures}/#{path}"
40
+ File.expand_path("#{scm_svn_fixtures}/#{path}")
41
+ end
42
+
43
+ def get_dir(path)
44
+ File.expand_path("#{scm_svn_fixtures}/#{path}")
45
+ end
46
+
47
+ def svn_module
48
+ @svn_module ||= Redcar::Scm::Subversion::Manager.new
49
+ end
50
+
51
+ def svn_module_2
52
+ @svn_module_2 ||= Redcar::Scm::Subversion::Manager.new
53
+ end
54
+
55
+ def reset_fixtures
56
+ FileUtils.rm_rf scm_svn_fixtures
57
+ FileUtils.mkdir_p scm_svn_fixtures
58
+ FileUtils.mkdir_p File.dirname(svn_repository)
59
+ SVNRepositoryFactory.createLocalRepository(Java::JavaIo::File.new(svn_repository),true,false)
60
+ svn_module
61
+ end
62
+
63
+ Before do
64
+ @svn_module = nil
65
+ reset_fixtures
66
+ end
67
+
68
+ After do
69
+ FileUtils.rm_rf(scm_svn_fixtures)
70
+ @svn_module = nil
71
+ end
@@ -0,0 +1,53 @@
1
+ Feature: Opening other branches as new projects
2
+
3
+ Scenario: Opening a branch from trunk
4
+ When I checkout a local repository
5
+ And I create a wc directory named "trunk,branches,branches/version1,branches/version2"
6
+ And I create a wc file named "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt"
7
+ And I add "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt" to the index
8
+ And I commit my changes with message "Initial commit"
9
+ Given I will open "trunk" branch as a new project
10
+ When I open a directory
11
+ And I note the number of windows
12
+ And I switch to "version1" branch
13
+ Then I should see 1 more window
14
+ And the window should have title "version1"
15
+
16
+ Scenario: Opening a branch from another branch
17
+ When I checkout a local repository
18
+ And I create a wc directory named "trunk,branches,branches/version1,branches/version2"
19
+ And I create a wc file named "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt"
20
+ And I add "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt" to the index
21
+ And I commit my changes with message "Initial commit"
22
+ Given I will open "version1" branch as a new project
23
+ When I open a directory
24
+ And I note the number of windows
25
+ And I switch to "version2" branch
26
+ Then I should see 1 more window
27
+ And the window should have title "version2"
28
+
29
+ Scenario: Opening trunk from a branch
30
+ When I checkout a local repository
31
+ And I create a wc directory named "trunk,branches,branches/version1,branches/version2"
32
+ And I create a wc file named "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt"
33
+ And I add "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt" to the index
34
+ And I commit my changes with message "Initial commit"
35
+ Given I will open "version1" branch as a new project
36
+ When I open a directory
37
+ And I note the number of windows
38
+ And I switch to "trunk" branch
39
+ Then I should see 1 more window
40
+ And the window should have title "trunk"
41
+
42
+ Scenario: Attempting to open the same branch from the branching dialog
43
+ When I checkout a local repository
44
+ And I create a wc directory named "trunk,branches,branches/version1,branches/version2"
45
+ And I create a wc file named "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt"
46
+ And I add "trunk/a.txt,branches/version1/b.txt,branches/version2/c.txt" to the index
47
+ And I commit my changes with message "Initial commit"
48
+ Given I will open "version1" branch as a new project
49
+ When I open a directory
50
+ And I note the number of windows
51
+ And I switch to "version1" branch
52
+ Then I should see 0 more windows
53
+ And the window should have title "version1"
@@ -0,0 +1,16 @@
1
+ Feature: Updating a working copy from a remote repository
2
+
3
+ Scenario: Updating a working copy
4
+ When I checkout a local repository
5
+ And I create a wc file named "foo.rb"
6
+ And I replace "foo.rb" contents with "Never gonna make you cry"
7
+ And I add "foo.rb" to the index
8
+ And I commit my changes with message "Hark! This is a commit."
9
+ Then if I checkout to a new working copy, it should have "1" files
10
+ And the contents of wc file "foo.rb" in the new copy should be "Never gonna make you cry"
11
+ When I replace "foo.rb" contents with "Never gonna say goodbye"
12
+ And I create a wc file named "bar.rb"
13
+ And I add "bar.rb" to the index
14
+ And I commit my changes with message "Yarr! This is another commit."
15
+ Then if I update my new working copy, it should have "2" files
16
+ And the contents of wc file "foo.rb" in the new copy should be "Never gonna say goodbye"
@@ -0,0 +1,445 @@
1
+
2
+ require 'java'
3
+ require 'scm_svn/change'
4
+ require 'redcar-svnkit'
5
+ require Redcar::SvnKit.jar_path
6
+
7
+ module Redcar
8
+ module Scm
9
+ module Subversion
10
+ class Manager
11
+ include Redcar::Scm::Model
12
+ attr_reader :path
13
+ include_package 'org.tmatesoft.svn.core.wc'
14
+ include_package 'org.tmatesoft.svn.core'
15
+ import 'org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory'
16
+ import 'org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl'
17
+ import 'org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory'
18
+ import 'org.tmatesoft.svn.core.io.SVNRepositoryFactory'
19
+
20
+ def client_manager
21
+ @manager ||= begin
22
+ m = SVNClientManager.newInstance()
23
+ DAVRepositoryFactory.setup()
24
+ SVNRepositoryFactoryImpl.setup()
25
+ FSRepositoryFactory.setup()
26
+ m
27
+ end
28
+ end
29
+
30
+ def repository_type
31
+ "subversion"
32
+ end
33
+
34
+ def self.scm_module
35
+ Redcar::Scm::Subversion::Manager
36
+ end
37
+
38
+ def self.supported?
39
+ true
40
+ end
41
+
42
+ def load(path)
43
+ raise "Already loaded repository" if @path
44
+ @path = path
45
+ end
46
+
47
+ def repository?(path)
48
+ File.exist?(File.join(path, %w{.svn}))
49
+ end
50
+
51
+ def refresh
52
+ cache.refresh
53
+ end
54
+
55
+ def cache
56
+ @cache ||= begin
57
+ c = BlockCache.new
58
+ end
59
+ end
60
+
61
+ def supported_commands
62
+ [:pull,:commit,:remote_init,:index,:switch_branch,:merge]
63
+ end
64
+
65
+ def trunk_path
66
+ if @path.include?('trunk')
67
+ trunk_path = @path[0,@path.index('trunk')] + 'trunk'
68
+ elsif @path.include?('branches')
69
+ trunk_path = @path[0,@path.index('branches')] + 'trunk'
70
+ else
71
+ trunk_path = @path + "/trunk"
72
+ end
73
+ trunk_path if repository?(trunk_path)
74
+ end
75
+
76
+ def branch_path
77
+ if trunk_path # no branches without a trunk
78
+ branch_path = trunk_path[0,trunk_path.index('trunk')] +'branches'
79
+ end
80
+ branch_path if branch_path and repository?(branch_path)
81
+ end
82
+
83
+ def branches
84
+ if trunk_path
85
+ branch_list = ['trunk']
86
+ if branch_path
87
+ Dir["#{branch_path}/*/"].map do |path|
88
+ branch_list << File.basename(path) if repository?(path)
89
+ end
90
+ end
91
+ else
92
+ branch_list = [File.basename(@path)]
93
+ end
94
+ branch_list
95
+ end
96
+
97
+ def current_branch
98
+ branch = File.basename(@path)
99
+ if trunk_path
100
+ if @path.include?(trunk_path) and repository?(trunk_path)
101
+ branch = 'trunk'
102
+ elsif @path.include?(branch_path) and repository?(branch_path)
103
+ Dir["#{branch_path}/*/"].map do |path|
104
+ branch = File.basename(path) if @path.include?(path)
105
+ end
106
+ end
107
+ end
108
+ branch
109
+ end
110
+
111
+ def switch!(branch)
112
+ unless current_branch == branch
113
+ if branch == "trunk"
114
+ new_path = trunk_path
115
+ else
116
+ new_path = "#{branch_path}/#{branch}"
117
+ end
118
+ if new_path and File.exist?(new_path)
119
+ window = Redcar.app.windows.detect {|w| w.title == File.basename(new_path)}
120
+ if window
121
+ Redcar.app.set_focussed_window(window)
122
+ else
123
+ Project::DirectoryOpenCommand.new(new_path).run
124
+ end
125
+ else
126
+ Application::Dialog.message_box("Path not found: #{new_path}.")
127
+ end
128
+ end
129
+ end
130
+
131
+ def merge!(branch)
132
+ unless current_branch == branch
133
+ if branch == "trunk"
134
+ new_path = trunk_path
135
+ else
136
+ new_path = "#{branch_path}/#{branch}"
137
+ end
138
+ if new_path and File.exist?(new_path)
139
+ client_manager.getDiffClient().doMerge(
140
+ Java::JavaIo::File.new(path), # current branch
141
+ SVNRevision::HEAD,
142
+ Java::JavaIo::File.new(new_path), # other branch
143
+ SVNRevision::HEAD,
144
+ Java::JavaIo::File.new(path), # destination
145
+ SVNDepth::INFINITY,
146
+ true, # useAncestry - if true then the paths ancestry will be noticed while calculating differences, otherwise not
147
+ false, # force - true to force the operation to run
148
+ false, # dryRun - if true then runs merge without any file changes
149
+ false # recordOnly - if true, records only the rusult of merge - mergeinfo data
150
+ )
151
+ end
152
+ end
153
+ end
154
+
155
+ def pull!(path=nil)
156
+ path = @path if not path
157
+ if repository?(@path)
158
+ client_manager.getUpdateClient().doUpdate(
159
+ Java::JavaIo::File.new(path),
160
+ SVNRevision::HEAD,
161
+ true, # allow unversioned files to exist in directory
162
+ false # store depth in directory
163
+ )
164
+ else
165
+ Application::Dialog.message_box("#{@path} is not a working copy.")
166
+ end
167
+ end
168
+
169
+ def remote_init(path,target)
170
+ client_manager.getUpdateClient().doCheckout(
171
+ SVNURL.parseURIEncoded(path),
172
+ Java::JavaIo::File.new(target),
173
+ SVNRevision::HEAD,
174
+ SVNRevision::HEAD,
175
+ SVNDepth::INFINITY,
176
+ true # allow unversioned files to exist already in directory
177
+ )
178
+ end
179
+
180
+ def index_add(change)
181
+ client_manager.getWCClient().doAdd(
182
+ Java::JavaIo::File.new(change.path), #wc item file
183
+ false, # if true, this method does not throw exceptions on already-versioned items
184
+ false, # if true, create a directory also at path
185
+ false, # not used; make use of makeParents instead
186
+ SVNDepth::INFINITY, #tree depth
187
+ false, # if true, does not apply ignore patterns to paths being added
188
+ true # if true, climb upper and schedule also all unversioned paths in the way
189
+ )
190
+ true # refresh tree
191
+ end
192
+
193
+ def index_ignore(change)
194
+ ignore_under_path(Java::JavaIo::File.new(File.dirname(change.path)).getAbsolutePath(),File.basename(change.path))
195
+ true # refresh tree
196
+ end
197
+
198
+ def index_ignore_all(extension,change)
199
+ ignore_under_path(@path,"*.#{extension}")
200
+ true
201
+ end
202
+
203
+ def ignore_under_path(path,pattern)
204
+ dir = Java::JavaIo::File.new(path)
205
+ prop = client_manager.getWCClient().doGetProperty(dir, SVNProperty::IGNORE,
206
+ SVNRevision::BASE, SVNRevision::WORKING)
207
+ if prop and not prop.getValue().toString().strip.empty?
208
+ prop = prop.getValue().toString() + "\n#{pattern}"
209
+ else
210
+ prop = pattern
211
+ end
212
+ client_manager.getWCClient().doSetProperty(dir, SVNProperty::IGNORE,
213
+ SVNPropertyValue.create(prop), false, false, nil)
214
+ end
215
+
216
+ def index_revert(change)
217
+ change_lists = Java::JavaUtil::ArrayList.new
218
+ client_manager.getWCClient().doRevert(
219
+ [Java::JavaIo::File.new(change.path)].to_java(Java::JavaIo::File),
220
+ SVNDepth::INFINITY,
221
+ change_lists # might be useful later
222
+ )
223
+ true # refresh tree
224
+ end
225
+
226
+ def index_delete(change)
227
+ if change.status[0] == :new
228
+ File.delete(change.path)
229
+ elsif change.status[0] == :indexed
230
+ index_unsave(change)
231
+ File.delete(File.new(change.path))
232
+ else
233
+ client_manager.getWCClient().doDelete(
234
+ Java::JavaIo::File.new(change.path),
235
+ false, # true to force operation to run
236
+ false, # true to delete files from filesystem
237
+ false # true to do a dry run
238
+ )
239
+ end
240
+ end
241
+
242
+ def index_save(change)
243
+ if change.status[0] == :unmerged
244
+ resolve_conflict(change)
245
+ end
246
+ end
247
+
248
+ def index_restore(change)
249
+ if change.status[0] == :missing
250
+ client_manager.getUpdateClient().doUpdate(
251
+ Java::JavaIo::File.new(change.path),
252
+ SVNRevision::HEAD,
253
+ SVNDepth::INFINITY,
254
+ true,
255
+ false
256
+ )
257
+ end
258
+ end
259
+
260
+ def index_unsave(change)
261
+ if change.status[0] == :new
262
+ # Do nothing, there's nothing to unsave
263
+ elsif change.status[0] == :indexed
264
+ index_revert(change)
265
+ else
266
+ Application::Dialog.message_box("#{change.path} is already in the repository. Use 'delete' to remove or revert to cancel local changes.")
267
+ end
268
+ end
269
+
270
+ def commit!(message,change=nil)
271
+ committer = client_manager.getCommitClient()
272
+ if change
273
+ paths = [Java::JavaIo::File.new(change.path)]
274
+ else
275
+ paths = []
276
+ indexed_changes.each { |c| paths << Java::JavaIo::File.new(c.path) }
277
+ end
278
+ packet = committer.doCollectCommitItems(
279
+ paths.to_java(Java::JavaIo::File),
280
+ true, # keep locks
281
+ false, # true to force
282
+ SVNDepth::INFINITY, # tree depth
283
+ [].to_java(:string) # changelist names array
284
+ )
285
+ idx = message.index(log_divider_message)
286
+ message = message[0,idx] if idx
287
+ committer.doCommit(packet, true, message)
288
+ true
289
+ end
290
+
291
+ def commit_message(change=nil)
292
+ msg = "\n\n#{log_divider_message}\n\n"
293
+ if change
294
+ msg << change.log_status + "\n"
295
+ else
296
+ indexed_changes.each do |c|
297
+ msg << c.log_status + "\n"
298
+ end
299
+ end
300
+ msg
301
+ end
302
+
303
+ def log_divider_message
304
+ "--This line, and those below, will be ignored--"
305
+ end
306
+
307
+ def uncommited_changes
308
+ indexed_changes + unindexed_changes
309
+ end
310
+
311
+ def unindexed_changes
312
+ populate_changes(@path,false)
313
+ end
314
+
315
+ def indexed_changes
316
+ populate_changes(@path,true)
317
+ end
318
+
319
+ def populate_changes(path,indexed)
320
+ nodes = []
321
+ find_dirs(path,indexed,nodes)
322
+ nodes.sort_by{|node| node.path}.sort_by do |node|
323
+ if File.directory?(node.path)
324
+ 0
325
+ else
326
+ 1
327
+ end
328
+ end
329
+ end
330
+
331
+ def find_dirs(path,indexed,nodes=[])
332
+ Dir["#{path.to_s}/*/"].map do |a|
333
+ #FIXME: find dirs beneath iff 'a' is not ignored
334
+ status = client_manager.getStatusClient().doStatus(
335
+ Java::JavaIo::File.new(a),false).getContentsStatus()
336
+ find_dirs(a,indexed,nodes) if versioned_statuses.include?(status)
337
+ status = check_file_status(a,indexed)
338
+ if status
339
+ diff_client = client_manager.getDiffClient()
340
+ nodes << Scm::Subversion::Change.new(a,status,[],diff_client)
341
+ end
342
+ end
343
+ check_files(path,indexed,nodes)
344
+ end
345
+
346
+ def check_files(path,indexed,nodes)
347
+ files = File.join(path.to_s, "*")
348
+ Dir.glob(files).each do |file_path|
349
+ if File.file?(file_path)
350
+ status = check_file_status(file_path,indexed)
351
+ if status
352
+ diff_client = client_manager.getDiffClient()
353
+ nodes << Scm::Subversion::Change.new(file_path,status,[],diff_client)
354
+ end
355
+ end
356
+ end
357
+ end
358
+
359
+ def check_file_status(path,indexed)
360
+ status_client = client_manager.getStatusClient()
361
+ status = status_client.doStatus(Java::JavaIo::File.new(path),false).getContentsStatus()
362
+ if indexed
363
+ s = case status
364
+ when SVNStatusType::STATUS_MODIFIED then :changed
365
+ when SVNStatusType::STATUS_MISSING then :missing
366
+ when SVNStatusType::STATUS_DELETED then :deleted
367
+ when SVNStatusType::STATUS_ADDED then :indexed
368
+ when SVNStatusType::STATUS_CONFLICTED then :unmerged
369
+ end
370
+ s
371
+ else
372
+ s = case status
373
+ when SVNStatusType::STATUS_UNVERSIONED then :new
374
+ end
375
+ s
376
+ end
377
+ end
378
+
379
+ def versioned_statuses
380
+ [
381
+ SVNStatusType::STATUS_MODIFIED,
382
+ SVNStatusType::STATUS_MISSING,
383
+ SVNStatusType::STATUS_DELETED,
384
+ SVNStatusType::STATUS_ADDED,
385
+ SVNStatusType::STATUS_CONFLICTED,
386
+ SVNStatusType::STATUS_NORMAL
387
+ ]
388
+ end
389
+
390
+ def resolve_conflict(change)
391
+ client_manager.getWCClient().doResolve(
392
+ Java::JavaIo::File.new(change.path),
393
+ SVNDepth::IMMEDIATES, # change and files beneath
394
+ true, # resolve contents conflict
395
+ true, # resolve property conflict
396
+ true, # resolve tree conflict -- man, I hate those
397
+ SVNConflictChoice.MERGED # choose file as edited and resolved
398
+ )
399
+ end
400
+
401
+ def file_diff(path)
402
+ differ = client_manager.getDiffClient()
403
+ stream = Java::JavaIo::ByteArrayOutputStream.new
404
+ file = Java::JavaIo::File.new(path)
405
+ change_lists = Java::JavaUtil::ArrayList.new
406
+ differ.doDiff(file, SVNRevision::BASE,
407
+ file, SVNRevision::WORKING,
408
+ SVNDepth::IMMEDIATES,
409
+ false,
410
+ stream,
411
+ change_lists)
412
+ stream.toString()
413
+ end
414
+
415
+ def translations
416
+ t = super
417
+ t[:index_unsave] = "Remove from commit"
418
+ t[:indexed_changes] = "Uncommitted changes"
419
+ t[:unindexed_changes] = "External files"
420
+ t[:remote_init] = "Checkout Subversion Repository"
421
+ t[:push] = "Commit changes",
422
+ t[:pull] = "Update working copy",
423
+ t[:switch_branches] = "Open branch"
424
+ t
425
+ end
426
+
427
+ def self.debug
428
+ Redcar::Scm::Manager.debug
429
+ end
430
+
431
+ def debug
432
+ Redcar::Scm::Subversion::Manager.debug
433
+ end
434
+
435
+ def inspect
436
+ if @path
437
+ %Q{#<Scm::Subversion::Manager "#{@path}">}
438
+ else
439
+ %Q{#<Scm::Subversion::Manager>}
440
+ end
441
+ end
442
+ end
443
+ end
444
+ end
445
+ end