cheri 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README +98 -0
  3. data/Rakefile +121 -0
  4. data/examples/hello_world_1.rb +28 -0
  5. data/examples/table_1.rb +44 -0
  6. data/lib/cheri/awt.rb +41 -0
  7. data/lib/cheri/builder.rb +31 -0
  8. data/lib/cheri/builder/awt/connecter.rb +63 -0
  9. data/lib/cheri/builder/awt/constants.rb +1003 -0
  10. data/lib/cheri/builder/awt/main.rb +191 -0
  11. data/lib/cheri/builder/awt/types.rb +220 -0
  12. data/lib/cheri/builder/base.rb +533 -0
  13. data/lib/cheri/builder/config.rb +187 -0
  14. data/lib/cheri/builder/connecter.rb +386 -0
  15. data/lib/cheri/builder/context.rb +655 -0
  16. data/lib/cheri/builder/generator.rb +425 -0
  17. data/lib/cheri/builder/html/charsets.rb +154 -0
  18. data/lib/cheri/builder/html/common.rb +32 -0
  19. data/lib/cheri/builder/html/connecter.rb +57 -0
  20. data/lib/cheri/builder/html/element.rb +156 -0
  21. data/lib/cheri/builder/html/main.rb +116 -0
  22. data/lib/cheri/builder/html/types.rb +123 -0
  23. data/lib/cheri/builder/main.rb +483 -0
  24. data/lib/cheri/builder/swing/connecter.rb +141 -0
  25. data/lib/cheri/builder/swing/constants.rb +420 -0
  26. data/lib/cheri/builder/swing/main.rb +446 -0
  27. data/lib/cheri/builder/swing/types.rb +270 -0
  28. data/lib/cheri/builder/xml/charsets.rb +154 -0
  29. data/lib/cheri/builder/xml/common.rb +32 -0
  30. data/lib/cheri/builder/xml/connecter.rb +42 -0
  31. data/lib/cheri/builder/xml/element.rb +189 -0
  32. data/lib/cheri/builder/xml/main.rb +130 -0
  33. data/lib/cheri/builder/xml/types.rb +36 -0
  34. data/lib/cheri/cheri.rb +70 -0
  35. data/lib/cheri/cjx.rb +3 -0
  36. data/lib/cheri/explorer.rb +32 -0
  37. data/lib/cheri/explorer/explorer.rb +560 -0
  38. data/lib/cheri/html.rb +31 -0
  39. data/lib/cheri/image/Delete24.gif +0 -0
  40. data/lib/cheri/image/Find24.gif +0 -0
  41. data/lib/cheri/image/FindAgain24.gif +0 -0
  42. data/lib/cheri/image/Refresh24.gif +0 -0
  43. data/lib/cheri/image/Search24.gif +0 -0
  44. data/lib/cheri/image/Thumbs.db +0 -0
  45. data/lib/cheri/image/cheri_icon_16x16.png +0 -0
  46. data/lib/cheri/image/cheri_icon_24x24.png +0 -0
  47. data/lib/cheri/image/cheri_logo_medium.png +0 -0
  48. data/lib/cheri/image/close_10x10.png +0 -0
  49. data/lib/cheri/image/close_10x10s.png +0 -0
  50. data/lib/cheri/image/close_12x12.png +0 -0
  51. data/lib/cheri/image/close_14x14.png +0 -0
  52. data/lib/cheri/image/close_24x24.png +0 -0
  53. data/lib/cheri/image/close_dim2_12x12.png +0 -0
  54. data/lib/cheri/image/close_dim_12x12.png +0 -0
  55. data/lib/cheri/image/cls_tree.png +0 -0
  56. data/lib/cheri/image/con_tree.png +0 -0
  57. data/lib/cheri/image/jruby_14x16.png +0 -0
  58. data/lib/cheri/image/jruby_logo.png +0 -0
  59. data/lib/cheri/image/mod_tree.png +0 -0
  60. data/lib/cheri/image/obj_tree.png +0 -0
  61. data/lib/cheri/image/ruby_16x16.png +0 -0
  62. data/lib/cheri/image/vars_tree.png +0 -0
  63. data/lib/cheri/java.rb +26 -0
  64. data/lib/cheri/java/builder.rb +28 -0
  65. data/lib/cheri/java/builder/main.rb +407 -0
  66. data/lib/cheri/java/builder/util.rb +480 -0
  67. data/lib/cheri/java/java.rb +56 -0
  68. data/lib/cheri/jruby.rb +32 -0
  69. data/lib/cheri/jruby/explorer.rb +43 -0
  70. data/lib/cheri/jruby/explorer/common.rb +38 -0
  71. data/lib/cheri/jruby/explorer/dialogs.rb +383 -0
  72. data/lib/cheri/jruby/explorer/explorer.rb +904 -0
  73. data/lib/cheri/jruby/explorer/splash.rb +80 -0
  74. data/lib/cheri/jruby/explorer/viewer.rb +619 -0
  75. data/lib/cheri/jruby/explorer/viewers.rb +1057 -0
  76. data/lib/cheri/jruby/jruby.rb +59 -0
  77. data/lib/cheri/swing.rb +41 -0
  78. data/lib/cheri/xml.rb +31 -0
  79. metadata +135 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (C) 2007 William N Dortch <bill.dortch@gmail.com>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,98 @@
1
+ = Cheri -- A Builder Framework
2
+
3
+ Cheri is a framework for creating builder applications (those that create
4
+ hierarchical, tree-like, structures). It includes a number of builders
5
+ based on the framework, as well as a builder-builder tool for easily creating
6
+ simple builders. Cheri also comes with a demo application, Cheri::JRuby::Explorer,
7
+ that is built using two of the supplied builders (Cheri::Swing and Cheri::Html).
8
+
9
+ This version (0.0.2) is an early beta release. Some features are not yet fully
10
+ developed, in particular the HTML/XML components. On the other hand, Cheri::Swing,
11
+ which is the successor to JRBuilder (http://www2.webng.com/bdortch/jrbuilder), is
12
+ relatively mature, in an adolescent sort of way, though many features could be added.
13
+
14
+ But do expect some bugs, especially in Cheri::JRuby::Explorer (CJX), which is very
15
+ much a work in progress. I note some known problems in the section below.
16
+
17
+ Documentation will be forthcoming over the next couple of days (from this writing,
18
+ 8 June 2007), so watch the Cheri websites at RubyForge for updates:
19
+
20
+ http://cheri.rubyforge.org/
21
+ http://rubyforge.org/projects/cheri
22
+
23
+ In the meantime, here is a very brief summary of CJX.
24
+
25
+ == Cheri::JRuby::Explorer (CJX)
26
+
27
+ CJX is a Swing application written entirely in (J)Ruby using the Cheri::Swing and
28
+ Cheri::Html builders. It enables you to easily browse classes/modules,
29
+ configuration/environment settings, and, if ObjectSpace is enabled, any objects
30
+ in a JRuby instance. A small DRb server component can be installed in other JRuby
31
+ instances, enabling you to browse them as well. (Note that I have been trying to get
32
+ the DRb server component working in C/MRI Ruby as well, but have run up against
33
+ threading/IO conflicts. Suggestions welcome!)
34
+
35
+ The CJX client requires JRuby 1.0.0RC3 or later. To run it (after installing the
36
+ Cheri gem):
37
+
38
+ require 'rubygems'
39
+ require 'cheri/jruby/explorer'
40
+
41
+ Cheri::JRuby::Explorer.run
42
+
43
+ This will take several seconds to load and start -- performance will be one area
44
+ of improvement for versions 0.0.3 and beyond. Once it loads, it should be fairly
45
+ clear what to do.
46
+
47
+ Some known issues:
48
+
49
+ * Browsing the class hierarchy is very slow right now -- this actually slowed down
50
+ in the past couple of days when I switched from HTML to straight Swing layout, the
51
+ opposite of what I expected to happen.
52
+
53
+ * ObjectSpace searches that return large numbers of objects sometimes result in a
54
+ NullPointerException (JList seems to get overwhelmed), requiring a restart of
55
+ CJX. I had a fix in that did a GC on the target instance before each search,
56
+ which seemed to help, but also seemed a little extreme. This will be a search
57
+ option in 0.0.3.
58
+
59
+ * There are lots of layout issues; neither HTML (JEditorPane) nor BoxLayout provide
60
+ exactly what I'm looking for. Will probably have to bite the bullet and go to
61
+ GridBagLayout. Ugh.
62
+
63
+ * Close buttons on tabs aren't available pre-Java 1.6. There are alternatives for
64
+ the top tabs, but currently not for the bottom (search result) tabs. Will resolve
65
+ in 0.0.3.
66
+
67
+ * Speaking of tabs, tab management (and navigation in general) is not yet quite right.
68
+ Will have history/back buttons and better tab management in 0.0.3.
69
+
70
+ * Global variables are currently shown, um, globally, when many of them should be shown
71
+ per thread. This will be fixed in 0.0.3, which will include a Thread section with
72
+ other goodies as well (thread-local vars, status, etc.).
73
+
74
+ To install the CJX DRb server component in an instance (assuming the Cheri gem is
75
+ installed):
76
+
77
+ require 'rubygems'
78
+ require 'cheri/explorer'
79
+
80
+ Cheri::Explorer.start nnnn #=> where nnnn is a port number
81
+
82
+ Note that for the server, you require 'cheri/explorer', _not_ 'cheri/jruby/explorer'.
83
+ Also note that the above actually _does_ work in C/MRI Ruby, but requests to the
84
+ server then hang in CJX, unless you join the thread:
85
+
86
+ Cheri::Explorer.thread.join
87
+
88
+ After that, you can browse just fine in CJX, but you can't do anything more in the
89
+ C-Ruby instance, so it's kind of pointless. Again, if anyone with some DRb experience
90
+ (of which I have none) can offer any suggestions, I'd appreciate it.
91
+
92
+ == The Rest
93
+
94
+ Please visit the Cheri site for more documentation, I'll be continually adding to it
95
+ in the coming days.
96
+
97
+ Bill Dortch <cheri.project@gmail.com>
98
+ 8 June 2007
data/Rakefile ADDED
@@ -0,0 +1,121 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/rdoctask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/contrib/rubyforgepublisher'
8
+ require 'fileutils'
9
+ require File.join(File.dirname(__FILE__), 'lib', 'cheri', 'cheri')
10
+
11
+ PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
12
+ PKG_NAME = 'cheri'
13
+ PKG_VERSION = Cheri::VERSION::STRING + PKG_BUILD
14
+ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
15
+ PKG_DESTINATION = "../#{PKG_NAME}"
16
+
17
+ RELEASE_NAME = "REL #{PKG_VERSION}"
18
+
19
+ RUBY_FORGE_PROJECT = "cheri"
20
+ RUBY_FORGE_USER = "bill_dortch"
21
+
22
+ desc "Default Task"
23
+ #task :default => [ :test ]
24
+ task :default => [ :gem ]
25
+
26
+
27
+ # Run the unit tests
28
+ Rake::TestTask.new { |t|
29
+ t.libs << "test"
30
+ t.test_files = Dir['test/*_test.rb']
31
+ t.verbose = true
32
+ }
33
+
34
+ # Generate the RDoc documentation
35
+ Rake::RDocTask.new { |rdoc|
36
+ rdoc.rdoc_dir = 'doc'
37
+ rdoc.title = "Cheri Builder Platform"
38
+ #rdoc.options << '--all'
39
+ #rdoc.options << '--line-numbers' << '--inline-source'
40
+ rdoc.template = "#{ENV['template']}.rb" if ENV['template']
41
+ rdoc.rdoc_files.include('README')
42
+ #rdoc.rdoc_files.include('CHANGELOG')
43
+ rdoc.rdoc_files.include("lib/**/*.rb")
44
+ }
45
+
46
+
47
+ # Create compressed packages
48
+ spec = Gem::Specification.new do |s|
49
+ s.platform = Gem::Platform::RUBY
50
+ s.name = PKG_NAME
51
+ s.summary = "Cheri Builder Platform"
52
+ s.description = %q{The Cheri Builder Platform.}
53
+ s.version = PKG_VERSION
54
+
55
+ s.author = "Bill Dortch"
56
+ s.email = "cheri.project@gmail.com"
57
+ s.rubyforge_project = "cheri"
58
+ s.homepage = "http://cheri.rubyforge.org"
59
+
60
+ s.has_rdoc = true
61
+ s.requirements << 'none'
62
+ s.require_path = 'lib'
63
+
64
+ s.files = [ "Rakefile", "README", "MIT-LICENSE" ]
65
+ s.files = s.files + Dir.glob( "examples/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
66
+ s.files = s.files + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
67
+ s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
68
+ end
69
+ Rake::GemPackageTask.new(spec) do |p|
70
+ p.gem_spec = spec
71
+ p.need_tar = true
72
+ p.need_zip = true
73
+ end
74
+
75
+
76
+ def each_source_file(*args)
77
+ prefix, includes, excludes, open_file = args
78
+ prefix ||= File.dirname(__FILE__)
79
+ open_file = true if open_file.nil?
80
+ includes ||= %w[lib\/cheri\.rb$ lib\/cheri\/.*\.rb$]
81
+ Find.find(prefix) do |file_name|
82
+ next if file_name =~ /\.svn/
83
+ file_name.gsub!(/^\.\//, '')
84
+ continue = false
85
+ includes.each do |inc|
86
+ if file_name.match(/#{inc}/)
87
+ continue = true
88
+ break
89
+ end
90
+ end
91
+ next unless continue
92
+ if open_file
93
+ File.open(file_name) do |f|
94
+ yield file_name, f
95
+ end
96
+ else
97
+ yield file_name
98
+ end
99
+ end
100
+ end
101
+
102
+ desc "Count lines of the Cheri source code"
103
+ task :lines do
104
+ total_lines = total_loc = 0
105
+ puts "Per File:"
106
+ each_source_file do |file_name, f|
107
+ file_lines = file_loc = 0
108
+ while line = f.gets
109
+ file_lines += 1
110
+ next if line =~ /^\s*$/
111
+ next if line =~ /^\s*#/
112
+ file_loc += 1
113
+ end
114
+ puts " #{file_name}: Lines #{file_lines}, LOC #{file_loc}"
115
+ total_lines += file_lines
116
+ total_loc += file_loc
117
+ end
118
+ puts "Total:"
119
+ puts " Lines #{total_lines}, LOC #{total_loc}"
120
+ end
121
+
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'cheri/swing'
3
+
4
+ include Cheri::Swing
5
+
6
+ frame = swing {
7
+
8
+ frame('Hello World Demo 1') { |obj| size 320, 240
9
+ box_layout obj,:Y_AXIS
10
+ content_pane { background :RED }
11
+ on_window_closing { frame.dispose }
12
+ menu_bar {
13
+ menu('File') { mnemonic :VK_F; background :WHITE
14
+ menu_item('Exit') { mnemonic :VK_X; background :WHITE
15
+ on_click { frame.dispose }
16
+ }
17
+ }
18
+ }
19
+ y_glue
20
+ x_panel { background :WHITE
21
+ label('Hello, World!') { foreground :BLUE }
22
+ }
23
+ y_glue
24
+ }
25
+ }
26
+
27
+ frame.show
28
+
@@ -0,0 +1,44 @@
1
+ require 'rubygems'
2
+ require 'cheri/swing'
3
+
4
+ include Cheri::Swing
5
+
6
+ frame = swing {
7
+
8
+ bgcolor = color(240,238,220)
9
+
10
+ column_headings = ['SKU','Product Name','Quantity','Unit Price','Total Price'].to_java
11
+ data = [
12
+ ['123-456-789','Foo',3,2.75,3*2.75],
13
+ ['123-456-790','Foo Plus',5,3.75,5*3.75],
14
+ ['555-867-5309','Super Foo',2,9.27,2*9.27],
15
+ ['987-654-321','Foo for Bars',4,7.99,4*7.99]
16
+ ].to_java
17
+
18
+ frame('Table Demo 1') { |frm| size 500, 375
19
+ content_pane { background bgcolor; box_layout frm, :Y_AXIS
20
+ bevel_border :RAISED }
21
+ on_window_closing { frame.dispose }
22
+ menu_bar { background bgcolor
23
+ menu("File") { mnemonic :VK_F; background :WHITE
24
+ menu_item("Exit") { mnemonic :VK_X; background :WHITE
25
+ on_click { frame.dispose }
26
+ }
27
+ } }
28
+ y_panel { background bgcolor
29
+ compound_border(titled_border('Current Order Items') {
30
+ etched_border :LOWERED }, empty_border( 7,7,7,7) )
31
+ scroll_pane(
32
+ @my_table = table(data,column_headings) {
33
+ get_table_header {
34
+ background :BLUE; foreground :WHITE;
35
+ font('Dialog',:BOLD,12)
36
+ }
37
+ }) {
38
+ get_viewport { background :WHITE }
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ frame.show
data/lib/cheri/awt.rb ADDED
@@ -0,0 +1,41 @@
1
+ #--
2
+ # Copyright (C) 2007 William N Dortch <bill.dortch@gmail.com>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+ #
24
+
25
+ if (defined?JRUBY_VERSION) && 0 == (JRUBY_VERSION =~ /(\d+\.\d+\.\d+)([-\.A-Z0-9]*)/) &&
26
+ (($1 == '1.0.0' && ($2.empty? || $2 >= 'RC3')) || $1 > '1.0.0')
27
+
28
+ require 'cheri/java/builder'
29
+ require 'cheri/builder/awt/types'
30
+ require 'cheri/builder/awt/connecter'
31
+ require 'cheri/builder/awt/constants'
32
+ require 'cheri/builder/awt/main'
33
+
34
+ else
35
+ STDERR.puts %{
36
+ Cheri::AWT requires JRuby (1.0.0RC3 or later)
37
+ Download the latest version of JRuby at:
38
+ http://www.jruby.org/
39
+ }
40
+
41
+ end
@@ -0,0 +1,31 @@
1
+ #--
2
+ # Copyright (C) 2007 William N Dortch <bill.dortch@gmail.com>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+ #
24
+
25
+ require 'cheri/cheri'
26
+ require 'cheri/builder/base'
27
+ require 'cheri/builder/config'
28
+ require 'cheri/builder/connecter'
29
+ require 'cheri/builder/context'
30
+ require 'cheri/builder/generator'
31
+ require 'cheri/builder/main'
@@ -0,0 +1,63 @@
1
+ #--
2
+ # Copyright (C) 2007 William N Dortch <bill.dortch@gmail.com>
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+ #
24
+
25
+ module Cheri
26
+ module AWT
27
+
28
+ AWTConnecter = Cheri::Builder::TypeConnecter.new(Cheri::Java::Builder::DefaultConnecter) do
29
+
30
+ type java.awt.Component do
31
+ connect java.awt.Font, :setFont
32
+ end
33
+
34
+ type java.awt.Container do
35
+ connect java.awt.LayoutManager, :setLayout
36
+
37
+ connect java.awt.Component do |par,obj,sym,props|
38
+ if props
39
+ cs = props[:constraints]
40
+ ix = props[:index]
41
+ n = props[:name]
42
+ if cs && Fixnum === ix
43
+ par.add(obj,cs,ix)
44
+ elsif cs
45
+ par.add(obj,cs)
46
+ elsif Fixnum === ix
47
+ par.add(obj,ix)
48
+ elsif String === n
49
+ par.add(n,obj)
50
+ else
51
+ par.add(obj)
52
+ end
53
+ else
54
+ par.add(obj)
55
+ end
56
+ end
57
+
58
+ end #java.awt.Container
59
+
60
+ end #AWTConnecter
61
+
62
+ end #AWT
63
+ end #Cheri