OSDN Git Service

fix Manifest
[pettanr/pettanr.git] / lib / editor / editor.rb
1 module Editor
2
3   class Editor
4     class Dock
5       attr_accessor :editor, :bodies
6       def initialize editor
7         @editor = editor
8         @root_dock_body = DockBody.new(self, 0, )
9         @root_dock_body.label = DockLabel.new(@root_dock_body, 'panel')
10         @root_dock_body.bay = RootBay.new(@root_dock_body)
11         
12         @element_dock_body = DockBody.new(self, 0, )
13         @element_dock_body.label = DockLabel.new(@element_dock_body, 'elements')
14         @element_dock_body.bay = ElementBay.new(@element_dock_body)
15         
16         @torder_dock_body = DockBody.new(self, 0, )
17         @torder_dock_body.label = DockLabel.new(@torder_dock_body, 'torder')
18         @torder_dock_body.bay = TorderBay.new(@torder_dock_body)
19         
20         @zorder_dock_body = DockBody.new(self, 0, )
21         @zorder_dock_body.label = DockLabel.new(@zorder_dock_body, 'zorder')
22         @zorder_dock_body.bay = ZorderBay.new(@zorder_dock_body)
23         
24         @new_dock_body = DockBody.new(self, 0, )
25         @new_dock_body.label = DockLabel.new(@new_dock_body, 'new')
26         @new_dock_body.bay = NewBay.new(@new_dock_body)
27         
28         @bodies = [
29           @root_dock_body, @element_dock_body, @torder_dock_body, @zorder_dock_body, @new_dock_body
30         ]
31       end
32       
33       def root_item
34         @editor.root_item
35       end
36       
37     end
38     
39     class DockBody
40       attr_accessor :dock, :index, :label, :bay
41       def initialize dock, index
42         @dock = dock
43         @index = index
44         @label = label
45         @bay = bay
46       end
47       
48       def root_item
49         @dock.root_item
50       end
51       
52     end
53     
54     class DockLabel
55       attr_accessor :dock_body, :caption
56       def initialize dock_body, caption
57         @dock_body = dock_body
58         @caption = caption
59       end
60       
61       def root_item
62         @dock_body.root_item
63       end
64       
65       def index
66         @dock_body.index
67       end
68       
69       def label_id
70         "tabs-1-tab"
71       end
72       
73       def bay_id
74         @dock_body.bay.bay_id
75       end
76     end
77     
78     class Bay
79       attr_accessor :dock_body, :template_name
80       def initialize dock_body
81         @dock_body = dock_body
82         @template_dir = 'templates/r/editor/'
83         @template_name = @template_dir
84       end
85       
86       def root_item
87         @dock_body.root_item
88       end
89       
90       def index
91         @dock_body.index
92       end
93       
94       def label
95         @dock_body.label
96       end
97       
98       def label_id
99         self.label.label_id
100       end
101       
102       def bay_id
103         "tabs-2"
104       end
105       
106     end
107     
108     class Board
109       attr_accessor :bay, :board_index, :label, :bucket
110       def initialize bay, board_index, element
111         @bay = bay
112         @board_index = board_index
113         @element = element
114       end
115       
116       def root_item
117         @bay.root_item
118       end
119       
120       def bay_index
121         @bay.index
122       end
123       
124       def header_class
125         ""
126       end
127       
128     end
129     
130     class BoardLabel
131       def initialize board, caption
132       end
133       
134       def class_name
135         "elements-tabs"
136       end
137       
138     end
139     
140     class SimpleBay < Bay
141       attr_accessor :bucket, :bucket_template_name
142       def initialize dock_body
143         super
144         @template_name = @template_dir + 'simple_bay'
145         @bucket = nil
146         @bucket_template_name = @template_dir + ''
147       end
148       
149     end
150     
151     class BoardBay < Bay
152       attr_accessor :boards
153       def initialize dock_body
154         super
155         @template_name = @template_dir + 'board_bay'
156       end
157       
158     end
159     
160     class Bucket
161       def class_name
162         "elements-tabs"
163       end
164       
165     end
166     
167     class RootBay < SimpleBay
168       def initialize dock_body
169         super
170         form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]
171         mounted = true
172         @bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
173         @bucket_template_name = @template_dir + 'element_form'
174       end
175     end
176     
177     class ElementBay < BoardBay
178       def initialize dock_body
179         super
180         @boards = self.root_item.panel_elements.map {|element| 
181           board = ElementBoard.new self, index, element
182           board_label = BoardLabel.new board 
183           bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
184           bucket_template_name = @template_dir + 'element_form'
185           board_bucket = bucket
186           board.label = board_label
187           board.bucket = board_bucket
188           board
189         }
190       end
191       
192     end
193     
194     class TorderBay < BoardBay
195       def initialize dock_body
196         super
197         @boards = self.root_item.panel_elements.map {|element| 
198           board = TorderBoard.new self, index, element
199           board_label = BoardLabel.new board 
200           bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
201           bucket_template_name = @template_dir + 'element_form'
202           board_bucket = bucket
203           board.label = board_label
204           board.bucket = board_bucket
205           board
206         }
207       end
208       
209     end
210     
211     class ZorderBay < BoardBay
212       def initialize dock_body
213         super
214         @boards = self.root_item.panel_elements.map {|element| 
215           board = ZorderBoard.new self, index, element
216           board_label = BoardLabel.new board 
217           bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
218           bucket_template_name = @template_dir + 'element_form'
219           board_bucket = bucket
220           board.label = board_label
221           board.bucket = board_bucket
222           board
223         }
224       end
225       
226     end
227     
228     class NewBay < BoardBay
229       def initialize dock_body
230         super
231         @boards = self.root_item.panel_elements.map {|element| 
232           board = NewBoard.new self, index, element
233           board_label = BoardLabel.new board 
234           bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
235           bucket_template_name = @template_dir + 'element_form'
236           board_bucket = bucket
237           board.label = board_label
238           board.bucket = board_bucket
239           board
240         }
241       end
242       
243     end
244     
245     class ElementBoard < Board
246       def class_name
247         "elements-tabs"
248       end
249       
250     end
251     
252     class TorderBoard < Board
253       def class_name
254         "tsort-box"
255       end
256       
257     end
258     
259     class ZorderBoard < Board
260       def class_name
261         "zsort-box"
262       end
263       
264     end
265     
266     class NewBoard < Board
267     end
268     
269     class Generator
270       def initialize editor
271         @editor = editor
272       end
273       
274       def root_item
275         @editor.root_item
276       end
277       
278     end
279     
280     attr_accessor :root_item, :dock, :generator, :operators
281     def initialize root_item, operators
282       @root_item = root_item
283       @operators = operators
284       @dock = Dock.new self
285       @generator = Generator.new self
286     end
287     
288     #InstanceMethods
289     
290     def render view
291       @docks.map {|element| 
292         ElementTab.new self, element
293       }
294     end
295   end
296 end