module Editor
module EditorModule
class Pool
- attr_accessor :root_item, :tabs
- def initialize root_item
+ attr_accessor :editor, :root_item, :pool, :index
+ def initialize editor, root_item
+ @editor = editor
@root_item = root_item
- @root_item.each_elements('panel') do |element|
- element.pool = self
+ @pool = {}
+ @index = 1
+ self.editize
+ end
+
+ # regist stored element
+ def editize
+ self.register @root_item
+ @root_item.each_elements(self.name) do |element|
+ self.register element
+ end
+ end
+
+ def register item
+ @item.editor = @editor
+ parent_model = item.parent_model(@editor.name)
+ if parent_model
+ item.parent = find
+ end
+ if item.new_record?
+ if parent_model
+ # element
+ item.parent__send__ "build_#{parent_model.child_element_name(item.item_name)}"
+ else
+ # root
+
+ end
+ item.pool_id = @index
+ @index += 1
+ else
+ item.pool_id = item.id
end
+ @pool[item.item_name] ||= {'stored' => {}, 'new' => {}}
+ @pool[item.item_name][item.dom_pool_type] ||= {}
+ @pool[item.item_name][item.dom_pool_type][item.pool_id] = item
+ end
+
+ def unregister item
+
end
end