class HtmlGrid::AbstractComposite

Constants

CSS_CLASS
CSS_ID
CSS_ID_MAP
CSS_MAP
CSS_STYLE_MAP
DEFAULT_CLASS
LABELS
LEGACY_INTERFACE
LOOKANDFEEL_MAP
SYMBOL_MAP

Public Class Methods

component(klass, key, name = nil) click to toggle source
# File lib/htmlgrid/composite.rb, line 55
def self.component(klass, key, name = nil)
  methname = klass.to_s.downcase.gsub("::", "_") << "_" << key.to_s
  define_method(methname) { |*args|
    model, session = args
    args = [model.send(key), session || @session, self]
    if name
      args.unshift(name)
      lookandfeel_map.store(methname.to_sym, name.to_sym)
    end
    klass.new(*args)
  }
  methname.to_sym
end

Public Instance Methods

create(component, model = @model) click to toggle source
# File lib/htmlgrid/composite.rb, line 75
def create(component, model = @model)
  if component.is_a? Class
    component.new(model, @session, self)
  elsif component.is_a? Symbol
    if respond_to?(component, true)
      args = [model]
      if self.class::LEGACY_INTERFACE
        args.push(@session)
      end
      send(component, *args)
    elsif (klass = symbol_map[component])
      klass.new(component, model, @session, self)
    else
      self.class::DEFAULT_CLASS.new(component, model, @session, self)
    end
  elsif component.is_a? String
    val = @lookandfeel.lookup(component) { component.to_s }
    val.gsub(@@nl2br_ptrn, "<br>")
  end
rescue => exc
  exc.backtrace.push(sprintf("%s::COMPONENTS[%s] in create(%s)",
    self.class, components.key(component).inspect, component))
  raise exc
end
init() click to toggle source
Calls superclass method HtmlGrid::Component#init
# File lib/htmlgrid/composite.rb, line 69
def init
  super
  setup_grid
  compose
end

Private Instance Methods

components() click to toggle source
# File lib/htmlgrid/composite.rb, line 102
def components
  @components ||= self.class::COMPONENTS.dup
end
css_id_map() click to toggle source
# File lib/htmlgrid/composite.rb, line 106
def css_id_map
  @css_id_map ||= self.class::CSS_ID_MAP.dup
end
css_map() click to toggle source
# File lib/htmlgrid/composite.rb, line 110
def css_map
  @css_map ||= self.class::CSS_MAP.dup
end
css_style_map() click to toggle source
# File lib/htmlgrid/composite.rb, line 114
def css_style_map
  @css_style_map ||= self.class::CSS_STYLE_MAP.dup
end
labels?() click to toggle source
# File lib/htmlgrid/composite.rb, line 118
def labels?
  self.class::LABELS
end
lookandfeel_map() click to toggle source
# File lib/htmlgrid/composite.rb, line 122
def lookandfeel_map
  @lookandfeel_map ||= self.class::LOOKANDFEEL_MAP.dup
end
symbol_map() click to toggle source
# File lib/htmlgrid/composite.rb, line 126
def symbol_map
  @symbol_map ||= self.class::SYMBOL_MAP.dup
end