Sha256: 4e7c3126fe1afbb7cde55515233400f0c97a814c41028dd7e674d4398b989c5c

Contents?: true

Size: 1.17 KB

Versions: 37

Compression:

Stored size: 1.17 KB

Contents

module Glimmer
  module SWT
    # Proxy for widget listeners
    #
    # Follows the Proxy Design Pattern
    class WidgetListenerProxy

      attr_reader :swt_widget, :swt_listener, :widget_add_listener_method, :swt_listener_class, :swt_listener_method, :event_type, :swt_constant

      def initialize(swt_widget:, swt_listener:, widget_add_listener_method: nil, swt_listener_class: nil, swt_listener_method: nil, event_type: nil, swt_constant: nil)
        @swt_widget = swt_widget
        @swt_listener = swt_listener
        @widget_add_listener_method = widget_add_listener_method
        @swt_listener_class = swt_listener_class
        @swt_listener_method = swt_listener_method
        @event_type = event_type
        @swt_constant = swt_constant
      end
      
      def widget_remove_listener_method
        @widget_add_listener_method.sub('add', 'remove')
      end      
      
      def unregister
        # TODO consider renaming to deregister (and in Observer too)
        if @event_type
          @swt_widget.removeListener(@event_type, @swt_listener)
        else
          @swt_widget.send(widget_remove_listener_method, @swt_listener)
        end
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 2 rubygems

Version Path
glimmer-dsl-swt-0.6.9 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.8 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.7 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.6 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.5 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.4 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.3 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.2 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.1 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.6.0 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.6 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.5 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.4 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.3 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.2 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.1 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.5.0 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.4.1 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.4.0 lib/glimmer/swt/widget_listener_proxy.rb
glimmer-dsl-swt-0.3.1 lib/glimmer/swt/widget_listener_proxy.rb