class TrustyCms::AdminUI

def initialize

def initialize
  initialize_nav
  load_default_regions
end

def initialize_nav

def initialize_nav
  @nav = NavTab.new("Tab Container")
  load_default_nav
end

def load_default_configuration_regions

def load_default_configuration_regions
  OpenStruct.new.tap do |configuration|
    configuration.show = RegionSet.new do |show|
      show.user.concat %w{preferences}
      show.trusty_config.concat %w{site defaults users}
    end
    configuration.edit = RegionSet.new do |edit|
      edit.main.concat %w{edit_header edit_form}
      edit.form.concat %w{edit_site edit_defaults edit_users}
      edit.form_bottom.concat %w{edit_buttons}
    end
  end
end

def load_default_extension_regions

def load_default_extension_regions
  OpenStruct.new.tap do |extension|
    extension.index = RegionSet.new do |index|
      index.thead.concat %w{title_header website_header version_header}
      index.tbody.concat %w{title_cell website_cell version_cell}
    end
  end
end

def load_default_layout_regions

def load_default_layout_regions
  OpenStruct.new.tap do |layout|
    layout.edit = RegionSet.new do |edit|
      edit.main.concat %w{edit_header edit_form}
      edit.form.concat %w{edit_title edit_extended_metadata edit_content}
      edit.form_bottom.concat %w{reference_links edit_buttons edit_timestamp}
    end
    layout.index = RegionSet.new do |index|
      index.top.concat %w{}
      index.thead.concat %w{title_header actions_header}
      index.tbody.concat %w{title_cell actions_cell}
      index.bottom.concat %w{new_button}
    end
    layout.new = layout.edit
    layout.remove = layout.edit
  end
end

def load_default_nav

def load_default_nav
  content = nav_tab("Content")
  content << nav_item("Pages", "/admin/pages")
  nav << content
  design = nav_tab("Design")
  design << nav_item("Layouts", "/admin/layouts")
  nav << design
  settings = nav_tab("Settings")
  settings << nav_item("General", "/admin/configuration")
  settings << nav_item("Personal", "/admin/preferences")
  settings << nav_item("Users", "/admin/users")
  settings << nav_item("Extensions", "/admin/extensions")
  nav << settings
end

def load_default_page_regions

def load_default_page_regions
  OpenStruct.new.tap do |page|
    page.edit = RegionSet.new do |edit|
      edit.main.concat %w{edit_header edit_form edit_popups}
      edit.form.concat %w{edit_title edit_extended_metadata edit_page_parts}
      edit.layout.concat %w{edit_layout edit_type edit_status edit_published_at}
      edit.form_bottom.concat %w{edit_buttons edit_timestamp}
    end
    page.index = RegionSet.new do |index|
      index.sitemap_head.concat %w{title_column_header status_column_header actions_column_header}
      index.node.concat %w{title_column status_column actions_column}
    end
    page.remove = page.children = page.index
    page.new = page._part = page.edit
  end
end

def load_default_regions

def load_default_regions
  @page = load_default_page_regions
  @layout = load_default_layout_regions
  @user = load_default_user_regions
  @configuration = load_default_configuration_regions
  @extension = load_default_extension_regions
end

def load_default_user_regions

def load_default_user_regions
  OpenStruct.new.tap do |user|
    user.preferences = RegionSet.new do |preferences|
      preferences.main.concat %w{edit_header edit_form}
      preferences.form.concat %w{edit_name edit_email edit_username edit_password edit_locale}
      preferences.form_bottom.concat %w{edit_buttons}
    end
    user.edit = RegionSet.new do |edit|
      edit.main.concat %w{edit_header edit_form}
      edit.form.concat %w{edit_name edit_email edit_username edit_password
                          edit_roles edit_locale edit_notes}
      edit.form_bottom.concat %w{edit_buttons edit_timestamp}
    end
    user.index = RegionSet.new do |index|
      index.thead.concat %w{title_header roles_header actions_header}
      index.tbody.concat %w{title_cell roles_cell actions_cell}
      index.bottom.concat %w{new_button}
    end
    user.new = user.edit
    user.remove = user.edit
  end
end

def nav_item(*args)

def nav_item(*args)
  NavSubItem.new(*args)
end

def nav_tab(*args)

def nav_tab(*args)
  NavTab.new(*args)
end

def tabs

def tabs
  nav['Content']
end