Sha256: cbbb3f2b6fbb2db13953ea908fe0980419dc618d33a44b72b9a385d433f51704

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

class Shoes
  module Swt
    class SwtButton
      include Common::Clear
      include Common::Toggle
      include Common::UpdatePosition
      include ::Shoes::BackendDimensionsDelegations

      attr_reader :parent, :real, :dsl

      def initialize(dsl, parent, type)
        @dsl = dsl
        @parent = parent

        @type = type
        @real = ::Swt::Widgets::Button.new(@parent.real, @type)
        @real.addSelectionListener { eval_block @dsl.blk } if @dsl.blk

        yield(@real) if block_given?

        set_size
      end

      def eval_block blk
        blk.call @dsl
      end

      def focus
        @real.set_focus
      end

      def click &blk
        @real.addSelectionListener { eval_block blk }
      end

      def enabled(value)
        @real.enable_widget value
      end

      private
      def set_size
        @real.pack
        @dsl.element_width ||= @real.size.x
        @dsl.element_height ||= @real.size.y
        @real.setSize @dsl.element_width, @dsl.element_height
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoes-4.0.0.pre1 lib/shoes/swt/swt_button.rb