redcar-javamateview 0.1-java
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/LICENSE +34 -0
- data/README +58 -0
- data/Rakefile +94 -0
- data/lib/javamateview.rb +41 -0
- data/lib/javamateview/example.rb +334 -0
- data/lib/javamateview/jar/java-mateview.jar +0 -0
- data/lib/javamateview/jcodings.jar +0 -0
- data/lib/javamateview/jdom.jar +0 -0
- data/lib/javamateview/joni.jar +0 -0
- data/spec/onig/match_spec.rb +50 -0
- data/spec/parsing/dynamic_parsing_spec.rb +172 -0
- data/spec/parsing/static_parsing_spec.rb +476 -0
- data/spec/spec_helper.rb +33 -0
- data/src/com/redcareditor/mate/Bundle.java +81 -0
- data/src/com/redcareditor/mate/DoublePattern.java +89 -0
- data/src/com/redcareditor/mate/Grammar.java +129 -0
- data/src/com/redcareditor/mate/IAnnotationAreaListener.java +7 -0
- data/src/com/redcareditor/mate/IGrammarListener.java +5 -0
- data/src/com/redcareditor/mate/IncludePattern.java +10 -0
- data/src/com/redcareditor/mate/LineNumberRulerColumn.java +922 -0
- data/src/com/redcareditor/mate/Marker.java +22 -0
- data/src/com/redcareditor/mate/MateText.java +697 -0
- data/src/com/redcareditor/mate/ParseThunk.java +71 -0
- data/src/com/redcareditor/mate/Parser.java +627 -0
- data/src/com/redcareditor/mate/ParserScheduler.java +237 -0
- data/src/com/redcareditor/mate/Pattern.java +152 -0
- data/src/com/redcareditor/mate/RangeSet.java +91 -0
- data/src/com/redcareditor/mate/Scanner.java +178 -0
- data/src/com/redcareditor/mate/Scope.java +534 -0
- data/src/com/redcareditor/mate/ScopeMatcher.java +162 -0
- data/src/com/redcareditor/mate/SharedTextColors.java +110 -0
- data/src/com/redcareditor/mate/SinglePattern.java +20 -0
- data/src/com/redcareditor/mate/WhitespaceCharacterPainter.java +395 -0
- data/src/com/redcareditor/mate/colouring/Colourer.java +16 -0
- data/src/com/redcareditor/mate/colouring/swt/MarginPaintListener.java +62 -0
- data/src/com/redcareditor/mate/colouring/swt/SwtColourer.java +501 -0
- data/src/com/redcareditor/mate/document/MateDocument.java +15 -0
- data/src/com/redcareditor/mate/document/MateTextFactory.java +9 -0
- data/src/com/redcareditor/mate/document/MateTextLocation.java +8 -0
- data/src/com/redcareditor/mate/document/MateTextLocationComparator.java +17 -0
- data/src/com/redcareditor/mate/document/MateTextRange.java +18 -0
- data/src/com/redcareditor/mate/document/swt/SwtMateDocument.java +143 -0
- data/src/com/redcareditor/mate/document/swt/SwtMateTextLocation.java +88 -0
- data/src/com/redcareditor/mate/document/swt/SwtMateTextRange.java +92 -0
- data/src/com/redcareditor/mate/document/swt/SwtScopePositionUpdater.java +90 -0
- data/src/com/redcareditor/mate/undo/MateTextUndoManager.java +11 -0
- data/src/com/redcareditor/mate/undo/swt/SwtMateTextUndoManager.java +166 -0
- data/src/com/redcareditor/onig/Match.java +212 -0
- data/src/com/redcareditor/onig/NullMatch.java +57 -0
- data/src/com/redcareditor/onig/NullRx.java +29 -0
- data/src/com/redcareditor/onig/Range.java +45 -0
- data/src/com/redcareditor/onig/Rx.java +167 -0
- data/src/com/redcareditor/plist/Dict.java +119 -0
- data/src/com/redcareditor/plist/PlistNode.java +52 -0
- data/src/com/redcareditor/plist/PlistPropertyLoader.java +44 -0
- data/src/com/redcareditor/theme/ScopeSelector.java +39 -0
- data/src/com/redcareditor/theme/Theme.java +122 -0
- data/src/com/redcareditor/theme/ThemeManager.java +41 -0
- data/src/com/redcareditor/theme/ThemeSetting.java +78 -0
- data/src/com/redcareditor/util/FileUtility.java +64 -0
- data/src/com/redcareditor/util/SingleLineFormatter.java +11 -0
- data/src/com/redcareditor/util/swt/ColourUtil.java +56 -0
- data/src/ruby/java-mateview.rb +68 -0
- data/test/com/redcareditor/mate/BundleTest.java +33 -0
- data/test/com/redcareditor/mate/EmptyRangeSetTest.java +27 -0
- data/test/com/redcareditor/mate/FilledRangeSetTest.java +82 -0
- data/test/com/redcareditor/mate/GrammarTest.java +158 -0
- data/test/com/redcareditor/mate/MateTextTest.java +35 -0
- data/test/com/redcareditor/mate/ScopeMatcherMatchingTest.java +55 -0
- data/test/com/redcareditor/mate/ScopeMatcherRankingTest.java +40 -0
- data/test/com/redcareditor/onig/RxTest.java +54 -0
- data/test/com/redcareditor/plist/DictTest.java +33 -0
- data/test/com/redcareditor/theme/RailsCastThemeTest.java +37 -0
- data/test/com/redcareditor/theme/ScopeSelectorTest.java +38 -0
- data/test/com/redcareditor/theme/ThemeManagerTest.java +29 -0
- data/test/com/redcareditor/util/swt/ColourUtilTest.java +17 -0
- metadata +142 -0
data/LICENSE
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
### Licenses for specific files
|
3
|
+
|
4
|
+
jarjar-1.0.jar is distributed under the Apache License, version 2. For more details, see http://www.apache.org/licenses/LICENSE-2.0
|
5
|
+
|
6
|
+
junit-4.7.jar is distributed under the Common Public License - v 1.0. For more details, see https://github.com/KentBeck/junit/blob/master/LICENSE
|
7
|
+
|
8
|
+
### All other files
|
9
|
+
|
10
|
+
Unless specified in the file itself, the contents of all other files in this
|
11
|
+
repository are provided to you under the following license (MIT):
|
12
|
+
|
13
|
+
Copyright (c) Daniel Lucraft 2011.
|
14
|
+
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
16
|
+
a copy of this software and associated documentation files (the
|
17
|
+
'Software'), to deal in the Software without restriction, including
|
18
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
19
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
20
|
+
permit persons to whom the Software is furnished to do so, subject to
|
21
|
+
the following conditions:
|
22
|
+
|
23
|
+
The above copyright notice and this permission notice shall be
|
24
|
+
included in all copies or substantial portions of the Software.
|
25
|
+
|
26
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
27
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
28
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
29
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
30
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
31
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
32
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
33
|
+
|
34
|
+
|
data/README
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
|
2
|
+
JavaMateView
|
3
|
+
============
|
4
|
+
|
5
|
+
Requirements
|
6
|
+
------------
|
7
|
+
|
8
|
+
* > jruby-1.3.1 installed and set up on your path
|
9
|
+
* rspec gem installed via gem install rspec
|
10
|
+
* make sure that JAVA_HOME points to a 1.6 type JDK (this is especially true on OSX Leopard)
|
11
|
+
|
12
|
+
|
13
|
+
Running the Ant-based unit-tests
|
14
|
+
--------------------------------
|
15
|
+
ant
|
16
|
+
or
|
17
|
+
rake java:test
|
18
|
+
|
19
|
+
|
20
|
+
Running the RSpec parsing specs
|
21
|
+
-------------------------------
|
22
|
+
|
23
|
+
Compile the java code and run the specs:
|
24
|
+
|
25
|
+
rake jruby:test
|
26
|
+
|
27
|
+
If you want to run it manually, without compiling:
|
28
|
+
On OSX:
|
29
|
+
|
30
|
+
jruby -J-XstartOnFirstThread -S spec spec
|
31
|
+
|
32
|
+
On Linux:
|
33
|
+
|
34
|
+
jruby -S spec spec/
|
35
|
+
|
36
|
+
|
37
|
+
Contributing
|
38
|
+
------------
|
39
|
+
|
40
|
+
Just so you know: You're free to use whatever IDE or editor to code on java-mateview.
|
41
|
+
You can use the rake tasks to compile your code and run the tests easily.
|
42
|
+
|
43
|
+
If you do however use the Eclipse IDE you also get the Eclipse project settings right away
|
44
|
+
when checking out the repository.
|
45
|
+
Alas, there are platform dependent libraries this project relies on, you need to do one little
|
46
|
+
thing to be on the way to code in eclipse (The rake + ant files do this in their own way).
|
47
|
+
|
48
|
+
|
49
|
+
Eclipse Setup
|
50
|
+
-------------
|
51
|
+
|
52
|
+
* Clone the repository so you have your own version to work with.
|
53
|
+
* Import the project.
|
54
|
+
* Set up a variable to point to the lib/{your platform here}/swt.jar
|
55
|
+
- Go to: Window -> Preferences -> Java -> Build Path -> Classpath Variables
|
56
|
+
- Choose "new" -> File
|
57
|
+
- Name the variable SWT_JAR and point it to the lib/{platform}/swt.jar in the java-mateview folder.
|
58
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'rake/clean'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
jruby_command = case Config::CONFIG["host_os"]
|
5
|
+
when /darwin/i
|
6
|
+
'jruby -J-XstartOnFirstThread '
|
7
|
+
else
|
8
|
+
'jruby '
|
9
|
+
end
|
10
|
+
|
11
|
+
task :default => 'jruby:test'
|
12
|
+
|
13
|
+
namespace :java do
|
14
|
+
desc "Rebuild the java class files"
|
15
|
+
task :compile do
|
16
|
+
puts "Compiling java files to *.class files"
|
17
|
+
sh %+ant compile+
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Run jUnit tests against freshly compiled java classes"
|
21
|
+
task :test do
|
22
|
+
puts "Running JUnit Tets"
|
23
|
+
sh %+ant test+
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Run Benchmarks"
|
27
|
+
task :benchmark do
|
28
|
+
puts "Compiling java files to *.class files"
|
29
|
+
sh %+ant compile-bench+
|
30
|
+
runner = 'ch.mollusca.benchmarking.BenchmarkRunner'
|
31
|
+
classes = ['com.redcareditor.mate.GrammarBenchmark']
|
32
|
+
classpath = '.:bench/:bin/:lib/joni.jar:lib/jdom.jar:lib/jcodings.jar'
|
33
|
+
classes.each do |clazz|
|
34
|
+
sh "java -cp #{classpath} #{runner} #{clazz}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
namespace :jruby do
|
40
|
+
desc "Run ruby tests against a freshly compiled build"
|
41
|
+
task :test => ['java:test'] do
|
42
|
+
puts "Running RSpec Tests"
|
43
|
+
sh %+#{jruby_command} -S spec spec/+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
namespace :build do
|
49
|
+
desc "Fetch the swt jars from the gem"
|
50
|
+
task :prepare do
|
51
|
+
require 'rubygems'
|
52
|
+
require 'java'
|
53
|
+
gem 'swt'
|
54
|
+
require 'swt/jar'
|
55
|
+
swt_jar_dir = File.dirname(Swt.jar_path)
|
56
|
+
|
57
|
+
|
58
|
+
mkdir_p File.expand_path("../lib/swt_jars", __FILE__)
|
59
|
+
%w(linux linux64 osx osx64 win32).each do |platform|
|
60
|
+
dir = File.expand_path("../lib/swt_jars/#{platform}", __FILE__)
|
61
|
+
mkdir_p dir
|
62
|
+
from = swt_jar_dir + "/swt_#{platform}.jar"
|
63
|
+
to = dir + "/swt.jar"
|
64
|
+
cp from, to
|
65
|
+
end
|
66
|
+
|
67
|
+
mkdir_p File.expand_path("../lib/jface_jars", __FILE__)
|
68
|
+
|
69
|
+
Dir[swt_jar_dir + "/jface/org.ecl*.jar"].each do |from, to|
|
70
|
+
to = File.expand_path("../lib/jface_jars/#{File.basename(from)}", __FILE__)
|
71
|
+
cp from, to
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Get jruby-complete to build release jar"
|
76
|
+
task :get_jruby do
|
77
|
+
jruby_complete = "jruby-complete-#{JRUBY_VERSION}.jar"
|
78
|
+
location = "http://dist.codehaus.org/jruby/#{JRUBY_VERSION}/#{jruby_complete}"
|
79
|
+
local_path = "lib/#{jruby_complete}"
|
80
|
+
unless File.exists?(local_path)
|
81
|
+
puts "Getting required #{jruby_complete}"
|
82
|
+
response = Net::HTTP.get(URI.parse(location))
|
83
|
+
File.open(local_path, "wb") { |file| file.write(response) }
|
84
|
+
else
|
85
|
+
puts "Already have required #{jruby_complete}, skipping download"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
desc "Build the release *.jar"
|
90
|
+
task :release => [:get_jruby] do
|
91
|
+
puts "Building release *.jar"
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
data/lib/javamateview.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
require 'javamateview/joni'
|
3
|
+
require 'javamateview/jcodings'
|
4
|
+
require 'javamateview/jdom'
|
5
|
+
|
6
|
+
require 'javamateview/jar/java-mateview'
|
7
|
+
|
8
|
+
module JavaMateView
|
9
|
+
import com.redcareditor.mate.Bundle
|
10
|
+
import com.redcareditor.mate.Grammar
|
11
|
+
import com.redcareditor.mate.MateText
|
12
|
+
import com.redcareditor.mate.Parser
|
13
|
+
import com.redcareditor.mate.ParserScheduler
|
14
|
+
import com.redcareditor.mate.Pattern
|
15
|
+
import com.redcareditor.mate.Scope
|
16
|
+
import com.redcareditor.mate.ScopeMatcher
|
17
|
+
import com.redcareditor.theme.Theme
|
18
|
+
import com.redcareditor.theme.ThemeManager
|
19
|
+
|
20
|
+
class MateText
|
21
|
+
def set_root_scope_by_content_name(grammar_name, name)
|
22
|
+
scope = JavaMateView::Scope.new(self, "re")
|
23
|
+
bs = JavaMateView::Bundle.bundles
|
24
|
+
ruby = bs.detect {|b| b.name == grammar_name}
|
25
|
+
ps = ruby.grammars.first.patterns
|
26
|
+
dps = ps.select {|pt| pt.is_a?(Java::ComRedcareditorMate::DoublePattern) }
|
27
|
+
rps = dps.detect {|pt| pt.contentName == name }
|
28
|
+
scope.pattern = rps
|
29
|
+
scope.isOpen = true
|
30
|
+
self.parser.root = scope
|
31
|
+
end
|
32
|
+
|
33
|
+
def delay_parsing
|
34
|
+
parser.parserScheduler.deactivate
|
35
|
+
yield
|
36
|
+
parser.parserScheduler.reactivate
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
|
@@ -0,0 +1,334 @@
|
|
1
|
+
|
2
|
+
Dir[File.dirname(__FILE__) + "/*.jar"].each {|fn| require fn }
|
3
|
+
require File.join(File.dirname(__FILE__), *%w(.. src ruby java-mateview))
|
4
|
+
|
5
|
+
class MateExample < Jface::ApplicationWindow
|
6
|
+
attr_reader :mate_text, :contents
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super(nil)
|
10
|
+
end
|
11
|
+
|
12
|
+
# this is another way of making a listener
|
13
|
+
class MyListener
|
14
|
+
include com.redcareditor.mate.IGrammarListener
|
15
|
+
|
16
|
+
def grammarChanged(new_name)
|
17
|
+
puts "listened for #{new_name} in #{self}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def createContents(parent)
|
22
|
+
@contents = Swt::Widgets::Composite.new(parent, Swt::SWT::NONE)
|
23
|
+
@contents.layout = Swt::Layout::FillLayout.new
|
24
|
+
@mate_text = JavaMateView::MateText.new(@contents, false)
|
25
|
+
|
26
|
+
@mate_text.add_grammar_listener do |new_name|
|
27
|
+
puts "listened for #{new_name} in #{self}"
|
28
|
+
end
|
29
|
+
@mate_text.set_grammar_by_name "Ruby"
|
30
|
+
@mate_text.set_theme_by_name "Mac Classic"
|
31
|
+
@mate_text.set_font "Monaco", 15
|
32
|
+
return @contents
|
33
|
+
end
|
34
|
+
|
35
|
+
def initializeBounds
|
36
|
+
shell.set_size(500,400)
|
37
|
+
end
|
38
|
+
|
39
|
+
def createMenuManager
|
40
|
+
main_menu = Jface::MenuManager.new
|
41
|
+
|
42
|
+
file_menu = Jface::MenuManager.new("Tests")
|
43
|
+
main_menu.add file_menu
|
44
|
+
|
45
|
+
replace1_action = ReplaceContents1.new
|
46
|
+
replace1_action.window = self
|
47
|
+
replace1_action.text = "Contents RUBY"
|
48
|
+
file_menu.add replace1_action
|
49
|
+
|
50
|
+
replace2_action = ReplaceContents2.new
|
51
|
+
replace2_action.window = self
|
52
|
+
replace2_action.text = "Contents HTML"
|
53
|
+
file_menu.add replace2_action
|
54
|
+
|
55
|
+
replace3_action = ReplaceContents3.new
|
56
|
+
replace3_action.window = self
|
57
|
+
replace3_action.text = "Contents long-lined JavaScript (slow)"
|
58
|
+
file_menu.add replace3_action
|
59
|
+
|
60
|
+
set_ruby_action = SetRuby.new
|
61
|
+
set_ruby_action.window = self
|
62
|
+
set_ruby_action.text = "Set Ruby Grammar"
|
63
|
+
file_menu.add set_ruby_action
|
64
|
+
|
65
|
+
set_html_action = SetHTML.new
|
66
|
+
set_html_action.window = self
|
67
|
+
set_html_action.text = "Set HTML Grammar"
|
68
|
+
file_menu.add set_html_action
|
69
|
+
|
70
|
+
set_java_script_action = SetJavaScript.new
|
71
|
+
set_java_script_action.window = self
|
72
|
+
set_java_script_action.text = "Set JavaScript Grammar"
|
73
|
+
file_menu.add set_java_script_action
|
74
|
+
|
75
|
+
set_mc_action = SetMacClassic.new
|
76
|
+
set_mc_action.window = self
|
77
|
+
set_mc_action.text = "Set Mac Classic"
|
78
|
+
file_menu.add set_mc_action
|
79
|
+
|
80
|
+
set_twilight_action = SetTwilight.new
|
81
|
+
set_twilight_action.window = self
|
82
|
+
set_twilight_action.text = "Set Twilight"
|
83
|
+
file_menu.add set_twilight_action
|
84
|
+
|
85
|
+
set_scopes_action = PrintScopeTree.new
|
86
|
+
set_scopes_action.window = self
|
87
|
+
set_scopes_action.text = "Print Scope Tree"
|
88
|
+
file_menu.add set_scopes_action
|
89
|
+
|
90
|
+
set_block_selection = SetBlockSelection.new
|
91
|
+
set_block_selection.window = self
|
92
|
+
set_block_selection.text = "Set Block Selection"
|
93
|
+
file_menu.add set_block_selection
|
94
|
+
|
95
|
+
set_block_selection = SetNotBlockSelection.new
|
96
|
+
set_block_selection.window = self
|
97
|
+
set_block_selection.text = "Set Not Block Selection"
|
98
|
+
file_menu.add set_block_selection
|
99
|
+
|
100
|
+
always_parse_all = AlwaysParseAll.new
|
101
|
+
always_parse_all.window = self
|
102
|
+
always_parse_all.text = "Always Parse All"
|
103
|
+
file_menu.add always_parse_all
|
104
|
+
|
105
|
+
toggle_invisibles = ToggleInvisibles.new
|
106
|
+
toggle_invisibles.window = self
|
107
|
+
toggle_invisibles.text = "Show/Hide Invisibles"
|
108
|
+
file_menu.add toggle_invisibles
|
109
|
+
|
110
|
+
toggle_word_wrap = ToggleWordWrap.new
|
111
|
+
toggle_word_wrap.window = self
|
112
|
+
toggle_word_wrap.text = "Toggle Word Wrap"
|
113
|
+
file_menu.add toggle_word_wrap
|
114
|
+
|
115
|
+
remove_annotations = RemoveAnnotations.new
|
116
|
+
remove_annotations.window = self
|
117
|
+
remove_annotations.text = "Remove Annotations"
|
118
|
+
file_menu.add remove_annotations
|
119
|
+
|
120
|
+
add_annotations = AddAnnotations.new
|
121
|
+
add_annotations.window = self
|
122
|
+
add_annotations.text = "Add Annotations"
|
123
|
+
file_menu.add add_annotations
|
124
|
+
|
125
|
+
return main_menu
|
126
|
+
end
|
127
|
+
|
128
|
+
class AddAnnotations < Jface::Action
|
129
|
+
attr_accessor :window
|
130
|
+
|
131
|
+
class AnnotationListener
|
132
|
+
def initialize(mt)
|
133
|
+
@mt = mt
|
134
|
+
end
|
135
|
+
|
136
|
+
def method_missing(event, *args)
|
137
|
+
p [event, args]
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def run
|
142
|
+
mt = @window.mate_text
|
143
|
+
mt.add_annotation_type(
|
144
|
+
"error.type",
|
145
|
+
File.dirname(__FILE__) + "/example/little-star.png",
|
146
|
+
Swt::Graphics::RGB.new(200, 0, 0));
|
147
|
+
mt.add_annotation_type(
|
148
|
+
"happy.type",
|
149
|
+
File.dirname(__FILE__) + "/example/little-smiley.png",
|
150
|
+
Swt::Graphics::RGB.new(0, 0, 200));
|
151
|
+
mt.add_annotation("error.type", 1, "Learn how to spell \"text!\"", 5, 5);
|
152
|
+
mt.add_annotation("happy.type", 1, "Learn how to spell \"text!\"", 50, 5);
|
153
|
+
mt.add_annotation_listener(AnnotationListener.new(@window.mate_text))
|
154
|
+
p [:online, 0, mt.annotations_on_line(0).to_a]
|
155
|
+
p [:online, 1, mt.annotations_on_line(1).to_a]
|
156
|
+
p [:online, 2, mt.annotations_on_line(2).to_a]
|
157
|
+
p [:online, 3, mt.annotations_on_line(3).to_a]
|
158
|
+
p [:online, 4, mt.annotations_on_line(4).to_a]
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
class RemoveAnnotations < Jface::Action
|
163
|
+
attr_accessor :window
|
164
|
+
|
165
|
+
def run
|
166
|
+
@window.mate_text.annotations.each {|a| @window.mate_text.removeAnnotation(a) }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
class ToggleWordWrap < Jface::Action
|
171
|
+
attr_accessor :window
|
172
|
+
|
173
|
+
def run
|
174
|
+
mt = @window.mate_text
|
175
|
+
mt.set_word_wrap(!mt.get_word_wrap)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
class ToggleInvisibles < Jface::Action
|
180
|
+
attr_accessor :window
|
181
|
+
|
182
|
+
def run
|
183
|
+
@window.mate_text.showInvisibles(!@window.mate_text.showing_invisibles)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
class AlwaysParseAll < Jface::Action
|
188
|
+
attr_accessor :window
|
189
|
+
|
190
|
+
def run
|
191
|
+
@window.mate_text.parser.parserScheduler.alwaysParseAll = true;
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
class SetBlockSelection < Jface::Action
|
196
|
+
attr_accessor :window
|
197
|
+
|
198
|
+
def run
|
199
|
+
@window.mate_text.get_text_widget.set_block_selection(true)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
class SetNotBlockSelection < Jface::Action
|
204
|
+
attr_accessor :window
|
205
|
+
|
206
|
+
def run
|
207
|
+
@window.mate_text.get_text_widget.set_block_selection(false)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
class SetMacClassic < Jface::Action
|
212
|
+
attr_accessor :window
|
213
|
+
|
214
|
+
def run
|
215
|
+
@window.mate_text.set_theme_by_name("Mac Classic")
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
class PrintScopeTree < Jface::Action
|
220
|
+
attr_accessor :window
|
221
|
+
|
222
|
+
def run
|
223
|
+
puts @window.mate_text.parser.root.pretty(0)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
class SetTwilight < Jface::Action
|
228
|
+
attr_accessor :window
|
229
|
+
|
230
|
+
def run
|
231
|
+
@window.mate_text.set_theme_by_name("Twilight")
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
class SetRuby < Jface::Action
|
236
|
+
attr_accessor :window
|
237
|
+
|
238
|
+
def run
|
239
|
+
@window.mate_text.set_grammar_by_name("Ruby")
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
class SetHTML < Jface::Action
|
244
|
+
attr_accessor :window
|
245
|
+
|
246
|
+
def run
|
247
|
+
@window.mate_text.set_grammar_by_name("HTML")
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
class SetJavaScript < Jface::Action
|
252
|
+
attr_accessor :window
|
253
|
+
|
254
|
+
def run
|
255
|
+
@window.mate_text.set_grammar_by_name("JavaScript")
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
class ReplaceContents1 < Jface::Action
|
260
|
+
attr_accessor :window
|
261
|
+
|
262
|
+
def run
|
263
|
+
s = Time.now
|
264
|
+
##until Time.now - s > 120
|
265
|
+
@window.mate_text.getMateDocument.set(File.read(File.dirname(__FILE__) + "/test_big_ruby_file.rb")*3)
|
266
|
+
#@window.mate_text.getMateDocument.set("def foo")
|
267
|
+
#end
|
268
|
+
puts "parse took #{Time.now - s}s"
|
269
|
+
puts "num scopes: #{@window.mate_text.parser.root.count_descendants}"
|
270
|
+
end
|
271
|
+
|
272
|
+
def source
|
273
|
+
foo=<<-RUBY
|
274
|
+
class ExitAction < Jface::Action
|
275
|
+
attr_accessor :window
|
276
|
+
|
277
|
+
def run
|
278
|
+
window.close
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
RUBY
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
class ReplaceContents2 < Jface::Action
|
287
|
+
attr_accessor :window
|
288
|
+
|
289
|
+
def run
|
290
|
+
@window.mate_text.getMateDocument.set(source*50)
|
291
|
+
end
|
292
|
+
|
293
|
+
def source
|
294
|
+
foo=<<-HTML
|
295
|
+
<div class="nav">
|
296
|
+
<ul>
|
297
|
+
<li>Foo</li>
|
298
|
+
<li>Bar</li>
|
299
|
+
<li>Baz</li>
|
300
|
+
</ul>
|
301
|
+
</div>
|
302
|
+
|
303
|
+
HTML
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
class ReplaceContents3 < Jface::Action
|
308
|
+
attr_accessor :window
|
309
|
+
|
310
|
+
def run
|
311
|
+
src = File.read("lib/example/jquery-142min.js")
|
312
|
+
s = Time.now
|
313
|
+
@window.mate_text.getMateDocument.set(src)
|
314
|
+
puts "parse took #{Time.now - s}s"
|
315
|
+
puts "num scopes: #{@window.mate_text.parser.root.count_descendants}"
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
def self.run
|
320
|
+
JavaMateView::Bundle.load_bundles("input/")
|
321
|
+
p JavaMateView::Bundle.bundles.to_a.map {|b| b.name }
|
322
|
+
JavaMateView::ThemeManager.load_themes("input/")
|
323
|
+
p JavaMateView::ThemeManager.themes.to_a.map {|t| t.name }
|
324
|
+
|
325
|
+
window = MateExample.new
|
326
|
+
window.block_on_open = true
|
327
|
+
window.addMenuBar
|
328
|
+
window.open
|
329
|
+
Swt::Widgets::Display.getCurrent.dispose
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
MateExample.run
|
334
|
+
|