From 0d4813df132fdd79999b1f41c05641691646f1aa Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Sat, 22 Aug 2015 01:36:11 +0200 Subject: [PATCH] added separate class view and made classes view a listview --- lib/base/element_view.rb | 16 +++++++++---- lib/class_view.rb | 50 +++++++--------------------------------- lib/classes_view.rb | 43 ++++++++++++++++++++++++++++++++++ lib/main_view.rb | 4 ++-- 4 files changed, 64 insertions(+), 49 deletions(-) create mode 100644 lib/classes_view.rb 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) ,