added separate class view and made classes view a listview

This commit is contained in:
Torsten Ruger 2015-08-22 01:36:11 +02:00
parent 5f2f35cbcf
commit 0d4813df13
4 changed files with 64 additions and 49 deletions

View File

@ -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 == <h4/> the new @element will be <h4> old @element </h4>
# 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 <div> <button>hwatever was in there</button> <div>
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

View File

@ -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|
@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
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 }
@element
end
end
end
end
end
end
end
end
end
end

43
lib/classes_view.rb Normal file
View File

@ -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

View File

@ -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) ,