redcar 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +41 -1
- data/README.md +1 -1
- data/Rakefile +5 -6
- data/lib/plugin_manager/lib/plugin_manager.rb +1 -2
- data/lib/redcar.rb +19 -14
- data/lib/redcar/installer.rb +21 -17
- data/lib/redcar/runner.rb +10 -7
- data/lib/redcar/usage.rb +1 -0
- data/lib/redcar_quick_start.rb +8 -12
- data/lib/regex_replace.rb +3 -3
- data/plugins/application/features/step_definitions/menu_steps.rb +10 -0
- data/plugins/application/features/step_definitions/speedbar_steps.rb +8 -2
- data/plugins/application/features/step_definitions/tree_steps.rb +48 -6
- data/plugins/application/features/step_definitions/window_steps.rb +9 -4
- data/plugins/application/features/support/env.rb +20 -1
- data/plugins/application/features/support/fake_event.rb +14 -0
- data/plugins/application/lib/application.rb +29 -12
- data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +19 -0
- data/plugins/application/lib/application/speedbar.rb +23 -17
- data/plugins/application/lib/application/tab.rb +20 -15
- data/plugins/application/lib/application/treebook.rb +10 -7
- data/plugins/application/lib/application/window.rb +1 -1
- data/plugins/application/plugin.rb +1 -1
- data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +4 -4
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +15 -4
- data/plugins/application_swt/lib/application_swt/icon.rb +3 -5
- data/plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb +4 -4
- data/plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb +5 -5
- data/plugins/application_swt/lib/application_swt/speedbar.rb +34 -120
- data/plugins/application_swt/lib/application_swt/speedbar/button_item.rb +20 -0
- data/plugins/application_swt/lib/application_swt/speedbar/combo_item.rb +38 -0
- data/plugins/application_swt/lib/application_swt/speedbar/label_item.rb +15 -0
- data/plugins/application_swt/lib/application_swt/speedbar/slider_item.rb +32 -0
- data/plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb +36 -0
- data/plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb +29 -0
- data/plugins/application_swt/lib/application_swt/tab.rb +1 -3
- data/plugins/application_swt/lib/application_swt/toolbar.rb +19 -20
- data/plugins/application_swt/lib/application_swt/treebook.rb +24 -9
- data/plugins/application_swt/lib/application_swt/window.rb +110 -98
- data/plugins/application_swt/lib/swt/vtab_folder.rb +77 -32
- data/plugins/application_swt/lib/swt/vtab_item.rb +9 -0
- data/plugins/application_swt/lib/swt/vtab_label.rb +63 -23
- data/plugins/application_swt/plugin.rb +1 -1
- data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +2 -2
- data/plugins/comment/features/line_comment.feature +116 -4
- data/plugins/comment/lib/comment.rb +18 -16
- data/plugins/connection_manager/lib/connection_manager/commands.rb +1 -1
- data/plugins/connection_manager/lib/connection_manager/private_key_store.rb +5 -3
- data/plugins/declarations/lib/declarations.rb +1 -1
- data/plugins/declarations/lib/declarations/parser.rb +68 -20
- data/plugins/document_search/features/replace.feature +18 -0
- data/plugins/document_search/lib/document_search.rb +37 -54
- data/plugins/document_search/lib/document_search/replace_all_command.rb +27 -0
- data/plugins/document_search/lib/document_search/replace_command.rb +38 -0
- data/plugins/document_search/lib/document_search/replace_next_command.rb +27 -0
- data/plugins/document_search/lib/document_search/search_and_replace.rb +17 -24
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +4 -4
- data/plugins/edit_view/features/step_definitions/tab_steps.rb +9 -0
- data/plugins/edit_view/features/step_definitions/window_steps.rb +0 -12
- data/plugins/edit_view/lib/edit_view/document.rb +2 -0
- data/plugins/edit_view/lib/edit_view/document/command.rb +8 -8
- data/plugins/edit_view/lib/edit_view/edit_tab.rb +21 -7
- data/plugins/edit_view/lib/edit_view/select_font_dialog.rb +6 -0
- data/plugins/edit_view/lib/edit_view/select_theme_dialog.rb +6 -0
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +92 -43
- data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +17 -4
- data/plugins/find-in-project/lib/find_in_project.rb +1 -4
- data/plugins/find-in-project/lib/find_in_project/commands.rb +0 -14
- data/plugins/find-in-project/lib/find_in_project/controllers.rb +12 -0
- data/plugins/find-in-project/lib/find_in_project/views/index.html.erb +5 -0
- data/plugins/groovy/features/fixtures/test.groovy +0 -0
- data/plugins/groovy/features/step_definitions/groovy_steps.rb +27 -0
- data/plugins/groovy/features/support/env.rb +27 -0
- data/plugins/groovy/features/syntax_check_groovy.feature +72 -0
- data/plugins/groovy/lib/syntax_check/groovy.rb +76 -0
- data/plugins/groovy/plugin.rb +7 -0
- data/plugins/help/lib/help.rb +28 -4
- data/plugins/help/lib/help/help_tab.rb +11 -0
- data/plugins/help/lib/help/view_controller.rb +25 -0
- data/plugins/help/plugin.rb +2 -1
- data/plugins/{view_shortcuts → help}/views/default.css +0 -0
- data/plugins/{view_shortcuts → help}/views/index.html.erb +1 -1
- data/plugins/{view_shortcuts → help}/views/redcar_small_icon.png +0 -0
- data/plugins/html_view/features/browser_bar.feature +47 -0
- data/plugins/html_view/features/fixtures/other.html +1 -0
- data/plugins/html_view/features/fixtures/sample.html +1 -0
- data/plugins/html_view/features/step_definitions/html_view_steps.rb +45 -5
- data/plugins/html_view/features/support/env.rb +26 -0
- data/plugins/html_view/features/web_preview.feature +21 -0
- data/plugins/html_view/lib/html_controller.rb +5 -5
- data/plugins/html_view/lib/html_view.rb +62 -10
- data/plugins/{web_bookmarks/lib/web_bookmarks → html_view/lib/html_view}/browser_bar.rb +32 -20
- data/plugins/html_view/lib/html_view/commands.rb +64 -0
- data/plugins/{web_bookmarks/lib/web_bookmarks/view_controller.rb → html_view/lib/html_view/default_controller.rb} +7 -6
- data/plugins/html_view/lib/html_view/html_tab.rb +17 -6
- data/plugins/html_view/plugin.rb +3 -3
- data/plugins/{web_bookmarks → html_view}/views/index.html.erb +0 -0
- data/plugins/javascript/features/fixtures/test.js +0 -0
- data/plugins/javascript/features/support/env.rb +4 -0
- data/plugins/javascript/features/syntax_check_javascript.feature +27 -0
- data/plugins/javascript/lib/syntax_check/javascript.rb +52 -0
- data/plugins/javascript/plugin.rb +7 -0
- data/plugins/javascript/vendor/jslint.js +539 -0
- data/plugins/macros/lib/macros/commands.rb +3 -3
- data/plugins/open_default_app/lib/open_default_app.rb +29 -3
- data/plugins/open_default_app/plugin.rb +1 -1
- data/plugins/outline_view/features/outline_view.feature +79 -0
- data/plugins/outline_view/features/step_definitions/outline_steps.rb +45 -0
- data/plugins/outline_view/lib/outline_view.rb +1 -1
- data/plugins/outline_view/spec/fixtures/some_project/javascript.js +10 -0
- data/plugins/outline_view/spec/fixtures/some_project/nothing_to_see.rb +0 -0
- data/plugins/outline_view/spec/fixtures/some_project/one_lonely_class.rb +2 -0
- data/plugins/outline_view/spec/fixtures/some_project/similar_names.rb +18 -0
- data/plugins/outline_view/spec/fixtures/some_project/something_fancy.rb +736 -0
- data/plugins/outline_view/spec/fixtures/some_project/trailing_space.rb +5 -0
- data/plugins/outline_view_swt/lib/outline_view_swt.rb +17 -19
- data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +1 -4
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +12 -3
- data/plugins/project/features/close_directory_tree.feature +27 -0
- data/plugins/project/features/highlight_focussed_tab.feature +45 -1
- data/plugins/project/features/open_and_save_files.feature +33 -0
- data/plugins/project/features/open_directory_tree.feature +37 -11
- data/plugins/project/features/step_definitions/directory_steps.rb +1 -1
- data/plugins/project/features/step_definitions/drb_steps.rb +40 -0
- data/plugins/project/features/support/env.rb +17 -0
- data/plugins/project/lib/project.rb +12 -2
- data/plugins/project/lib/project/commands.rb +101 -99
- data/plugins/project/lib/project/drb_service.rb +55 -65
- data/plugins/project/lib/project/manager.rb +29 -4
- data/plugins/project/lib/project/project_tree_controller.rb +24 -0
- data/plugins/project/lib/project/support/trash.rb +1 -0
- data/plugins/redcar/redcar.rb +100 -37
- data/plugins/redcar_debug/lib/redcar_debug.rb +3 -3
- data/plugins/repl/features/step_definitions/repl_steps.rb +3 -0
- data/plugins/repl/lib/repl.rb +4 -11
- data/plugins/repl/lib/repl/repl_tab.rb +26 -0
- data/plugins/ruby/features/fixtures/test.rb +0 -0
- data/plugins/ruby/features/support/env.rb +4 -0
- data/plugins/ruby/features/syntax_check_ruby.feature +25 -0
- data/plugins/runnables/features/command_tree.feature +28 -0
- data/plugins/runnables/lib/runnables.rb +1 -0
- data/plugins/runnables/lib/runnables/commands.rb +4 -4
- data/plugins/runnables/lib/runnables/output_processor.rb +5 -5
- data/plugins/runnables/lib/runnables/tree_mirror/tree_controller.rb +2 -7
- data/plugins/runnables/lib/runnables/tree_mirror/tree_mirror.rb +13 -8
- data/plugins/scm_git/lib/scm_git/change.rb +5 -5
- data/plugins/strip_trailing_spaces/features/fixtures/test.txt +3 -0
- data/plugins/strip_trailing_spaces/features/strip_trailing_spaces.feature +34 -0
- data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +3 -38
- data/plugins/swt/lib/swt.rb +5 -13
- data/plugins/swt/lib/swt/full_swt.rb +15 -13
- data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +7 -0
- data/plugins/syntax_check/lib/syntax_check.rb +21 -3
- data/plugins/syntax_check/lib/syntax_check/error.rb +4 -3
- data/plugins/task_manager/lib/task_manager.rb +1 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Preferences/Autocompletions.tmPreferences +345 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Preferences/Symbol List Target.tmPreferences +22 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Snippets/Doc Banner.tmSnippet +20 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/Syntaxes/Ant.tmLanguage +247 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ant.tmbundle/info.plist +55 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/RedcarRepl.tmbundle/Syntaxes/GroovyRepl.plist +40 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/RedcarRepl.tmbundle/info.plist +1 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby Haml.tmbundle/Syntaxes/Ruby_Haml.tmLanguage +0 -1
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby Sass.tmbundle/Syntaxes/Ruby Sass.tmLanguage +626 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby Sass.tmbundle/info.plist +16 -0
- data/plugins/todo_list/features/support/env.rb +8 -0
- data/plugins/todo_list/features/todo_list.feature +26 -0
- data/plugins/todo_list/lib/todo_list.rb +1 -0
- data/plugins/todo_list/lib/todo_list/file_parser.rb +23 -19
- data/plugins/todo_list/lib/todo_list/todo_controller.rb +60 -100
- data/plugins/todo_list/spec/fixtures/project/FIXME.file +3 -0
- data/plugins/todo_list/spec/fixtures/project/NOTE.ignored.file +1 -0
- data/plugins/todo_list/spec/fixtures/project/OPTIMIZE_colon.file +1 -0
- data/plugins/todo_list/spec/fixtures/project/XXX.ignored +1 -0
- data/plugins/todo_list/spec/fixtures/project/ignored_directory/TODO.file +2 -0
- data/plugins/todo_list/spec/fixtures/settings.rb +11 -0
- data/plugins/todo_list/spec/spec_helper.rb +6 -0
- data/plugins/todo_list/spec/todo_list/file_parser_spec.rb +35 -0
- data/plugins/tree/lib/tree.rb +1 -0
- data/plugins/tree/lib/tree/command.rb +5 -0
- data/plugins/web_bookmarks/features/bookmark.feature +37 -0
- data/plugins/web_bookmarks/features/fixtures/other.html +1 -0
- data/plugins/web_bookmarks/features/fixtures/sample.html +1 -0
- data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +4 -0
- data/plugins/web_bookmarks/features/support/env.rb +26 -0
- data/plugins/web_bookmarks/lib/web_bookmarks.rb +0 -10
- data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +10 -1
- data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +1 -47
- data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +21 -14
- data/{plugins/application → share}/icons/close.png +0 -0
- data/{plugins/application → share}/icons/darwin-file.png +0 -0
- data/{plugins/application → share}/icons/darwin-folder.png +0 -0
- data/share/icons/open-source-flipped.png +0 -0
- data/{plugins/application/icons/redcar_icon_beta_dev.png → share/icons/redcar-icon-beta-dev.png} +0 -0
- data/{plugins/application/icons/redcar_icon_beta.png → share/icons/redcar-icon-beta.png} +0 -0
- data/{plugins/application → share}/icons/redcar-splash.png +0 -0
- metadata +90 -30
- data/lib/redcar/jvm_options_probe.rb +0 -33
- data/plugins/document_search/lib/document_search/replace.rb +0 -113
- data/plugins/document_search/lib/document_search/search.rb +0 -45
- data/plugins/outline_view_swt/lib/icons/alias.png +0 -0
- data/plugins/outline_view_swt/lib/icons/assignment.png +0 -0
- data/plugins/outline_view_swt/lib/icons/attribute.png +0 -0
- data/plugins/outline_view_swt/lib/icons/class.png +0 -0
- data/plugins/outline_view_swt/lib/icons/interface.png +0 -0
- data/plugins/outline_view_swt/lib/icons/method.png +0 -0
- data/plugins/strip_trailing_spaces/CHANGELOG +0 -12
- data/plugins/strip_trailing_spaces/README.md +0 -32
- data/plugins/view_shortcuts/lib/view_shortcuts.rb +0 -52
- data/plugins/view_shortcuts/plugin.rb +0 -11
File without changes
|
@@ -0,0 +1,47 @@
|
|
1
|
+
Feature: Navigating web content in HtmlTabs using the browser bar
|
2
|
+
|
3
|
+
Background:
|
4
|
+
When I will choose "plugins/html_view/features/fixtures" from the "open_directory" dialog
|
5
|
+
And I open a directory
|
6
|
+
And I open the browser bar
|
7
|
+
And I type "sample.html" into the "New URL:" field in the speedbar
|
8
|
+
And I press "Go!" in the speedbar
|
9
|
+
|
10
|
+
Scenario: Refresh a tab
|
11
|
+
Given I will choose "plugins/html_view/features/fixtures/sample.html" from the "open_file" dialog
|
12
|
+
When I open a file
|
13
|
+
And I replace the contents with "<html>I see you!</html>"
|
14
|
+
And I save the tab
|
15
|
+
And I close the focussed tab
|
16
|
+
And I open the browser bar
|
17
|
+
And I press "Refresh" in the speedbar
|
18
|
+
Then the HTML tab should say "I see you!"
|
19
|
+
|
20
|
+
Scenario: Go to a new URL in a HtmlTab
|
21
|
+
When I type "other.html" into the "New URL:" field in the speedbar
|
22
|
+
And I press "Go!" in the speedbar
|
23
|
+
Then the HTML tab should say "Is today Tuesday?"
|
24
|
+
|
25
|
+
Scenario: Move back and forward in the browser history
|
26
|
+
When I type "other.html" into the "New URL:" field in the speedbar
|
27
|
+
And I press "Go!" in the speedbar
|
28
|
+
And I press "<" in the speedbar
|
29
|
+
Then the HTML tab should say "Hello!!"
|
30
|
+
When I press ">" in the speedbar
|
31
|
+
Then the HTML tab should say "Is today Tuesday?"
|
32
|
+
|
33
|
+
Scenario: View page source from the browser bar
|
34
|
+
When I press "Source" in the speedbar
|
35
|
+
Then I should see "<html><b>Hello!!</b></html>" in the edit tab
|
36
|
+
|
37
|
+
Scenario: Add a new bookmark to a project
|
38
|
+
When I type "other.html" into the "New URL:" field in the speedbar
|
39
|
+
Given I would type "Other" in an input box
|
40
|
+
And I would type "" in an input box
|
41
|
+
When I press "+" in the speedbar
|
42
|
+
And I open the web bookmarks tree
|
43
|
+
Then I should see "Other" in the tree
|
44
|
+
|
45
|
+
Scenario: When a HTML tab loses focus, the browser bar is hidden
|
46
|
+
When I open a new edit tab
|
47
|
+
Then there should not be an open speedbar
|
@@ -0,0 +1 @@
|
|
1
|
+
<html><b>Is today Tuesday?</b></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
<html><b>Hello!!</b></html>
|
@@ -1,8 +1,8 @@
|
|
1
|
-
Then /^the HTML tab (should say|says) "([^"]*)"$/ do |_, needle|
|
1
|
+
Then /^the HTML tab (should (not )?say|says) "([^"]*)"$/ do |_, negation, needle|
|
2
2
|
limit = 5
|
3
3
|
contents = nil
|
4
4
|
started = false
|
5
|
-
|
5
|
+
|
6
6
|
thread = Thread.new do
|
7
7
|
started = true
|
8
8
|
start = Time.now
|
@@ -10,15 +10,55 @@ Then /^the HTML tab (should say|says) "([^"]*)"$/ do |_, needle|
|
|
10
10
|
while !contents or (contents and !contents.match(needle)) && Time.now - start < limit
|
11
11
|
contents = get_browser_contents
|
12
12
|
sleep 0.1
|
13
|
-
end
|
13
|
+
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
Redcar.gui.yield_until { started && !thread.alive? }
|
17
17
|
|
18
18
|
# For now, just skip on XUL platforms on which we can't get browser exec results
|
19
19
|
# (current version of SWT and XulRunner). More info at:
|
20
20
|
# https://bugs.eclipse.org/bugs/show_bug.cgi?id=259687
|
21
21
|
unless (contents.nil? or contents.empty?) and [:windows, :linux].include? Redcar.platform
|
22
|
-
contents.should match needle
|
22
|
+
negation ? (contents.should_not match needle) : (contents.should match needle)
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
When /^I click "([^\"]+)" in the HTML tab$/ do |link|
|
27
|
+
html_view = focussed_tab.html_view
|
28
|
+
# The JQuery way doesn't seem to work - I'm getting errors with this:
|
29
|
+
# => html_view.controller.execute(%{ $("a:contains(#{link.gsub('"', '\"')})").click(); })
|
30
|
+
# So, click the link the old-fashioned way.
|
31
|
+
js = <<-JAVASCRIPT
|
32
|
+
var link, evt, links, cancelled, i;
|
33
|
+
links = document.getElementsByTagName("a");
|
34
|
+
for (i = 0; i < links.length; i++) {
|
35
|
+
if (links[i].innerHTML.search(#{link.inspect}) > -1) {
|
36
|
+
link = links[i];
|
37
|
+
break;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
if (typeof(link) !== "undefined") {
|
42
|
+
if (document.createEvent) {
|
43
|
+
evt = document.createEvent("MouseEvents");
|
44
|
+
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
45
|
+
cancelled = !link.dispatchEvent(evt);
|
46
|
+
} else if (link.fireEvent) {
|
47
|
+
cancelled = !link.fireEvent("onclick");
|
48
|
+
}
|
49
|
+
if (!cancelled) {
|
50
|
+
window.location = link.href;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
JAVASCRIPT
|
54
|
+
|
55
|
+
html_view.controller.execute(js)
|
56
|
+
end
|
57
|
+
|
58
|
+
When /^I open the browser bar$/ do
|
59
|
+
Redcar::HtmlView::ToggleBrowserBar.new.run
|
60
|
+
end
|
61
|
+
|
62
|
+
When /^I open a web preview$/ do
|
63
|
+
Redcar::HtmlView::FileWebPreview.new.run
|
64
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
def htmlview_fixtures_path
|
3
|
+
File.expand_path(File.dirname(__FILE__) + "/../fixtures")
|
4
|
+
end
|
5
|
+
|
6
|
+
def htmlview_fixtures_redcar
|
7
|
+
File.join(htmlview_fixtures_path,".redcar")
|
8
|
+
end
|
9
|
+
|
10
|
+
def reset_htmlview_fixtures
|
11
|
+
FileUtils.rm_rf(htmlview_fixtures_redcar) if File.exists?(htmlview_fixtures_redcar)
|
12
|
+
File.open(htmlview_fixtures_path + "/sample.html", "w") do |f|
|
13
|
+
f.print "<html><b>Hello!!</b></html>"
|
14
|
+
end
|
15
|
+
File.open(htmlview_fixtures_path + "/other.html", "w") do |f|
|
16
|
+
f.print "<html><b>Is today Tuesday?</b></html>"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Before do
|
21
|
+
reset_htmlview_fixtures
|
22
|
+
end
|
23
|
+
|
24
|
+
After do
|
25
|
+
reset_htmlview_fixtures
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Feature: Previewing how a file will appear in a browser
|
2
|
+
|
3
|
+
Scenario: Previewing an untitled tab
|
4
|
+
When I open a new edit tab
|
5
|
+
And I replace the contents with "<html>test 1-2-3</html>"
|
6
|
+
And I open a web preview
|
7
|
+
Then my active tab should be "Preview"
|
8
|
+
And the HTML tab should say "test 1-2-3"
|
9
|
+
|
10
|
+
Scenario: Previewing a saved file
|
11
|
+
Given I will choose "plugins/html_view/features/fixtures/sample.html" from the "open_file" dialog
|
12
|
+
When I open a file
|
13
|
+
And I replace the contents with "<html>test 1-2-3</html>"
|
14
|
+
And I open a web preview
|
15
|
+
Then my active tab should be "Preview: sample.html"
|
16
|
+
And the HTML tab should say "Hello!!"
|
17
|
+
When I close the focussed tab
|
18
|
+
And I save the tab
|
19
|
+
And I open a web preview
|
20
|
+
Then my active tab should be "Preview: sample.html"
|
21
|
+
And the HTML tab should say "test 1-2-3"
|
@@ -2,23 +2,23 @@
|
|
2
2
|
module Redcar
|
3
3
|
module HtmlController
|
4
4
|
include Redcar::Observable
|
5
|
-
|
5
|
+
|
6
6
|
# Reload the index page
|
7
7
|
def reload_index
|
8
8
|
notify_listeners(:reload_index)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
# Override this to return a message if the user should be prompted
|
12
12
|
# before closing the tab.
|
13
13
|
def ask_before_closing
|
14
14
|
nil
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# Override this to run code right before the tab is closed.
|
18
18
|
def close
|
19
19
|
nil
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
# Call execute with a string of javascript to execute the script
|
23
23
|
# in the context of the browser widget.
|
24
24
|
def execute(script)
|
@@ -47,4 +47,4 @@ module Redcar
|
|
47
47
|
JS
|
48
48
|
end
|
49
49
|
end
|
50
|
-
end
|
50
|
+
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
|
2
|
+
require 'html_view/commands'
|
3
|
+
require 'html_view/browser_bar'
|
2
4
|
require 'html_view/html_tab'
|
3
5
|
require 'html_controller'
|
6
|
+
require 'html_view/default_controller'
|
4
7
|
require 'json'
|
5
8
|
|
6
9
|
module Redcar
|
@@ -8,18 +11,67 @@ module Redcar
|
|
8
11
|
def self.default_css_path
|
9
12
|
File.expand_path(File.join(Redcar.root, %w(plugins html_view assets redcar.css)))
|
10
13
|
end
|
11
|
-
|
14
|
+
|
12
15
|
def self.jquery_path
|
13
16
|
File.expand_path(File.join(Redcar.root, %w(plugins html_view assets jquery-1.4.min.js)))
|
14
17
|
end
|
15
|
-
|
18
|
+
|
19
|
+
def self.keymaps
|
20
|
+
map = Redcar::Keymap.build("main", [:osx, :linux, :windows]) do
|
21
|
+
link "Alt+Shift+B", ToggleBrowserBar
|
22
|
+
end
|
23
|
+
[map]
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.menus
|
27
|
+
Redcar::Menu::Builder.build do
|
28
|
+
sub_menu "File" do
|
29
|
+
item "Web Preview", :command => FileWebPreview, :priority => 8
|
30
|
+
end
|
31
|
+
sub_menu "View" do
|
32
|
+
item "Toggle Browser Bar", :command => ToggleBrowserBar, :priority => 11
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.storage
|
38
|
+
@storage ||= begin
|
39
|
+
storage = Plugin::Storage.new('html_view')
|
40
|
+
storage.set_default('use_external_browser_for_urls', false)
|
41
|
+
storage
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.show_browser_bar?
|
46
|
+
if win = Redcar.app.focussed_window and
|
47
|
+
win.speedbar and win.speedbar.is_a?(BrowserBar)
|
48
|
+
return true
|
49
|
+
end
|
50
|
+
false
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.tidy_url(url)
|
54
|
+
unless url.include?("://")
|
55
|
+
if File.exists?(url)
|
56
|
+
url = "file://#{url}"
|
57
|
+
elsif project = Redcar::Project::Manager.focussed_project and
|
58
|
+
relpath = File.join(project.path,url) and
|
59
|
+
File.exists?(relpath)
|
60
|
+
url = "file://#{relpath}"
|
61
|
+
else
|
62
|
+
url = "http://#{url}"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
url
|
66
|
+
end
|
67
|
+
|
16
68
|
attr_reader :controller
|
17
|
-
|
69
|
+
|
18
70
|
def initialize(html_tab)
|
19
71
|
@html_tab = html_tab
|
20
72
|
@html_tab.add_listener(:controller_action, &method(:controller_action))
|
21
73
|
end
|
22
|
-
|
74
|
+
|
23
75
|
def controller=(new_controller)
|
24
76
|
@controller = new_controller
|
25
77
|
@html_tab.title = controller.title
|
@@ -28,7 +80,7 @@ module Redcar
|
|
28
80
|
controller_action("index")
|
29
81
|
attach_controller_listeners
|
30
82
|
end
|
31
|
-
|
83
|
+
|
32
84
|
def attach_controller_listeners
|
33
85
|
@controller.add_listener(:reload_index) { controller_action("index") }
|
34
86
|
|
@@ -53,7 +105,7 @@ module Redcar
|
|
53
105
|
result
|
54
106
|
end
|
55
107
|
end
|
56
|
-
|
108
|
+
|
57
109
|
def controller_action(action_name, params=nil)
|
58
110
|
text = nil
|
59
111
|
begin
|
@@ -78,13 +130,13 @@ module Redcar
|
|
78
130
|
end
|
79
131
|
end
|
80
132
|
end
|
81
|
-
|
133
|
+
|
82
134
|
def contents=(source)
|
83
135
|
@html_tab.controller.browser.set_text(source)
|
84
136
|
end
|
85
|
-
|
137
|
+
|
86
138
|
private
|
87
|
-
|
139
|
+
|
88
140
|
class RubyFunc < Swt::Browser::BrowserFunction
|
89
141
|
def function(args)
|
90
142
|
begin
|
@@ -101,7 +153,7 @@ module Redcar
|
|
101
153
|
puts e.backtrace
|
102
154
|
end
|
103
155
|
end
|
104
|
-
|
156
|
+
|
105
157
|
attr_accessor :controller
|
106
158
|
end
|
107
159
|
|
@@ -1,8 +1,15 @@
|
|
1
1
|
|
2
2
|
module Redcar
|
3
|
-
class
|
3
|
+
class HtmlView
|
4
4
|
class BrowserBar < Redcar::Speedbar
|
5
5
|
|
6
|
+
def tab_changed(tab)
|
7
|
+
unless tab.is_a?(HtmlTab)
|
8
|
+
win = Redcar.app.focussed_window
|
9
|
+
win.close_speedbar
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
6
13
|
def html_tab
|
7
14
|
tab = Redcar.app.focussed_window.focussed_notebook_tab
|
8
15
|
tab if tab.is_a?(Redcar::HtmlTab)
|
@@ -31,25 +38,26 @@ module Redcar
|
|
31
38
|
end
|
32
39
|
|
33
40
|
button :source, "Source", nil do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
if html = html_tab and url = html.controller.browser.url.to_s
|
42
|
+
tab = Redcar.app.focussed_window.new_tab(Redcar::EditTab)
|
43
|
+
if url =~ /^file:\/\//
|
44
|
+
file_path = url[7,url.length]
|
45
|
+
mirror = Redcar::Project::FileMirror.new(file_path)
|
46
|
+
tab.edit_view.document.mirror = mirror
|
47
|
+
else
|
48
|
+
tab.edit_view.document.text = html_tab.controller.browser.text
|
49
|
+
tab.title = "Page Source"
|
50
|
+
end
|
51
|
+
tab.edit_view.grammar = "HTML"
|
52
|
+
tab.edit_view.reset_undo
|
53
|
+
tab.focus
|
43
54
|
end
|
44
|
-
tab.edit_view.grammar = "HTML"
|
45
|
-
tab.edit_view.reset_undo
|
46
|
-
tab.focus
|
47
55
|
end
|
48
56
|
|
49
57
|
button :add, "+", nil do
|
50
58
|
if tab = html_tab and
|
51
59
|
url = tab.controller.browser.url.to_s
|
52
|
-
WebBookmarks::AddBookmark.new(url).run
|
60
|
+
Redcar::WebBookmarks::AddBookmark.new(url).run
|
53
61
|
end
|
54
62
|
end
|
55
63
|
|
@@ -57,14 +65,18 @@ module Redcar
|
|
57
65
|
textbox :new_url
|
58
66
|
|
59
67
|
button :go_to_url, "Go!", "Return" do
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
68
|
+
unless new_url.value == ""
|
69
|
+
url = new_url.value
|
70
|
+
if tab = html_tab
|
71
|
+
tab.title = url
|
72
|
+
tab.controller.go_to_location(HtmlView.tidy_url(url))
|
73
|
+
icon = HtmlTab.web_content_icon
|
74
|
+
tab.icon = icon unless tab.icon == icon
|
75
|
+
else
|
76
|
+
Redcar::HtmlView::DisplayWebContent.new(url,url).run
|
65
77
|
end
|
66
78
|
end
|
67
79
|
end
|
68
80
|
end
|
69
81
|
end
|
70
|
-
end
|
82
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'java'
|
2
|
+
|
3
|
+
module Redcar
|
4
|
+
class HtmlView
|
5
|
+
|
6
|
+
# Open a HtmlTab for displaying web content
|
7
|
+
class DisplayWebContent < Redcar::Command
|
8
|
+
def initialize(name,url,display_bar=true,tab_class=HtmlTab)
|
9
|
+
@name = name
|
10
|
+
@url = url
|
11
|
+
@display_bar = display_bar
|
12
|
+
@tab = tab_class
|
13
|
+
end
|
14
|
+
|
15
|
+
def execute
|
16
|
+
use_external = HtmlView.storage['use_external_browser_for_urls']
|
17
|
+
if use_external and OpenDefaultBrowserCommand.supported?
|
18
|
+
OpenDefaultBrowserCommand.new(@url).run
|
19
|
+
else
|
20
|
+
win = Redcar.app.focussed_window
|
21
|
+
controller = DefaultController.new(@name,@url)
|
22
|
+
tab = win.new_tab(@tab)
|
23
|
+
tab.html_view.controller = controller
|
24
|
+
tab.icon = HtmlTab.web_content_icon if tab.is_a?(HtmlTab)
|
25
|
+
tab.focus
|
26
|
+
if @display_bar and not HtmlView.show_browser_bar?
|
27
|
+
HtmlView::ToggleBrowserBar.new.run
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class FileWebPreview < Redcar::EditTabCommand
|
34
|
+
def execute
|
35
|
+
mirror = doc.mirror
|
36
|
+
if mirror and path = mirror.path and File.exists?(path)
|
37
|
+
name = "Preview: " +File.basename(path)
|
38
|
+
else
|
39
|
+
name = "Preview"
|
40
|
+
preview = java.io.File.createTempFile("preview","html")
|
41
|
+
preview.deleteOnExit
|
42
|
+
path = preview.getAbsolutePath
|
43
|
+
File.open(path,'w') {|f| f.puts(doc.get_all_text)}
|
44
|
+
end
|
45
|
+
url = File.expand_path(path)
|
46
|
+
DisplayWebContent.new(name,url).run
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class ToggleBrowserBar < Redcar::Command
|
51
|
+
sensitize :open_htmltab
|
52
|
+
def execute
|
53
|
+
if win = Redcar.app.focussed_window
|
54
|
+
if HtmlView.show_browser_bar?
|
55
|
+
win.close_speedbar
|
56
|
+
else
|
57
|
+
speedbar = Redcar::HtmlView::BrowserBar.new
|
58
|
+
win.open_speedbar(speedbar)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|