+require_dependency "editor/dock"
module Editor
class Editor
- class Dock
- attr_accessor :editor, :bodies
- def initialize editor
- @editor = editor
- @root_dock_body = DockBody.new(self, 0, )
- @root_dock_body.label = DockLabel.new(@root_dock_body, 'panel')
- @root_dock_body.bay = RootBay.new(@root_dock_body)
-
- @element_dock_body = DockBody.new(self, 0, )
- @element_dock_body.label = DockLabel.new(@element_dock_body, 'elements')
- @element_dock_body.bay = ElementBay.new(@element_dock_body)
-
- @torder_dock_body = DockBody.new(self, 0, )
- @torder_dock_body.label = DockLabel.new(@torder_dock_body, 'torder')
- @torder_dock_body.bay = TorderBay.new(@torder_dock_body)
-
- @zorder_dock_body = DockBody.new(self, 0, )
- @zorder_dock_body.label = DockLabel.new(@zorder_dock_body, 'zorder')
- @zorder_dock_body.bay = ZorderBay.new(@zorder_dock_body)
-
- @new_dock_body = DockBody.new(self, 0, )
- @new_dock_body.label = DockLabel.new(@new_dock_body, 'new')
- @new_dock_body.bay = NewBay.new(@new_dock_body)
-
- @bodies = [
- @root_dock_body, @element_dock_body, @torder_dock_body, @zorder_dock_body, @new_dock_body
- ]
- end
-
- def root_item
- @editor.root_item
- end
-
- end
-
- class DockBody
- attr_accessor :dock, :index, :label, :bay
- def initialize dock, index
- @dock = dock
- @index = index
- @label = label
- @bay = bay
- end
-
- def root_item
- @dock.root_item
- end
-
- end
-
- class DockLabel
- attr_accessor :dock_body, :caption
- def initialize dock_body, caption
- @dock_body = dock_body
- @caption = caption
- end
-
- def root_item
- @dock_body.root_item
- end
-
- def index
- @dock_body.index
- end
-
- def label_id
- "tabs-1-tab"
- end
-
- def bay_id
- @dock_body.bay.bay_id
- end
- end
-
- class Bay
- attr_accessor :dock_body, :template_name
- def initialize dock_body
- @dock_body = dock_body
- @template_dir = 'templates/r/editor/'
- @template_name = @template_dir
- end
-
- def root_item
- @dock_body.root_item
- end
-
- def index
- @dock_body.index
- end
-
- def label
- @dock_body.label
- end
-
- def label_id
- self.label.label_id
- end
-
- def bay_id
- "tabs-2"
- end
-
- end
-
- class Board
- attr_accessor :bay, :board_index, :label, :bucket
- def initialize bay, board_index, element
- @bay = bay
- @board_index = board_index
- @element = element
- end
-
- def root_item
- @bay.root_item
- end
-
- def bay_index
- @bay.index
- end
-
- def header_class
- ""
- end
-
- end
-
- class BoardLabel
- def initialize board, caption
- end
-
- def class_name
- "elements-tabs"
- end
-
- end
-
- class SimpleBay < Bay
- attr_accessor :bucket, :bucket_template_name
- def initialize dock_body
- super
- @template_name = @template_dir + 'simple_bay'
- @bucket = nil
- @bucket_template_name = @template_dir + ''
- end
-
- end
-
- class BoardBay < Bay
- attr_accessor :boards
- def initialize dock_body
- super
- @template_name = @template_dir + 'board_bay'
- end
-
- end
-
- class Bucket
- def class_name
- "elements-tabs"
- end
-
- end
-
- class RootBay < SimpleBay
- def initialize dock_body
- super
- form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]
- mounted = true
- @bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
- @bucket_template_name = @template_dir + 'element_form'
- end
- end
-
- class ElementBay < BoardBay
- def initialize dock_body
- super
- @boards = self.root_item.panel_elements.map {|element|
- board = ElementBoard.new self, index, element
- board_label = BoardLabel.new board
- bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
- bucket_template_name = @template_dir + 'element_form'
- board_bucket = bucket
- board.label = board_label
- board.bucket = board_bucket
- board
- }
- end
-
- end
-
- class TorderBay < BoardBay
- def initialize dock_body
- super
- @boards = self.root_item.panel_elements.map {|element|
- board = TorderBoard.new self, index, element
- board_label = BoardLabel.new board
- bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
- bucket_template_name = @template_dir + 'element_form'
- board_bucket = bucket
- board.label = board_label
- board.bucket = board_bucket
- board
- }
- end
-
- end
-
- class ZorderBay < BoardBay
- def initialize dock_body
- super
- @boards = self.root_item.panel_elements.map {|element|
- board = ZorderBoard.new self, index, element
- board_label = BoardLabel.new board
- bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
- bucket_template_name = @template_dir + 'element_form'
- board_bucket = bucket
- board.label = board_label
- board.bucket = board_bucket
- board
- }
- end
-
- end
-
- class NewBay < BoardBay
- def initialize dock_body
- super
- @boards = self.root_item.panel_elements.map {|element|
- board = NewBoard.new self, index, element
- board_label = BoardLabel.new board
- bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
- bucket_template_name = @template_dir + 'element_form'
- board_bucket = bucket
- board.label = board_label
- board.bucket = board_bucket
- board
- }
- end
-
- end
-
- class ElementBoard < Board
- def class_name
- "elements-tabs"
- end
-
- end
-
- class TorderBoard < Board
- def class_name
- "tsort-box"
- end
-
- end
-
- class ZorderBoard < Board
- def class_name
- "zsort-box"
- end
-
- end
-
- class NewBoard < Board
- end
+ include DockModule
class Generator
def initialize editor
end
- attr_accessor :root_item, :dock, :generator, :operators
+ attr_accessor :root_item, :dock, :template_dir, :generator, :operators
def initialize root_item, operators
@root_item = root_item
@operators = operators
+ @template_dir = 'templates/r/editor/'
@dock = Dock.new self
@generator = Generator.new self
end
#InstanceMethods
+ def dom_id
+ 'editor-' + @root_item.id.to_s
+ end
+
+ def dom_class
+ 'editor'
+ end
+
def render view
@docks.map {|element|
ElementTab.new self, element