Sha256: c3cfb550aee061f7bd27c4987d5e6977285078f58ebb8f66a53b99c005a34372

Contents?: true

Size: 950 Bytes

Versions: 5

Compression:

Stored size: 950 Bytes

Contents

require 'omf-web/widget/abstract_widget'

module OMF::Web::Widget::Layout

  # Implements a layout which displays only one of the widget it contains
  # but provides theme specific means to switch between them.
  #
  class StackedLayout < OMF::Web::Widget::AbstractWidget
    attr_reader :active_index

    def initialize(opts)
      super opts
      widgets = opts[:widgets]
      @widgets = widgets.collect {|w| OMF::Web::Widget.create_widget(w) }
      @active_index = 0
      @active_widget = @widgets[0]
    end

    def content()
      OMF::Web::Theme.require 'stacked_renderer'
      OMF::Web::Theme::StackedRenderer.new(self, @widgets, @active_index, @opts)
    end


    def collect_data_sources(ds_set)
      #puts "ACTIVE>>> #{@active_widget.class}"
      @active_widget.collect_data_sources(ds_set)
      ds_set
    end

    def name
      @opts[:name] || @active_widget.name
    end

    def layout?
      return true
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
omf_web-1.2.9 lib/omf-web/widget/layout/stacked_layout.rb
omf_web-1.2.8 lib/omf-web/widget/layout/stacked_layout.rb
omf_web-1.2.7 lib/omf-web/widget/layout/stacked_layout.rb
omf_web-1.2.6 lib/omf-web/widget/layout/stacked_layout.rb
omf_web-1.2.5 lib/omf-web/widget/layout/stacked_layout.rb