redcar 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. data/CHANGES +41 -1
  2. data/README.md +1 -1
  3. data/Rakefile +5 -6
  4. data/lib/plugin_manager/lib/plugin_manager.rb +1 -2
  5. data/lib/redcar.rb +19 -14
  6. data/lib/redcar/installer.rb +21 -17
  7. data/lib/redcar/runner.rb +10 -7
  8. data/lib/redcar/usage.rb +1 -0
  9. data/lib/redcar_quick_start.rb +8 -12
  10. data/lib/regex_replace.rb +3 -3
  11. data/plugins/application/features/step_definitions/menu_steps.rb +10 -0
  12. data/plugins/application/features/step_definitions/speedbar_steps.rb +8 -2
  13. data/plugins/application/features/step_definitions/tree_steps.rb +48 -6
  14. data/plugins/application/features/step_definitions/window_steps.rb +9 -4
  15. data/plugins/application/features/support/env.rb +20 -1
  16. data/plugins/application/features/support/fake_event.rb +14 -0
  17. data/plugins/application/lib/application.rb +29 -12
  18. data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +19 -0
  19. data/plugins/application/lib/application/speedbar.rb +23 -17
  20. data/plugins/application/lib/application/tab.rb +20 -15
  21. data/plugins/application/lib/application/treebook.rb +10 -7
  22. data/plugins/application/lib/application/window.rb +1 -1
  23. data/plugins/application/plugin.rb +1 -1
  24. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +4 -4
  25. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +15 -4
  26. data/plugins/application_swt/lib/application_swt/icon.rb +3 -5
  27. data/plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb +4 -4
  28. data/plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb +5 -5
  29. data/plugins/application_swt/lib/application_swt/speedbar.rb +34 -120
  30. data/plugins/application_swt/lib/application_swt/speedbar/button_item.rb +20 -0
  31. data/plugins/application_swt/lib/application_swt/speedbar/combo_item.rb +38 -0
  32. data/plugins/application_swt/lib/application_swt/speedbar/label_item.rb +15 -0
  33. data/plugins/application_swt/lib/application_swt/speedbar/slider_item.rb +32 -0
  34. data/plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb +36 -0
  35. data/plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb +29 -0
  36. data/plugins/application_swt/lib/application_swt/tab.rb +1 -3
  37. data/plugins/application_swt/lib/application_swt/toolbar.rb +19 -20
  38. data/plugins/application_swt/lib/application_swt/treebook.rb +24 -9
  39. data/plugins/application_swt/lib/application_swt/window.rb +110 -98
  40. data/plugins/application_swt/lib/swt/vtab_folder.rb +77 -32
  41. data/plugins/application_swt/lib/swt/vtab_item.rb +9 -0
  42. data/plugins/application_swt/lib/swt/vtab_label.rb +63 -23
  43. data/plugins/application_swt/plugin.rb +1 -1
  44. data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +2 -2
  45. data/plugins/comment/features/line_comment.feature +116 -4
  46. data/plugins/comment/lib/comment.rb +18 -16
  47. data/plugins/connection_manager/lib/connection_manager/commands.rb +1 -1
  48. data/plugins/connection_manager/lib/connection_manager/private_key_store.rb +5 -3
  49. data/plugins/declarations/lib/declarations.rb +1 -1
  50. data/plugins/declarations/lib/declarations/parser.rb +68 -20
  51. data/plugins/document_search/features/replace.feature +18 -0
  52. data/plugins/document_search/lib/document_search.rb +37 -54
  53. data/plugins/document_search/lib/document_search/replace_all_command.rb +27 -0
  54. data/plugins/document_search/lib/document_search/replace_command.rb +38 -0
  55. data/plugins/document_search/lib/document_search/replace_next_command.rb +27 -0
  56. data/plugins/document_search/lib/document_search/search_and_replace.rb +17 -24
  57. data/plugins/edit_view/features/step_definitions/editing_steps.rb +4 -4
  58. data/plugins/edit_view/features/step_definitions/tab_steps.rb +9 -0
  59. data/plugins/edit_view/features/step_definitions/window_steps.rb +0 -12
  60. data/plugins/edit_view/lib/edit_view/document.rb +2 -0
  61. data/plugins/edit_view/lib/edit_view/document/command.rb +8 -8
  62. data/plugins/edit_view/lib/edit_view/edit_tab.rb +21 -7
  63. data/plugins/edit_view/lib/edit_view/select_font_dialog.rb +6 -0
  64. data/plugins/edit_view/lib/edit_view/select_theme_dialog.rb +6 -0
  65. data/plugins/edit_view_swt/lib/edit_view_swt.rb +92 -43
  66. data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +17 -4
  67. data/plugins/find-in-project/lib/find_in_project.rb +1 -4
  68. data/plugins/find-in-project/lib/find_in_project/commands.rb +0 -14
  69. data/plugins/find-in-project/lib/find_in_project/controllers.rb +12 -0
  70. data/plugins/find-in-project/lib/find_in_project/views/index.html.erb +5 -0
  71. data/plugins/groovy/features/fixtures/test.groovy +0 -0
  72. data/plugins/groovy/features/step_definitions/groovy_steps.rb +27 -0
  73. data/plugins/groovy/features/support/env.rb +27 -0
  74. data/plugins/groovy/features/syntax_check_groovy.feature +72 -0
  75. data/plugins/groovy/lib/syntax_check/groovy.rb +76 -0
  76. data/plugins/groovy/plugin.rb +7 -0
  77. data/plugins/help/lib/help.rb +28 -4
  78. data/plugins/help/lib/help/help_tab.rb +11 -0
  79. data/plugins/help/lib/help/view_controller.rb +25 -0
  80. data/plugins/help/plugin.rb +2 -1
  81. data/plugins/{view_shortcuts → help}/views/default.css +0 -0
  82. data/plugins/{view_shortcuts → help}/views/index.html.erb +1 -1
  83. data/plugins/{view_shortcuts → help}/views/redcar_small_icon.png +0 -0
  84. data/plugins/html_view/features/browser_bar.feature +47 -0
  85. data/plugins/html_view/features/fixtures/other.html +1 -0
  86. data/plugins/html_view/features/fixtures/sample.html +1 -0
  87. data/plugins/html_view/features/step_definitions/html_view_steps.rb +45 -5
  88. data/plugins/html_view/features/support/env.rb +26 -0
  89. data/plugins/html_view/features/web_preview.feature +21 -0
  90. data/plugins/html_view/lib/html_controller.rb +5 -5
  91. data/plugins/html_view/lib/html_view.rb +62 -10
  92. data/plugins/{web_bookmarks/lib/web_bookmarks → html_view/lib/html_view}/browser_bar.rb +32 -20
  93. data/plugins/html_view/lib/html_view/commands.rb +64 -0
  94. data/plugins/{web_bookmarks/lib/web_bookmarks/view_controller.rb → html_view/lib/html_view/default_controller.rb} +7 -6
  95. data/plugins/html_view/lib/html_view/html_tab.rb +17 -6
  96. data/plugins/html_view/plugin.rb +3 -3
  97. data/plugins/{web_bookmarks → html_view}/views/index.html.erb +0 -0
  98. data/plugins/javascript/features/fixtures/test.js +0 -0
  99. data/plugins/javascript/features/support/env.rb +4 -0
  100. data/plugins/javascript/features/syntax_check_javascript.feature +27 -0
  101. data/plugins/javascript/lib/syntax_check/javascript.rb +52 -0
  102. data/plugins/javascript/plugin.rb +7 -0
  103. data/plugins/javascript/vendor/jslint.js +539 -0
  104. data/plugins/macros/lib/macros/commands.rb +3 -3
  105. data/plugins/open_default_app/lib/open_default_app.rb +29 -3
  106. data/plugins/open_default_app/plugin.rb +1 -1
  107. data/plugins/outline_view/features/outline_view.feature +79 -0
  108. data/plugins/outline_view/features/step_definitions/outline_steps.rb +45 -0
  109. data/plugins/outline_view/lib/outline_view.rb +1 -1
  110. data/plugins/outline_view/spec/fixtures/some_project/javascript.js +10 -0
  111. data/plugins/outline_view/spec/fixtures/some_project/nothing_to_see.rb +0 -0
  112. data/plugins/outline_view/spec/fixtures/some_project/one_lonely_class.rb +2 -0
  113. data/plugins/outline_view/spec/fixtures/some_project/similar_names.rb +18 -0
  114. data/plugins/outline_view/spec/fixtures/some_project/something_fancy.rb +736 -0
  115. data/plugins/outline_view/spec/fixtures/some_project/trailing_space.rb +5 -0
  116. data/plugins/outline_view_swt/lib/outline_view_swt.rb +17 -19
  117. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +1 -4
  118. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +12 -3
  119. data/plugins/project/features/close_directory_tree.feature +27 -0
  120. data/plugins/project/features/highlight_focussed_tab.feature +45 -1
  121. data/plugins/project/features/open_and_save_files.feature +33 -0
  122. data/plugins/project/features/open_directory_tree.feature +37 -11
  123. data/plugins/project/features/step_definitions/directory_steps.rb +1 -1
  124. data/plugins/project/features/step_definitions/drb_steps.rb +40 -0
  125. data/plugins/project/features/support/env.rb +17 -0
  126. data/plugins/project/lib/project.rb +12 -2
  127. data/plugins/project/lib/project/commands.rb +101 -99
  128. data/plugins/project/lib/project/drb_service.rb +55 -65
  129. data/plugins/project/lib/project/manager.rb +29 -4
  130. data/plugins/project/lib/project/project_tree_controller.rb +24 -0
  131. data/plugins/project/lib/project/support/trash.rb +1 -0
  132. data/plugins/redcar/redcar.rb +100 -37
  133. data/plugins/redcar_debug/lib/redcar_debug.rb +3 -3
  134. data/plugins/repl/features/step_definitions/repl_steps.rb +3 -0
  135. data/plugins/repl/lib/repl.rb +4 -11
  136. data/plugins/repl/lib/repl/repl_tab.rb +26 -0
  137. data/plugins/ruby/features/fixtures/test.rb +0 -0
  138. data/plugins/ruby/features/support/env.rb +4 -0
  139. data/plugins/ruby/features/syntax_check_ruby.feature +25 -0
  140. data/plugins/runnables/features/command_tree.feature +28 -0
  141. data/plugins/runnables/lib/runnables.rb +1 -0
  142. data/plugins/runnables/lib/runnables/commands.rb +4 -4
  143. data/plugins/runnables/lib/runnables/output_processor.rb +5 -5
  144. data/plugins/runnables/lib/runnables/tree_mirror/tree_controller.rb +2 -7
  145. data/plugins/runnables/lib/runnables/tree_mirror/tree_mirror.rb +13 -8
  146. data/plugins/scm_git/lib/scm_git/change.rb +5 -5
  147. data/plugins/strip_trailing_spaces/features/fixtures/test.txt +3 -0
  148. data/plugins/strip_trailing_spaces/features/strip_trailing_spaces.feature +34 -0
  149. data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +3 -38
  150. data/plugins/swt/lib/swt.rb +5 -13
  151. data/plugins/swt/lib/swt/full_swt.rb +15 -13
  152. data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +7 -0
  153. data/plugins/syntax_check/lib/syntax_check.rb +21 -3
  154. data/plugins/syntax_check/lib/syntax_check/error.rb +4 -3
  155. data/plugins/task_manager/lib/task_manager.rb +1 -1
  156. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Preferences/Autocompletions.tmPreferences +345 -0
  157. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Preferences/Symbol List Target.tmPreferences +22 -0
  158. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Snippets/Doc Banner.tmSnippet +20 -0
  159. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Syntaxes/Ant.tmLanguage +247 -0
  160. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/info.plist +55 -0
  161. data/plugins/textmate/vendor/redcar-bundles/Bundles/RedcarRepl.tmbundle/Syntaxes/GroovyRepl.plist +40 -0
  162. data/plugins/textmate/vendor/redcar-bundles/Bundles/RedcarRepl.tmbundle/info.plist +1 -1
  163. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby Haml.tmbundle/Syntaxes/Ruby_Haml.tmLanguage +0 -1
  164. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby Sass.tmbundle/Syntaxes/Ruby Sass.tmLanguage +626 -0
  165. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby Sass.tmbundle/info.plist +16 -0
  166. data/plugins/todo_list/features/support/env.rb +8 -0
  167. data/plugins/todo_list/features/todo_list.feature +26 -0
  168. data/plugins/todo_list/lib/todo_list.rb +1 -0
  169. data/plugins/todo_list/lib/todo_list/file_parser.rb +23 -19
  170. data/plugins/todo_list/lib/todo_list/todo_controller.rb +60 -100
  171. data/plugins/todo_list/spec/fixtures/project/FIXME.file +3 -0
  172. data/plugins/todo_list/spec/fixtures/project/NOTE.ignored.file +1 -0
  173. data/plugins/todo_list/spec/fixtures/project/OPTIMIZE_colon.file +1 -0
  174. data/plugins/todo_list/spec/fixtures/project/XXX.ignored +1 -0
  175. data/plugins/todo_list/spec/fixtures/project/ignored_directory/TODO.file +2 -0
  176. data/plugins/todo_list/spec/fixtures/settings.rb +11 -0
  177. data/plugins/todo_list/spec/spec_helper.rb +6 -0
  178. data/plugins/todo_list/spec/todo_list/file_parser_spec.rb +35 -0
  179. data/plugins/tree/lib/tree.rb +1 -0
  180. data/plugins/tree/lib/tree/command.rb +5 -0
  181. data/plugins/web_bookmarks/features/bookmark.feature +37 -0
  182. data/plugins/web_bookmarks/features/fixtures/other.html +1 -0
  183. data/plugins/web_bookmarks/features/fixtures/sample.html +1 -0
  184. data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +4 -0
  185. data/plugins/web_bookmarks/features/support/env.rb +26 -0
  186. data/plugins/web_bookmarks/lib/web_bookmarks.rb +0 -10
  187. data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +10 -1
  188. data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +1 -47
  189. data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +21 -14
  190. data/{plugins/application → share}/icons/close.png +0 -0
  191. data/{plugins/application → share}/icons/darwin-file.png +0 -0
  192. data/{plugins/application → share}/icons/darwin-folder.png +0 -0
  193. data/share/icons/open-source-flipped.png +0 -0
  194. data/{plugins/application/icons/redcar_icon_beta_dev.png → share/icons/redcar-icon-beta-dev.png} +0 -0
  195. data/{plugins/application/icons/redcar_icon_beta.png → share/icons/redcar-icon-beta.png} +0 -0
  196. data/{plugins/application → share}/icons/redcar-splash.png +0 -0
  197. metadata +90 -30
  198. data/lib/redcar/jvm_options_probe.rb +0 -33
  199. data/plugins/document_search/lib/document_search/replace.rb +0 -113
  200. data/plugins/document_search/lib/document_search/search.rb +0 -45
  201. data/plugins/outline_view_swt/lib/icons/alias.png +0 -0
  202. data/plugins/outline_view_swt/lib/icons/assignment.png +0 -0
  203. data/plugins/outline_view_swt/lib/icons/attribute.png +0 -0
  204. data/plugins/outline_view_swt/lib/icons/class.png +0 -0
  205. data/plugins/outline_view_swt/lib/icons/interface.png +0 -0
  206. data/plugins/outline_view_swt/lib/icons/method.png +0 -0
  207. data/plugins/strip_trailing_spaces/CHANGELOG +0 -12
  208. data/plugins/strip_trailing_spaces/README.md +0 -32
  209. data/plugins/view_shortcuts/lib/view_shortcuts.rb +0 -52
  210. data/plugins/view_shortcuts/plugin.rb +0 -11
@@ -1,7 +1,7 @@
1
1
 
2
2
  Plugin.define do
3
3
  name "application"
4
- version "1.1"
4
+ version "1.2"
5
5
  file "lib", "application"
6
6
  object "Redcar::Application"
7
7
  dependencies "core", ">0"
@@ -89,8 +89,8 @@ module Redcar
89
89
  def tool_tip(message, location)
90
90
  tool_tip = Swt::Widgets::ToolTip.new(parent_shell, Swt::SWT::ICON_INFORMATION)
91
91
  tool_tip.set_message(message)
92
- tool_tip.set_visible(true)
93
92
  tool_tip.set_location(*get_coordinates(location))
93
+ tool_tip.set_visible(true)
94
94
  end
95
95
 
96
96
  def popup_menu(menu, location)
@@ -125,8 +125,8 @@ module Redcar
125
125
  dialog = Swt::Widgets::FileDialog.new(parent_shell, type)
126
126
  dialog.setText("Save File");
127
127
  if options[:filter_path]
128
- dialog.setText("Save File As") if type == Swt::SWT::SAVE
129
- dialog.setText("Open File") if type == Swt::SWT::OPEN
128
+ dialog.setText("Save File As") if type == Swt::SWT::SAVE
129
+ dialog.setText("Open File") if type == Swt::SWT::OPEN
130
130
  dialog.set_filter_path(options[:filter_path])
131
131
  end
132
132
  Redcar.app.protect_application_focus do
@@ -136,7 +136,7 @@ module Redcar
136
136
 
137
137
  def directory_dialog(options)
138
138
  dialog = Swt::Widgets::DirectoryDialog.new(parent_shell)
139
- dialog.setText("Open Directory")
139
+ dialog.setText("Open Directory")
140
140
  if options[:filter_path]
141
141
  dialog.set_filter_path(options[:filter_path])
142
142
  end
@@ -110,6 +110,7 @@ module Redcar
110
110
 
111
111
  def widgetSelected(e)
112
112
  @controller.text_focus
113
+ @controller.widget_selected
113
114
  end
114
115
  end
115
116
 
@@ -153,6 +154,12 @@ module Redcar
153
154
  end
154
155
  end
155
156
 
157
+ def widget_selected
158
+ if @model.step?
159
+ @model.moved_to(@dialog.list.get_selection.first, @dialog.list.get_selection_index)
160
+ end
161
+ end
162
+
156
163
  def text_focus
157
164
  @dialog.text.set_focus
158
165
  end
@@ -187,15 +194,19 @@ module Redcar
187
194
  end
188
195
 
189
196
  def move_down
190
- curr_ix = @dialog.list.get_selection_index
191
- new_ix = [curr_ix + 1, @dialog.list.get_item_count - 1].min
192
- @dialog.list.set_selection(new_ix)
197
+ move_selection(1, @dialog.list.get_item_count - 1)
193
198
  end
194
199
 
195
200
  def move_up
201
+ move_selection(-1, 0)
202
+ end
203
+
204
+ def move_selection(step, border)
196
205
  curr_ix = @dialog.list.get_selection_index
197
- new_ix = [curr_ix - 1, 0].max
206
+ new_ix = curr_ix + step
207
+ new_ix = border if (new_ix <=> border) == step
198
208
  @dialog.list.set_selection(new_ix)
209
+ widget_selected
199
210
  end
200
211
 
201
212
  private
@@ -9,7 +9,7 @@ module Redcar
9
9
  when :file
10
10
  file_image
11
11
  when Symbol
12
- image(File.expand_path(File.join(Redcar::ICONS_DIRECTORY, icon.to_s + ".png")))
12
+ image(File.expand_path(File.join(Redcar::ICONS_DIRECTORY, icon.to_s.gsub(/_/, "-") + ".png")))
13
13
  when String
14
14
  image(icon)
15
15
  end
@@ -24,13 +24,11 @@ module Redcar
24
24
  end
25
25
 
26
26
  def self.dir_image
27
- path = File.join(Redcar.root, %w(plugins application icons darwin-folder.png))
28
- image(path)
27
+ swt_image(:darwin_folder)
29
28
  end
30
29
 
31
30
  def self.file_image
32
- path = File.join(Redcar.root, %w(plugins application icons darwin-file.png))
33
- image(path)
31
+ swt_image(:darwin_file)
34
32
  end
35
33
  end
36
34
  end
@@ -8,9 +8,9 @@ module Redcar
8
8
  # A TabPaintListener allows clients to draw
9
9
  # indicators next to a tab in the tab folder
10
10
  class TabPaintListener
11
- include org.eclipse.swt.events.PaintListener
11
+ include org.eclipse.swt.events.PaintListener
12
12
  attr_writer :item, :indicate_front
13
-
13
+
14
14
  def paintControl(event)
15
15
  event.gc.background = ApplicationSWT.display.system_color Swt::SWT::COLOR_DARK_GRAY
16
16
  if @item && @item.bounds
@@ -100,10 +100,10 @@ module Redcar
100
100
  tab_controller.move_tab_widget_to_position(position)
101
101
  end
102
102
 
103
- # Find the CTabItem targeted by a given event
103
+ # Find the CTabItem targeted by a given event
104
104
  def event_to_tab_widget(event)
105
105
  if tab_folder.item_count > 0
106
- tab_folder.item(tab_folder.to_control(event.x, event.y)) or
106
+ tab_folder.item(tab_folder.to_control(event.x, event.y)) or
107
107
  tab_folder.items[tab_folder.item_count - 1]
108
108
  end
109
109
  end
@@ -4,22 +4,22 @@ module Redcar
4
4
  class TabTransfer < Swt::DND::ByteArrayTransfer
5
5
 
6
6
  class TabType
7
- # Empty class for now, until we figure out which
7
+ # Empty class for now, until we figure out which
8
8
  # information we want to attach to the transfer.
9
9
  # This _will_ be needed to DnD tabs between windows
10
10
  end
11
-
11
+
12
12
  TAB_TYPE = "TabType"
13
13
  TAB_TYPE_ID = register_type(TAB_TYPE)
14
14
  @@instance = nil
15
-
15
+
16
16
  def self.get_instance
17
17
  @@instance || TabTransfer.new
18
18
  end
19
19
 
20
20
  def javaToNative(types, transfer_data)
21
21
  return if (types.nil? || types.empty? || (types.first.class != TabType))
22
-
22
+
23
23
  begin
24
24
  # write data to a byte array and then ask super to convert to
25
25
  out = java.io.ByteArrayOutputStream.new
@@ -40,7 +40,7 @@ module Redcar
40
40
  if (is_supported_type(transfer_data))
41
41
  buffer = super
42
42
  return nil unless buffer
43
-
43
+
44
44
  data = []
45
45
  begin
46
46
  input = java.io.ByteArrayInputStream.new(buffer)
@@ -1,10 +1,17 @@
1
+ require 'application_swt/speedbar/button_item'
2
+ require 'application_swt/speedbar/combo_item'
3
+ require 'application_swt/speedbar/label_item'
4
+ require 'application_swt/speedbar/slider_item'
5
+ require 'application_swt/speedbar/text_box_item'
6
+ require 'application_swt/speedbar/toggle_item'
7
+
1
8
  module Redcar
2
9
  class ApplicationSWT
3
10
  class Speedbar
4
11
  include Redcar::ReentryHelpers
5
-
12
+
6
13
  attr_reader :widget
7
-
14
+
8
15
  def initialize(window, parent, model)
9
16
  @window_model = window
10
17
  @parent = parent
@@ -19,12 +26,12 @@ module Redcar
19
26
  @parent.layout
20
27
  @model.after_draw if @model.respond_to?(:after_draw)
21
28
  end
22
-
29
+
23
30
  def close
24
31
  @composite.dispose
25
32
  @parent.layout
26
33
  end
27
-
34
+
28
35
  def disable_menu_items
29
36
  key_strings = []
30
37
  @model.__items.each do |i|
@@ -36,34 +43,34 @@ module Redcar
36
43
  ApplicationSWT::Menu.disable_items(key_string)
37
44
  end
38
45
  end
39
-
46
+
40
47
  def num_columns
41
48
  @model.__items.select {|i| !i.is_a?(Redcar::Speedbar::KeyItem) }.length
42
49
  end
43
-
50
+
44
51
  def key_items
45
52
  @model.__items.select {|i| i.respond_to?(:key) and i.key }
46
53
  end
47
-
54
+
48
55
  def keyable_widgets
49
56
  @keyable_widgets ||= []
50
57
  end
51
-
58
+
52
59
  def focussable_widgets
53
60
  @focussable_widgets ||= []
54
61
  end
55
-
62
+
56
63
  def create_widgets
57
64
  create_bar_widget
58
65
  create_item_widgets
59
66
  end
60
-
67
+
61
68
  def create_bar_widget
62
69
  @composite = Swt::Widgets::Composite.new(@parent, Swt::SWT::NONE)
63
70
  grid_data = Swt::Layout::GridData.new
64
71
  grid_data.grabExcessHorizontalSpace = true
65
72
  grid_data.horizontalAlignment = Swt::Layout::GridData::FILL
66
- @composite.setLayoutData(grid_data)
73
+ @composite.setLayoutData(grid_data)
67
74
  layout = Swt::Layout::GridLayout.new(num_columns + 1, false)
68
75
  layout.verticalSpacing = 0
69
76
  layout.marginHeight = 0
@@ -75,7 +82,7 @@ module Redcar
75
82
 
76
83
  label.add_mouse_listener(MouseListener.new(self))
77
84
  end
78
-
85
+
79
86
  def execute_listener_in_model(item, *args)
80
87
  if item.listener
81
88
  begin
@@ -85,144 +92,51 @@ module Redcar
85
92
  end
86
93
  end
87
94
  end
88
-
95
+
89
96
  def create_item_widgets
90
97
  @model.__items.each do |item|
91
- case item
92
- when Redcar::Speedbar::LabelItem
93
- label = Swt::Widgets::Label.new(@composite, 0)
94
- label.set_text(item.text)
95
- item.add_listener(:changed_text) do |new_text|
96
- label.set_text(item.text)
97
- end
98
- when Redcar::Speedbar::TextBoxItem
99
- edit_view = EditView.new
100
- item.edit_view = edit_view
101
- edit_view_swt = EditViewSWT.new(edit_view, @composite, :single_line => true)
102
- mate_text = edit_view_swt.mate_text
103
- mate_text.set_font(EditView.font, EditView.font_size)
104
- mate_text.getControl.set_text(item.value)
105
- mate_text.set_grammar_by_name "Ruby"
106
- mate_text.set_theme_by_name(EditView.theme)
107
- mate_text.set_root_scope_by_content_name("Ruby", "string.regexp.classic.ruby")
108
- gridData = Swt::Layout::GridData.new
109
- gridData.grabExcessHorizontalSpace = true
110
- gridData.horizontalAlignment = Swt::Layout::GridData::FILL
111
- mate_text.getControl.set_layout_data(gridData)
112
- edit_view.document.add_listener(:changed) do
113
- ignore(item.name) do
114
- item.value = edit_view.document.to_s
115
- execute_listener_in_model(item, item.value)
116
- end
117
- end
118
- item.add_listener(:changed_value) do |new_value|
119
- ignore(item.name) do
120
- mate_text.getControl.set_text(new_value)
121
- end
122
- end
123
- keyable_widgets << mate_text.getControl
124
- focussable_widgets << mate_text.getControl
125
- when Redcar::Speedbar::ButtonItem
126
- button = Swt::Widgets::Button.new(@composite, 0)
127
- button.set_text(item.text)
128
- button.add_selection_listener do
129
- execute_listener_in_model(item)
130
- end
131
- item.add_listener(:changed_text) do |new_text|
132
- button.set_text(item.text)
133
- end
134
- keyable_widgets << button
135
- focussable_widgets << button
136
- when Redcar::Speedbar::ComboItem
137
- combo = Swt::Widgets::Combo.new(@composite, Swt::SWT::READ_ONLY)
138
- combo.items = item.items.to_java(:string)
139
- if item.value
140
- combo.select(item.items.index(item.value))
141
- end
142
- combo.add_selection_listener do
143
- ignore(item.name) do
144
- item.value = combo.text
145
- execute_listener_in_model(item, item.value)
146
- end
147
- end
148
- item.add_listener(:changed_items) do |new_items|
149
- rescue_speedbar_errors do
150
- ignore(item.name) do
151
- combo.items = item.items.to_java(:string)
152
- item.value = nil
153
- end
154
- end
155
- end
156
- item.add_listener(:changed_value) do |new_value|
157
- rescue_speedbar_errors do
158
- ignore(item.name) do
159
- combo.select(item.items.index(item.value))
160
- end
161
- end
162
- end
163
- keyable_widgets << combo
164
- focussable_widgets << combo
165
- when Redcar::Speedbar::ToggleItem
166
- button = Swt::Widgets::Button.new(@composite, Swt::SWT::CHECK)
167
- button.set_text(item.text)
168
- button.set_selection(!!item.value)
169
- button.add_selection_listener do
170
- item.value = button.get_selection
171
- execute_listener_in_model(item, item.value)
172
- end
173
- item.add_listener(:changed_text) do |new_text|
174
- rescue_speedbar_errors do
175
- button.set_text = new_text
176
- end
177
- end
178
- item.add_listener(:changed_value) do |new_value|
179
- rescue_speedbar_errors do
180
- button.set_selection(!!new_value)
181
- end
182
- end
183
- keyable_widgets << button
184
- focussable_widgets << button
185
- end
98
+ swt_klass = self.class.const_get(item.class.to_s.split("::").last)
99
+ swt_klass.new(self, @composite, item)
186
100
  end
187
101
  end
188
-
102
+
189
103
  class KeyListener
190
104
  def initialize(speedbar)
191
105
  @speedbar = speedbar
192
106
  end
193
-
107
+
194
108
  def key_pressed(e)
195
109
  @speedbar.key_press(e)
196
110
  end
197
-
111
+
198
112
  def key_released(e)
199
113
  end
200
114
  end
201
-
115
+
202
116
  class MouseListener
203
117
  def initialize(speedbar)
204
118
  @speedbar = speedbar
205
119
  end
206
-
120
+
207
121
  def mouse_down(*_); end
208
-
122
+
209
123
  def mouse_up(*_)
210
124
  @speedbar.close_pressed
211
125
  end
212
-
126
+
213
127
  def mouse_double_click(*_); end
214
128
  end
215
-
129
+
216
130
  def attach_key_listeners
217
131
  keyable_widgets.each do |widget|
218
132
  widget.add_key_listener(KeyListener.new(self))
219
133
  end
220
134
  end
221
-
135
+
222
136
  def close_pressed
223
137
  @window_model.close_speedbar
224
138
  end
225
-
139
+
226
140
  def key_press(e)
227
141
  return if Application::Dialog.in_dialog?
228
142
  key_string = Menu::BindingTranslator.key_string(e)
@@ -241,7 +155,7 @@ module Redcar
241
155
  end
242
156
  end
243
157
  end
244
-
158
+
245
159
  def rescue_speedbar_errors
246
160
  begin
247
161
  yield
@@ -255,7 +169,7 @@ module Redcar
255
169
  end
256
170
  end
257
171
  end
258
-
172
+
259
173
  def error_in_listener(e)
260
174
  if e.class.name == "TestingError"
261
175
  raise e
@@ -0,0 +1,20 @@
1
+ module Redcar
2
+ class ApplicationSWT
3
+ class Speedbar
4
+ class ButtonItem
5
+ def initialize(speedbar, composite, item)
6
+ button = Swt::Widgets::Button.new(composite, 0)
7
+ button.set_text(item.text)
8
+ button.add_selection_listener do
9
+ speedbar.execute_listener_in_model(item)
10
+ end
11
+ item.add_listener(:changed_text) do |new_text|
12
+ button.set_text(item.text)
13
+ end
14
+ speedbar.keyable_widgets << button
15
+ speedbar.focussable_widgets << button
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end