OSDN Git Service

add editor
[pettanr/pettanr.git] / lib / editor / editor.rb
index 878cc0d..07e4076 100644 (file)
@@ -1,270 +1,8 @@
+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
@@ -277,16 +15,25 @@ module 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