OSDN Git Service

add editize
[pettanr/pettanr.git] / lib / editor / pool.rb
1 module Editor
2   module EditorModule
3     class Pool
4       attr_accessor :editor, :root_item, :pool, :index
5       def initialize editor, root_item
6         @editor = editor
7         @root_item = root_item
8         @pool = {}
9         @index = 1
10         self.editize
11       end
12       
13       # regist stored element
14       def editize
15         self.register nil, @root_item
16         @root_item.each_elements(self.name) do |element|
17           self.register @root_item, element
18         end
19       end
20       
21       def register parent, item
22         item.extend Peta::Editize
23         item.editor = @editor
24         item.parent = parent if parent
25         if item.new_record?
26           item.pool_id = @index
27           @index += 1
28         else
29           item.pool_id = item.id
30         end
31         @pool[item.item_name] ||= {'stored' => {}, 'new'  => {}}
32         @pool[item.item_name][item.dom_pool_type] ||= {}
33         @pool[item.item_name][item.dom_pool_type][item.pool_id] = item
34       end
35       
36       def unregister item
37         
38       end
39       
40     end
41     
42   end
43 end