diff --git a/lib/base/element_view.rb b/lib/base/element_view.rb
index c6999cd..5954939 100644
--- a/lib/base/element_view.rb
+++ b/lib/base/element_view.rb
@@ -32,13 +32,19 @@ class ElementView
element
end
- def wrap_node_with node , wrapper
- node.replace_with wrapper
- node.append_to wrapper
+ # wrap the @element variable with the given element
+ # so if wrapper ==
the new @element will be
old @element
+ # return the new @element, which is wrapper
+ def wrap_element wrapper
+ @element = wrap_node_with @element , wrapper
end
- def create_element class_or_id , text = nil
- @element = div( class_or_id , text)
+ #wrap the given node with the wappper, so for a div wrapper and a button node
+ # the result will be
+ def wrap_node_with node , wrapper
+ puts "wraps parent #{node.parent}"
+ node.replace_with(wrapper) if node.parent
+ wrapper << node
end
def add class_or_id , tex = nil
diff --git a/lib/class_view.rb b/lib/class_view.rb
index 4255ba5..e7dc45d 100644
--- a/lib/class_view.rb
+++ b/lib/class_view.rb
@@ -1,48 +1,14 @@
-class ClassView < ListView
-
- def initialize interpreter
- @interpreter = interpreter
- @classes = []
- Virtual.machine.space.classes.each do |name , claz|
- next if [:Kernel,:Module,:MetaClass,:BinaryCode].index name
- @classes << claz
- end
- @classes.sort! {|a,b| a.name <=> b.name }
+class ClassView < ElementView
+ def initialize clazz
+ @clazz = clazz
end
def draw
- create_element(".classes") << div("h4" , "Classes")
- list = add("ul.nav!")
-
- @classes.each do |cl|
- list << (div("li") <<
- (div( "a" , cl.name ) <<
- (ul = div("ul"))))
- cl.object_layout.object_instance_names.each do |name|
- ul << (div("li") << div("a", name ))
- end
- end
- return @element
-
- DOM do |dom|
- dom.div.classes do
- dom.h4 {"Classes"}
- dom.ul.nav! do
- @classes.each do |cl|
- dom.li do
- dom.a { cl.name }
- dom.ul do
- cl.object_layout.object_instance_names.each do |name|
- dom.li do
- dom.a{ name }
- end
- end
- end
- end
- end
- end
- end
+ @element = div("li")
+ add( "a" , @clazz.name ) << (ul = div("ul"))
+ @clazz.object_layout.object_instance_names.each do |name|
+ ul << (div("li") << div("a", name ))
end
+ @element
end
-
end
diff --git a/lib/classes_view.rb b/lib/classes_view.rb
new file mode 100644
index 0000000..f7d9cbc
--- /dev/null
+++ b/lib/classes_view.rb
@@ -0,0 +1,43 @@
+require_relative "class_view"
+
+class ClassesView < ListView
+
+ def initialize interpreter
+ @interpreter = interpreter
+ classes = []
+ Virtual.machine.space.classes.each do |name , claz|
+ next if [:Kernel,:Module,:MetaClass,:BinaryCode].index name
+ classes << claz
+ end
+ classes.sort! {|a,b| a.name <=> b.name }
+ super( classes.collect{|c| ClassView.new(c)})
+ end
+
+ def draw
+ super()
+ wrap_element div("ul.nav!")
+ wrap_element( div(".classes") << div("h4" , "Classes") )
+ return @element
+
+ DOM do |dom|
+ dom.div.classes do
+ dom.h4 {"Classes"}
+ dom.ul.nav! do
+ @classes.each do |cl|
+ dom.li do
+ dom.a { cl.name }
+ dom.ul do
+ cl.object_layout.object_instance_names.each do |name|
+ dom.li do
+ dom.a{ name }
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
+end
diff --git a/lib/main_view.rb b/lib/main_view.rb
index 982dbe5..c0d54f0 100644
--- a/lib/main_view.rb
+++ b/lib/main_view.rb
@@ -4,7 +4,7 @@ require 'native'
require "salama"
require "interpreter/interpreter"
require "base/list_view"
-require_relative "class_view"
+require_relative "classes_view"
require_relative "status_view"
require_relative "file_view"
require_relative "blocks_view"
@@ -27,7 +27,7 @@ class MainView < ListView
machine.run_before "Register::CallImplementation"
@interpreter = Interpreter::Interpreter.new
- super( [ClassView.new(@interpreter) ,
+ super( [ClassesView.new(@interpreter) ,
FileView.new ,
BlocksView.new(@interpreter) ,
StatusView.new(@interpreter) ,