Sha256: 2d9fab7cee1387b47a0ef32485fed2d63339dc45bcfe4e77a5ea9d85ecd0046a

Contents?: true

Size: 1.99 KB

Versions: 22

Compression:

Stored size: 1.99 KB

Contents

module Vedeu

  module DSL

    # Provides the mechanism to create menus within client applications and use
    # events to drive them.
    #
    # @api public
    class Menu

      include Vedeu::DSL

      # Return a new instance of DSL::Menu.
      #
      # @param model [Vedeu::Menu]
      # @param client [Object]
      # @return [Vedeu::DSL::Menu]
      def initialize(model, client = nil)
        @model  = model
        @client = client
      end

      # Add an individual item to the menu.
      #
      # @param element [Object] An object you wish to add to the collection.
      #
      # @example
      #   menu 'my_menu' do
      #     item SomeClass.new
      #     item SomeClass.new
      #
      # @return [Array]
      def item(element)
        model.collection << element
      end

      # Define the items for the menu. Most powerful when used with one of your
      # model classes.
      #
      # In the 'my_playlist' example below, your `Track` model may return a
      # collection of tracks to populate the menu.
      #
      # @param collection [Array<Object>] A collection of objects which make up
      #   the menu items.
      #
      # @example
      #   menu 'my_menu' do
      #     items [:item_1, :item_2, :item_3]
      #   end
      #
      #   menu 'my_playlist' do
      #     items Track.all_my_favourites
      #   end
      #
      # @return [Array]
      def items(collection = [])
        model.collection = collection
      end

      # The name of the menu. Used to reference the menu throughout your
      # application's execution lifetime.
      #
      # @param value [String]
      #
      # @example
      #   menu do
      #     name 'my_menu'
      #     ...
      #
      # @return [String]
      def name(value)
        model.name = value
      end

      protected

      # @!attribute [r] client
      # @return [Object]
      attr_reader :client

      # @!attribute [r] model
      # @return [Vedeu::Menu]
      attr_reader :model

    end # Menu

  end # DSL

end # Vedeu

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
vedeu-0.4.40 lib/vedeu/dsl/menu.rb
vedeu-0.4.39 lib/vedeu/dsl/menu.rb
vedeu-0.4.38 lib/vedeu/dsl/menu.rb
vedeu-0.4.37 lib/vedeu/dsl/menu.rb
vedeu-0.4.36 lib/vedeu/dsl/menu.rb
vedeu-0.4.35 lib/vedeu/dsl/menu.rb
vedeu-0.4.34 lib/vedeu/dsl/menu.rb
vedeu-0.4.33 lib/vedeu/dsl/menu.rb
vedeu-0.4.32 lib/vedeu/dsl/menu.rb
vedeu-0.4.31 lib/vedeu/dsl/menu.rb
vedeu-0.4.30 lib/vedeu/dsl/menu.rb
vedeu-0.4.29 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.28 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.27 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.26 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.25 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.24 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.23 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.22 lib/vedeu/dsl/components/menu.rb
vedeu-0.4.21 lib/vedeu/dsl/components/menu.rb