cheri 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README +5 -5
- data/lib/cheri/builder/connecter.rb +2 -0
- data/lib/cheri/cheri.rb +1 -1
- data/lib/cheri/cjx.rb +1 -0
- data/lib/cheri/java/builder/util.rb +6 -1
- data/lib/cheri/jruby/explorer/explorer.rb +12 -1
- data/lib/cheri/jruby/explorer/viewers.rb +44 -29
- metadata +2 -2
data/README
CHANGED
@@ -6,7 +6,7 @@ based on the framework, as well as a builder-builder tool for easily creating
|
|
6
6
|
simple builders. Cheri also comes with a demo application, Cheri::JRuby::Explorer,
|
7
7
|
that is built using two of the supplied builders (Cheri::Swing and Cheri::Html).
|
8
8
|
|
9
|
-
This version (0.0.
|
9
|
+
This version (0.0.3) is an early beta release. Some features are not yet fully
|
10
10
|
developed, in particular the HTML/XML components. On the other hand, Cheri::Swing,
|
11
11
|
which is the successor to JRBuilder (http://www2.webng.com/bdortch/jrbuilder), is
|
12
12
|
relatively mature, in an adolescent sort of way, though many features could be added.
|
@@ -54,7 +54,7 @@ Some known issues:
|
|
54
54
|
NullPointerException (JList seems to get overwhelmed), requiring a restart of
|
55
55
|
CJX. I had a fix in that did a GC on the target instance before each search,
|
56
56
|
which seemed to help, but also seemed a little extreme. This will be a search
|
57
|
-
option in 0.0.
|
57
|
+
option in 0.0.4.
|
58
58
|
|
59
59
|
* There are lots of layout issues; neither HTML (JEditorPane) nor BoxLayout provide
|
60
60
|
exactly what I'm looking for. Will probably have to bite the bullet and go to
|
@@ -62,13 +62,13 @@ Some known issues:
|
|
62
62
|
|
63
63
|
* Close buttons on tabs aren't available pre-Java 1.6. There are alternatives for
|
64
64
|
the top tabs, but currently not for the bottom (search result) tabs. Will resolve
|
65
|
-
in 0.0.
|
65
|
+
in 0.0.4.
|
66
66
|
|
67
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.
|
68
|
+
Will have history/back buttons and better tab management in 0.0.4.
|
69
69
|
|
70
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.
|
71
|
+
per thread. This will be fixed in 0.0.4, which will include a Thread section with
|
72
72
|
other goodies as well (thread-local vars, status, etc.).
|
73
73
|
|
74
74
|
To install the CJX DRb server component in an instance (assuming the Cheri gem is
|
data/lib/cheri/cheri.rb
CHANGED
data/lib/cheri/cjx.rb
CHANGED
@@ -128,6 +128,7 @@ CJava = Cheri::Java
|
|
128
128
|
#:startdoc:
|
129
129
|
ListenerInfo = Struct.new(:clazz, :methods, :add_method_name)
|
130
130
|
@impls = {}
|
131
|
+
@info = {}
|
131
132
|
class << self
|
132
133
|
def get_listener_impl(info)
|
133
134
|
@impls[info.clazz] ||= create_listener_impl(info)
|
@@ -155,6 +156,9 @@ class << self
|
|
155
156
|
impl
|
156
157
|
end
|
157
158
|
def get_listener_info(java_class,method_name)
|
159
|
+
if (info = @info[key = [java_class,method_name]])
|
160
|
+
return info
|
161
|
+
end
|
158
162
|
java_class.java_instance_methods.each do |m|
|
159
163
|
if m.name.match(/add(\w+)Listener/) &&
|
160
164
|
m.argument_types.length == 1 &&
|
@@ -163,7 +167,8 @@ class << self
|
|
163
167
|
methods = clazz.java_instance_methods
|
164
168
|
methods.each do |im|
|
165
169
|
if im.name == method_name
|
166
|
-
|
170
|
+
info = @info[key] = ListenerInfo.new(CJava.get_class(clazz.name),methods,m.name)
|
171
|
+
return info
|
167
172
|
end
|
168
173
|
end
|
169
174
|
end
|
@@ -63,7 +63,7 @@ class Main
|
|
63
63
|
include Cheri::Swing
|
64
64
|
System = ::Java::JavaLang::System
|
65
65
|
Thread = ::Java::JavaLang::Thread
|
66
|
-
JComponent = ::JavaxSwing::JComponent
|
66
|
+
JComponent = ::Java::JavaxSwing::JComponent
|
67
67
|
WeakHashMap = ::Java::JavaUtil::WeakHashMap
|
68
68
|
JOptionPane = ::Java::JavaxSwing::JOptionPane
|
69
69
|
Math = ::Java::JavaLang::Math
|
@@ -246,6 +246,11 @@ class Main
|
|
246
246
|
close_active_view
|
247
247
|
end
|
248
248
|
end
|
249
|
+
menu_item 'Close current search results' do
|
250
|
+
on_click do
|
251
|
+
close_active_search_view
|
252
|
+
end
|
253
|
+
end
|
249
254
|
end
|
250
255
|
cheri_yield(@view_menu,&block) if block
|
251
256
|
@view_menu
|
@@ -540,6 +545,12 @@ class Main
|
|
540
545
|
end
|
541
546
|
end
|
542
547
|
|
548
|
+
def close_active_search_view
|
549
|
+
if (viewer = search_tab_pane.active_viewer)
|
550
|
+
close_search_view(viewer)
|
551
|
+
end
|
552
|
+
end
|
553
|
+
|
543
554
|
def close_view(viewer)
|
544
555
|
view = viewer.view
|
545
556
|
main_tab_pane.remove(view)
|
@@ -552,30 +552,25 @@ class ResultListViewer < Viewer
|
|
552
552
|
include NavViewerConstants
|
553
553
|
|
554
554
|
class ResultListItem
|
555
|
-
def initialize(id,
|
556
|
-
#puts "RLI init, id = #{id}"
|
555
|
+
def initialize(id,value)
|
557
556
|
@i = id
|
558
|
-
@
|
557
|
+
@v = value || 'Unavailable'
|
558
|
+
end
|
559
|
+
def id
|
560
|
+
@i
|
559
561
|
end
|
560
562
|
def value
|
561
|
-
unless @v
|
562
|
-
@v = @w.item_value(@i)
|
563
|
-
#@v = @v.to_s unless String === @v
|
564
|
-
#puts "RLI set value [#{@v}] class #{@v.class}"
|
565
|
-
end
|
566
563
|
@v
|
567
564
|
end
|
568
565
|
def to_s
|
569
|
-
|
566
|
+
@v
|
570
567
|
end
|
571
|
-
alias_method :to_str
|
568
|
+
alias_method :to_str, :to_s
|
569
|
+
#alias_method :toString, :to_s
|
572
570
|
end
|
573
571
|
|
574
572
|
def item_value(id)
|
575
|
-
|
576
|
-
v = @main.simple_value(@instance,id)
|
577
|
-
#puts "#{@count} val [#{v}]"
|
578
|
-
#v
|
573
|
+
@main.simple_value(@instance,id)
|
579
574
|
end
|
580
575
|
|
581
576
|
def initialize(*r,&k)
|
@@ -585,11 +580,20 @@ class ResultListViewer < Viewer
|
|
585
580
|
|
586
581
|
def create_object_list
|
587
582
|
res = @value.results
|
588
|
-
|
589
|
-
|
590
|
-
@obj_list =
|
591
|
-
|
592
|
-
|
583
|
+
proxy = @instance.proxy
|
584
|
+
len = res.length;
|
585
|
+
list = @obj_list = ::Java::JavaLang::Object[len].new
|
586
|
+
len.times do |i|
|
587
|
+
id = res[i]
|
588
|
+
val = nil
|
589
|
+
begin
|
590
|
+
val = proxy.simple_value
|
591
|
+
rescue
|
592
|
+
val = 'Unavailable'
|
593
|
+
end
|
594
|
+
list[i] = ResultListItem.new(id,value)
|
595
|
+
end
|
596
|
+
list
|
593
597
|
end
|
594
598
|
|
595
599
|
def title
|
@@ -872,18 +876,18 @@ class NavModuleViewer
|
|
872
876
|
|
873
877
|
def content_section
|
874
878
|
val = @value
|
875
|
-
empty_row
|
876
879
|
header_section
|
880
|
+
empty_row
|
877
881
|
if (anc = val.ancestors) && (first = anc.first)
|
878
882
|
anc.shift if first.id == val.id && first.value == val.qname
|
879
883
|
end
|
880
884
|
if anc && !anc.empty?
|
881
|
-
empty_row
|
882
885
|
ancestor_section
|
886
|
+
empty_row
|
883
887
|
end
|
884
888
|
if val.vars
|
885
|
-
empty_row
|
886
889
|
variables_section
|
890
|
+
empty_row
|
887
891
|
end
|
888
892
|
methods_section
|
889
893
|
last_row @last_cols
|
@@ -951,7 +955,6 @@ class NavModuleViewer
|
|
951
955
|
|
952
956
|
def methods_section
|
953
957
|
return unless (meths = @methods ||= proxy.module_methods(@value.qname,@value.id))
|
954
|
-
empty_row
|
955
958
|
coldef = ColDef.new(NColor,nil,NFont,VColor,nil,VFont)
|
956
959
|
|
957
960
|
@mcols = [coldef]
|
@@ -961,27 +964,39 @@ class NavModuleViewer
|
|
961
964
|
end
|
962
965
|
if (ms = meths.pub) && !ms.empty?
|
963
966
|
header_row(@mcols,HdrPubClsMeth)
|
964
|
-
ms.sort.each do |m|
|
967
|
+
ms.sort.each do |m|
|
968
|
+
value_row(@mcols,m)
|
969
|
+
end
|
965
970
|
end
|
966
971
|
if (ms = meths.pub_inst) && !ms.empty?
|
967
972
|
header_row(@mcols,HdrPubInsMeth)
|
968
|
-
ms.sort.each do |m|
|
973
|
+
ms.sort.each do |m|
|
974
|
+
value_row(@mcols,m)
|
975
|
+
end
|
969
976
|
end
|
970
977
|
if (ms = meths.pro) && !ms.empty?
|
971
978
|
header_row(@mcols,HdrProClsMeth)
|
972
|
-
ms.sort.each do |m|
|
979
|
+
ms.sort.each do |m|
|
980
|
+
value_row(@mcols,m)
|
981
|
+
end
|
973
982
|
end
|
974
983
|
if (ms = meths.pro_inst) && !ms.empty?
|
975
984
|
header_row(@mcols,HdrProInsMeth)
|
976
|
-
ms.sort.each do |m|
|
985
|
+
ms.sort.each do |m|
|
986
|
+
value_row(@mcols,m)
|
987
|
+
end
|
977
988
|
end
|
978
989
|
if (ms = meths.pri) && !ms.empty?
|
979
990
|
header_row(@mcols,HdrPriClsMeth)
|
980
|
-
ms.sort.each do |m|
|
991
|
+
ms.sort.each do |m|
|
992
|
+
value_row(@mcols,m)
|
993
|
+
end
|
981
994
|
end
|
982
995
|
if (ms = meths.pri_inst) && !ms.empty?
|
983
996
|
header_row(@mcols, HdrPriInsMeth)
|
984
|
-
ms.sort.each do |m|
|
997
|
+
ms.sort.each do |m|
|
998
|
+
value_row(@mcols,m)
|
999
|
+
end
|
985
1000
|
end
|
986
1001
|
@last_cols = @mcols
|
987
1002
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: cheri
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2007-06-
|
6
|
+
version: 0.0.3
|
7
|
+
date: 2007-06-10 00:00:00 -07:00
|
8
8
|
summary: Cheri Builder Platform
|
9
9
|
require_paths:
|
10
10
|
- lib
|