redcar 0.7 → 0.8
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.
- data/CHANGES +42 -0
- data/README.md +5 -3
- data/Rakefile +39 -81
- data/bin/redcar +1 -1
- data/lib/redcar.rb +9 -6
- data/lib/redcar/installer.rb +1 -1
- data/lib/redcar/ruby_extensions.rb +19 -0
- data/lib/redcar/runner.rb +1 -1
- data/lib/redcar/usage.rb +3 -0
- data/lib/redcar_quick_start.rb +11 -11
- data/plugins/application/features/step_definitions/tree_steps.rb +22 -5
- data/plugins/application/features/step_definitions/window_steps.rb +9 -1
- data/plugins/application/features/support/env.rb +5 -2
- data/plugins/application/lib/application.rb +51 -46
- data/plugins/application/lib/application/window.rb +60 -30
- data/plugins/application_swt/lib/application_swt.rb +16 -16
- data/plugins/application_swt/lib/application_swt/window.rb +35 -7
- data/plugins/auto_completer/features/support/env.rb +0 -2
- data/plugins/auto_indenter/features/support/env.rb +0 -1
- data/plugins/auto_pairer/features/auto_pairer.feature +50 -45
- data/plugins/auto_pairer/features/support/env.rb +0 -1
- data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +11 -6
- data/plugins/clipboard-viewer/Screenshot.png +0 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer.rb +50 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer/browser_controller.rb +27 -0
- data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +67 -0
- data/plugins/clipboard-viewer/plugin.rb +9 -0
- data/plugins/clipboard-viewer/views/clipboard.html.erb +15 -0
- data/plugins/clipboard-viewer/views/default.css +43 -0
- data/plugins/clipboard-viewer/views/redcar_small_icon.png +0 -0
- data/plugins/comment/features/line_comment.feature +137 -0
- data/plugins/comment/features/selection_comment.feature +21 -0
- data/plugins/comment/features/step_definitions/comment_steps.rb +7 -0
- data/plugins/comment/lib/comment.rb +266 -0
- data/plugins/comment/plugin.rb +7 -0
- data/plugins/comment/vendor/comment_lib.json +47 -0
- data/plugins/declarations/lib/declarations.rb +1 -1
- data/plugins/document_search/features/replace.feature +10 -2
- data/plugins/document_search/features/support/env.rb +0 -1
- data/plugins/document_search/lib/document_search.rb +4 -1
- data/plugins/document_search/lib/document_search/replace.rb +11 -3
- data/plugins/document_search/lib/document_search/search_and_replace.rb +5 -2
- data/plugins/edit_view/features/case_change.feature +9 -9
- data/plugins/edit_view/features/cursor_navigation.feature +36 -0
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +63 -8
- data/plugins/edit_view/features/step_definitions/notebook_steps.rb +2 -0
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +8 -5
- data/plugins/edit_view/features/support/env.rb +8 -2
- data/plugins/edit_view/lib/edit_view.rb +16 -1
- data/plugins/edit_view/lib/edit_view/actions/cmd_enter.rb +11 -0
- data/plugins/edit_view/lib/edit_view/document.rb +27 -10
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +17 -4
- data/plugins/edit_view/spec/edit_view/document_spec.rb +3 -0
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +42 -3
- data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +17 -15
- data/plugins/help/lib/help.rb +40 -0
- data/plugins/help/plugin.rb +8 -0
- data/plugins/html_view/features/step_definitions/html_view_steps.rb +6 -4
- data/plugins/line_tools/features/support/env.rb +0 -1
- data/plugins/macros/features/step_definitions/macro_steps.rb +0 -55
- data/plugins/macros/features/support/env.rb +0 -2
- data/plugins/open_default_app/lib/open_default_app.rb +35 -0
- data/plugins/open_default_app/plugin.rb +8 -0
- data/plugins/open_default_app/screenshot.png +0 -0
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +17 -3
- data/plugins/project/features/find_file.feature +3 -2
- data/plugins/project/features/highlight_focussed_tab.feature +8 -0
- data/plugins/project/features/move_and_rename_files.feature +25 -0
- data/plugins/project/features/open_and_save_files.feature +10 -1
- data/plugins/project/features/open_directory_tree.feature +32 -2
- data/plugins/project/features/step_definitions/directory_steps.rb +17 -0
- data/plugins/project/features/step_definitions/project_tree_steps.rb +3 -0
- data/plugins/project/features/sub_project.feature +14 -0
- data/plugins/project/features/support/env.rb +22 -3
- data/plugins/project/features/watch_for_modified_files.feature +32 -9
- data/plugins/project/lib/project.rb +53 -21
- data/plugins/project/lib/project/adapters/local.rb +21 -16
- data/plugins/project/lib/project/adapters/remote.rb +15 -13
- data/plugins/project/lib/project/commands.rb +37 -16
- data/plugins/project/lib/project/dir_controller.rb +41 -42
- data/plugins/project/lib/project/drb_service.rb +35 -21
- data/plugins/project/lib/project/file_list.rb +7 -1
- data/plugins/project/lib/project/manager.rb +28 -3
- data/plugins/project/lib/project/sub_project.rb +17 -0
- data/plugins/project/lib/project/support/recycle.js +2 -0
- data/plugins/project/lib/project/support/trash.rb +72 -0
- data/plugins/project/spec/fixtures/multi-byte-files/a/341/204/200/341/205/247/341/206/274/341/204/205/341/205/251/foo +1 -0
- data/plugins/project/spec/fixtures/multi-byte-files//341/204/220/341/205/246/341/204/211/341/205/263/341/204/220/341/205/263.py +1 -0
- data/plugins/project/spec/project/file_list_spec.rb +4 -0
- data/plugins/redcar/features/goto_line_command.feature +20 -0
- data/plugins/redcar/redcar.rb +107 -47
- data/plugins/repl/lib/repl.rb +20 -20
- data/plugins/repl/lib/repl/clojure_mirror.rb +50 -58
- data/plugins/repl/lib/repl/groovy_mirror.rb +22 -41
- data/plugins/repl/lib/repl/repl_mirror.rb +85 -14
- data/plugins/repl/lib/repl/ruby_mirror.rb +12 -39
- data/plugins/repl/spec/repl/groovy_mirror_spec.rb +1 -1
- data/plugins/repl/spec/repl/ruby_mirror_spec.rb +12 -12
- data/plugins/ruby/README +6 -0
- data/plugins/ruby/lib/syntax_check/ruby.rb +28 -0
- data/plugins/ruby/plugin.rb +7 -0
- data/plugins/runnables/features/command_tree.feature +9 -0
- data/plugins/runnables/features/file_runner_input.feature +20 -0
- data/plugins/runnables/features/run_alternate_command.feature +14 -0
- data/plugins/runnables/features/support/env.rb +42 -5
- data/plugins/runnables/lib/runnables.rb +67 -21
- data/plugins/runnables/lib/runnables/commands.rb +35 -18
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_group.rb +23 -37
- data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_type_group.rb +16 -18
- data/plugins/scm_svn/features/support/env.rb +0 -3
- data/plugins/snippets/features/snippets.feature +17 -2
- data/plugins/snippets/features/support/env.rb +0 -1
- data/plugins/snippets/lib/snippets/tab_handler.rb +51 -18
- data/plugins/swt/lib/swt/cucumber_patches.rb +13 -68
- data/plugins/swt/lib/swt/cucumber_runner.rb +2 -3
- data/plugins/syntax_check/README +6 -0
- data/plugins/syntax_check/lib/syntax_check.rb +16 -0
- data/plugins/syntax_check/lib/syntax_check/checker.rb +47 -0
- data/plugins/syntax_check/lib/syntax_check/error.rb +23 -0
- data/plugins/syntax_check/plugin.rb +7 -0
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +6 -0
- data/plugins/web_bookmarks/Screenshot.png +0 -0
- data/plugins/web_bookmarks/lib/web_bookmarks.rb +42 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +43 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/browser_bar.rb +70 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +111 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +67 -0
- data/plugins/web_bookmarks/lib/web_bookmarks/view_controller.rb +22 -0
- data/plugins/web_bookmarks/plugin.rb +11 -0
- data/plugins/web_bookmarks/views/index.html.erb +5 -0
- metadata +60 -10
|
@@ -62,20 +62,29 @@ module Redcar
|
|
|
62
62
|
@controllers.values.flatten.uniq
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
|
|
66
|
+
# Call the before_save and after_save callbacks on any plugins that need it
|
|
67
|
+
#
|
|
68
|
+
# Pass self as an argument since plugins that use before_save
|
|
69
|
+
# will most likely need access to the document being saved.
|
|
70
|
+
def between_save_hooks
|
|
71
71
|
Redcar.plugin_manager.objects_implementing(:before_save).each do |object|
|
|
72
72
|
object.before_save(self)
|
|
73
73
|
end
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
yield
|
|
75
|
+
Redcar.plugin_manager.objects_implementing(:after_save).each do |object|
|
|
76
|
+
object.after_save(self)
|
|
77
|
+
end
|
|
77
78
|
end
|
|
78
|
-
|
|
79
|
+
|
|
80
|
+
def save!
|
|
81
|
+
between_save_hooks do
|
|
82
|
+
@mirror.commit(to_s)
|
|
83
|
+
@edit_view.reset_last_checked
|
|
84
|
+
set_modified(false)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
79
88
|
def modified?
|
|
80
89
|
@modified
|
|
81
90
|
end
|
|
@@ -441,10 +450,18 @@ module Redcar
|
|
|
441
450
|
controller.selection_offset
|
|
442
451
|
end
|
|
443
452
|
|
|
453
|
+
def selection_offset=(value)
|
|
454
|
+
set_selection_range(cursor_offset, value)
|
|
455
|
+
end
|
|
456
|
+
|
|
444
457
|
def selection_line
|
|
445
458
|
line_at_offset(selection_offset)
|
|
446
459
|
end
|
|
447
460
|
|
|
461
|
+
def selection_line_offset
|
|
462
|
+
selection_offset - offset_at_line(selection_line)
|
|
463
|
+
end
|
|
464
|
+
|
|
448
465
|
# Set the range of text selected by the user.
|
|
449
466
|
#
|
|
450
467
|
# @param [Integer] cursor_offset
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
module Redcar
|
|
2
2
|
class EditTab < Tab
|
|
3
|
-
|
|
3
|
+
|
|
4
4
|
attr_reader :edit_view
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
def initialize(*args)
|
|
7
7
|
super
|
|
8
8
|
create_edit_view
|
|
9
9
|
end
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
def update_for_file_changes
|
|
12
|
+
old_icon = @icon
|
|
13
|
+
doc = @edit_view.document
|
|
14
|
+
if doc and doc.path
|
|
15
|
+
if File.exists?(doc.path)
|
|
16
|
+
@icon = :file if icon == :exclamation
|
|
17
|
+
else
|
|
18
|
+
@icon = :exclamation
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
notify_listeners(:changed_icon, @icon) if old_icon != @icon
|
|
22
|
+
end
|
|
23
|
+
|
|
11
24
|
def create_edit_view
|
|
12
25
|
@edit_view = Redcar::EditView.new
|
|
13
26
|
@edit_view.add_listener(:focussed, &method(:edit_view_focussed))
|
|
@@ -15,7 +28,7 @@ module Redcar
|
|
|
15
28
|
@edit_view.document.add_listener(:selection_range_changed) { notify_listeners(:selection_changed) }
|
|
16
29
|
@edit_view.add_listener(:title_changed) { |newt| self.title = newt }
|
|
17
30
|
end
|
|
18
|
-
|
|
31
|
+
|
|
19
32
|
def edit_view_focussed
|
|
20
33
|
notify_listeners(:focus)
|
|
21
34
|
end
|
|
@@ -147,7 +147,7 @@ module Redcar
|
|
|
147
147
|
action = st.getKeyBinding(event.character | event.stateMask)
|
|
148
148
|
if (action == Swt::SWT::NULL)
|
|
149
149
|
# see if we have a control character
|
|
150
|
-
if ((event.stateMask & SWT
|
|
150
|
+
if ((event.stateMask & Swt::SWT::CTRL) != 0 && event.character <= 31)
|
|
151
151
|
# get the character from the CTRL+char sequence, the control
|
|
152
152
|
# key subtracts 64 from the value of the key that it modifies
|
|
153
153
|
c = event.character + 64
|
|
@@ -201,12 +201,19 @@ module Redcar
|
|
|
201
201
|
|
|
202
202
|
def undo
|
|
203
203
|
@undo_manager.undo
|
|
204
|
+
unless @undo_manager.undoable?
|
|
205
|
+
@undoable_override = false
|
|
206
|
+
end
|
|
204
207
|
EditView.undo_sensitivity.recompute
|
|
205
208
|
EditView.redo_sensitivity.recompute
|
|
206
209
|
end
|
|
207
210
|
|
|
208
211
|
def undoable?
|
|
209
|
-
|
|
212
|
+
# The override malarky is because the JFace::TextViewerUndoManager doesn't
|
|
213
|
+
# recognize that typing while in Block Selection mode makes the edit view
|
|
214
|
+
# undoable. (Even though it faithfully records the actions, and responds
|
|
215
|
+
# correctly to "undo".) So we override the undo manager for this case.
|
|
216
|
+
@undoable_override || @undo_manager.undoable
|
|
210
217
|
end
|
|
211
218
|
|
|
212
219
|
def redo
|
|
@@ -221,6 +228,7 @@ module Redcar
|
|
|
221
228
|
|
|
222
229
|
def reset_undo
|
|
223
230
|
@undo_manager.reset
|
|
231
|
+
@undoable_override = false
|
|
224
232
|
end
|
|
225
233
|
|
|
226
234
|
def compound
|
|
@@ -237,6 +245,19 @@ module Redcar
|
|
|
237
245
|
@undo_manager.end_compound_change
|
|
238
246
|
end
|
|
239
247
|
|
|
248
|
+
def annotations(options = nil)
|
|
249
|
+
return @mate_text.annotations unless options
|
|
250
|
+
if options[:line]
|
|
251
|
+
@mate_text.annotationsOnLine(line + 1)
|
|
252
|
+
elsif options[:type]
|
|
253
|
+
annotations_of_type(options[:type])
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
def annotations_of_type(type)
|
|
258
|
+
annotations.select {|a| a.type == type }
|
|
259
|
+
end
|
|
260
|
+
|
|
240
261
|
def add_annotation_type(name, image_path, rgb)
|
|
241
262
|
rgb = Swt::Graphics::RGB.new(rgb[0], rgb[1], rgb[2])
|
|
242
263
|
@mate_text.addAnnotationType(name, image_path, rgb)
|
|
@@ -246,6 +267,17 @@ module Redcar
|
|
|
246
267
|
@mate_text.addAnnotation(annotation_name, line, text, start, length)
|
|
247
268
|
end
|
|
248
269
|
|
|
270
|
+
def remove_annotation(mate_annotation)
|
|
271
|
+
@mate_text.removeAnnotation(mate_annotation)
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
def remove_all_annotations(options = nil)
|
|
275
|
+
return @mate_text.remove_all_annotations unless options
|
|
276
|
+
annotations(options).each do |ann|
|
|
277
|
+
remove_annotation(ann)
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
|
|
249
281
|
def create_document
|
|
250
282
|
@document = EditViewSWT::Document.new(@model.document, @mate_text.mate_document)
|
|
251
283
|
@model.document.controller = @document
|
|
@@ -281,6 +313,9 @@ module Redcar
|
|
|
281
313
|
@mate_text.set_margin_column(-1)
|
|
282
314
|
end
|
|
283
315
|
end
|
|
316
|
+
h13 = @model.document.add_listener(:changed) do
|
|
317
|
+
@undoable_override = true
|
|
318
|
+
end
|
|
284
319
|
@mate_text.getTextWidget.addMouseListener(MouseListener.new(self))
|
|
285
320
|
@mate_text.getTextWidget.addFocusListener(FocusListener.new(self))
|
|
286
321
|
@mate_text.getTextWidget.addVerifyListener(VerifyListener.new(@model.document, self))
|
|
@@ -289,7 +324,7 @@ module Redcar
|
|
|
289
324
|
@mate_text.get_control.add_key_listener(KeyListener.new(self))
|
|
290
325
|
@handlers << [@model.document, h1] << [@model, h2] << [@model, h3] << [@model, h4] <<
|
|
291
326
|
[@model, h5] << [@model, h6] << [@model, h7] << [@model, h8] <<
|
|
292
|
-
[@model, h9] << [@model, h11]
|
|
327
|
+
[@model, h9] << [@model, h11] << [@model.document, h13]
|
|
293
328
|
end
|
|
294
329
|
|
|
295
330
|
def right_click(mouse_event)
|
|
@@ -322,6 +357,8 @@ module Redcar
|
|
|
322
357
|
end
|
|
323
358
|
|
|
324
359
|
def verify_key(key_event)
|
|
360
|
+
#uncomment this line for key debugging
|
|
361
|
+
#puts "got keyevent: #{key_event.character} #{key_event.stateMask}"
|
|
325
362
|
if @edit_view_swt.model.document.block_selection_mode?
|
|
326
363
|
@edit_view_swt.begin_compound
|
|
327
364
|
end
|
|
@@ -337,6 +374,8 @@ module Redcar
|
|
|
337
374
|
key_event.doit = !@edit_view_swt.model.delete_pressed(ApplicationSWT::Menu::BindingTranslator.modifiers(key_event))
|
|
338
375
|
elsif key_event.character == Swt::SWT::BS
|
|
339
376
|
key_event.doit = !@edit_view_swt.model.backspace_pressed(ApplicationSWT::Menu::BindingTranslator.modifiers(key_event))
|
|
377
|
+
elsif key_event.character == 13 and (key_event.stateMask == Swt::SWT::COMMAND or key_event.stateMask == Swt::SWT::CTRL)
|
|
378
|
+
key_event.doit = !@edit_view_swt.model.cmd_enter_pressed(ApplicationSWT::Menu::BindingTranslator.modifiers(key_event))
|
|
340
379
|
end
|
|
341
380
|
end
|
|
342
381
|
end
|
|
@@ -12,24 +12,25 @@ module Redcar
|
|
|
12
12
|
if [Swt::SWT::MOVEMENT_WORD, Swt::SWT::MOVEMENT_WORD_END].include? e.movement
|
|
13
13
|
e.newOffset = next_offset(e.offset, e.lineOffset, e.lineText)
|
|
14
14
|
# SWT gets pissy without this:
|
|
15
|
-
if e.newOffset == e.lineOffset + e.lineText.length + 1
|
|
15
|
+
if e.newOffset == e.lineOffset + e.lineText.chars.length + 1
|
|
16
16
|
e.newOffset += 1
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def next_offset(
|
|
22
|
-
if
|
|
23
|
-
|
|
21
|
+
def next_offset(chars_offset, chars_line_offset, line_text)
|
|
22
|
+
if chars_offset == chars_line_offset + line_text.chars.length
|
|
23
|
+
chars_offset + 1
|
|
24
24
|
else
|
|
25
|
-
future_text = line_text[(
|
|
25
|
+
future_text = line_text.chars[(chars_offset - chars_line_offset)..-1].to_s
|
|
26
26
|
if future_text == nil or future_text == ""
|
|
27
|
-
|
|
27
|
+
chars_line_offset + line_text.chars.length
|
|
28
28
|
else
|
|
29
29
|
if md = future_text.match(MOVE_FORWARD_RE)
|
|
30
|
-
|
|
30
|
+
chars_match_end = future_text.byte_offset_to_char_offset(md.end(0))
|
|
31
|
+
chars_offset + chars_match_end
|
|
31
32
|
else
|
|
32
|
-
|
|
33
|
+
chars_line_offset + line_text.chars.length
|
|
33
34
|
end
|
|
34
35
|
end
|
|
35
36
|
end
|
|
@@ -45,18 +46,19 @@ module Redcar
|
|
|
45
46
|
end
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
def previous_offset(
|
|
49
|
-
if
|
|
50
|
-
|
|
49
|
+
def previous_offset(chars_offset, chars_line_offset, line_text)
|
|
50
|
+
if chars_offset == chars_line_offset
|
|
51
|
+
chars_offset - 1
|
|
51
52
|
else
|
|
52
|
-
future_text = line_text[0..(
|
|
53
|
+
future_text = line_text.chars[0..(chars_offset - chars_line_offset - 1)].reverse.to_s
|
|
53
54
|
if future_text == nil or future_text == ""
|
|
54
|
-
|
|
55
|
+
chars_line_offset
|
|
55
56
|
else
|
|
56
57
|
if md = future_text.match(MOVE_FORWARD_RE)
|
|
57
|
-
|
|
58
|
+
chars_match_end = future_text.byte_offset_to_char_offset(md.end(0))
|
|
59
|
+
chars_offset - chars_match_end
|
|
58
60
|
else
|
|
59
|
-
|
|
61
|
+
chars_line_offset
|
|
60
62
|
end
|
|
61
63
|
end
|
|
62
64
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
module Redcar
|
|
3
|
+
class Help
|
|
4
|
+
def self.menus
|
|
5
|
+
Redcar::Menu::Builder.build do
|
|
6
|
+
sub_menu "Help" do
|
|
7
|
+
group(:priority => :first) do
|
|
8
|
+
item "Online Help", :command => OnlineHelpCommand
|
|
9
|
+
item "Submit a Bug", :command => SubmitABugCommand
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.keymaps
|
|
16
|
+
map = Redcar::Keymap.build("main", [:osx, :linux, :windows]) do
|
|
17
|
+
link "F1", OnlineHelpCommand
|
|
18
|
+
end
|
|
19
|
+
[map]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class SubmitABugCommand < Redcar::Command
|
|
23
|
+
def execute
|
|
24
|
+
Redcar::WebBookmarks::DisplayWebContent.new(
|
|
25
|
+
"Submit a Bug",
|
|
26
|
+
"https://redcar.lighthouseapp.com/projects/25090-redcar/tickets/new"
|
|
27
|
+
).run
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class OnlineHelpCommand < Redcar::Command
|
|
32
|
+
def execute
|
|
33
|
+
Redcar::WebBookmarks::DisplayWebContent.new(
|
|
34
|
+
"Online Help",
|
|
35
|
+
"http://github.com/redcar/redcar/wiki/Users-Guide"
|
|
36
|
+
).run
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -14,9 +14,11 @@ Then /^the HTML tab (should say|says) "([^"]*)"$/ do |_, needle|
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
Redcar.gui.yield_until { started && !thread.alive? }
|
|
17
|
-
|
|
18
|
-
# For now, just skip on
|
|
19
|
-
#
|
|
17
|
+
|
|
18
|
+
# For now, just skip on XUL platforms on which we can't get browser exec results
|
|
19
|
+
# (current version of SWT and XulRunner). More info at:
|
|
20
20
|
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=259687
|
|
21
|
-
contents.
|
|
21
|
+
unless (contents.nil? or contents.empty?) and [:windows, :linux].include? Redcar.platform
|
|
22
|
+
contents.should match needle
|
|
23
|
+
end
|
|
22
24
|
end
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
RequireSupportFiles File.dirname(__FILE__) + "/../../../edit_view/features/"
|
|
@@ -9,58 +9,3 @@ end
|
|
|
9
9
|
When /I run the last recorded macro/ do
|
|
10
10
|
Redcar::Macros::RunLastCommand.new.run
|
|
11
11
|
end
|
|
12
|
-
|
|
13
|
-
When /^I type "([^"]*)"$/ do |text|
|
|
14
|
-
text = text.gsub("\\t", "\t").gsub("\\n", "\n")
|
|
15
|
-
text.split(//).each do |letter|
|
|
16
|
-
edit_view = Redcar::EditView.focussed_edit_view
|
|
17
|
-
edit_view.type_character(letter[0])
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
edit_view_action_steps = {
|
|
22
|
-
:LINE_UP => "I move up",
|
|
23
|
-
:LINE_DOWN => "I move down",
|
|
24
|
-
:LINE_START => "I move to the start of the line",
|
|
25
|
-
:LINE_END => "I move to the end of the line",
|
|
26
|
-
:COLUMN_PREVIOUS => "I move left",
|
|
27
|
-
:COLUMN_NEXT => "I move right",
|
|
28
|
-
:PAGE_UP => "I page up",
|
|
29
|
-
:PAGE_DOWN => "I page down",
|
|
30
|
-
:WORD_PREVIOUS => "I move to the previous word",
|
|
31
|
-
:WORD_NEXT => "I move to the next word",
|
|
32
|
-
:TEXT_START => "I move to the start of the text",
|
|
33
|
-
:TEXT_END => "I move to the end of the text",
|
|
34
|
-
:WINDOW_START => "I move to the start of the window",
|
|
35
|
-
:WINDOW_END => "I move to the end of the window",
|
|
36
|
-
:SELECT_ALL => "I select all",
|
|
37
|
-
:SELECT_LINE_UP => "I select up",
|
|
38
|
-
:SELECT_LINE_DOWN => "I select down",
|
|
39
|
-
:SELECT_LINE_START => "I select to the start of the line",
|
|
40
|
-
:SELECT_LINE_END => "I select to the end of the line",
|
|
41
|
-
:SELECT_COLUMN_PREVIOUS => "I select left",
|
|
42
|
-
:SELECT_COLUMN_NEXT => "I select right",
|
|
43
|
-
:SELECT_PAGE_UP => "I select page up",
|
|
44
|
-
:SELECT_PAGE_DOWN => "I select page down",
|
|
45
|
-
:SELECT_WORD_PREVIOUS => "I select to the previous word",
|
|
46
|
-
:SELECT_WORD_NEXT => "I select to the next word",
|
|
47
|
-
:SELECT_TEXT_START => "I select to the start of the text",
|
|
48
|
-
:SELECT_TEXT_END => "I select to the end of the text",
|
|
49
|
-
:SELECT_WINDOW_START => "I select to the start of the window",
|
|
50
|
-
:SELECT_WINDOW_END => "I select to the end of the window",
|
|
51
|
-
:CUT => "dsafjl;fjsadfk",
|
|
52
|
-
:COPY => "asdfkjalsgj",
|
|
53
|
-
:PASTE => "asdfasdfe",
|
|
54
|
-
:DELETE_PREVIOUS => "I backspace",
|
|
55
|
-
:DELETE_NEXT => "I delete",
|
|
56
|
-
:DELETE_WORD_PREVIOUS => "I delete to the previous word",
|
|
57
|
-
:DELETE_WORD_NEXT => "I delete to the next word"
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
edit_view_action_steps.each do |action_symbol, step_text|
|
|
61
|
-
When step_text do
|
|
62
|
-
Redcar::EditView.focussed_edit_view.invoke_action(action_symbol)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Redcar
|
|
2
|
+
|
|
3
|
+
class OpenDefaultApp
|
|
4
|
+
|
|
5
|
+
def self.project_context_menus(tree, node, controller)
|
|
6
|
+
Menu::Builder.build do
|
|
7
|
+
if node and node.path
|
|
8
|
+
item ("Open Default App"){OpenDefaultAppCommand.new(node.path).run }
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class OpenDefaultAppCommand < Redcar::Command
|
|
14
|
+
import java.awt.Desktop
|
|
15
|
+
|
|
16
|
+
attr_reader :path
|
|
17
|
+
|
|
18
|
+
def initialize(path)
|
|
19
|
+
@path = path
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def execute(options=nil)
|
|
23
|
+
@path ||= options[:value]
|
|
24
|
+
begin
|
|
25
|
+
file = java::io::File.new(path)
|
|
26
|
+
desktop = Desktop.get_desktop
|
|
27
|
+
desktop.open(file)
|
|
28
|
+
rescue Object => e
|
|
29
|
+
Application::Dialog.message_box("A default application could not be found for this type of file.")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|