Class: Glimmer::SWT::ShapeListenerProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/glimmer/swt/shape_listener_proxy.rb

Overview

Proxy for widget listeners

Follows the Proxy Design Pattern

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(shape: nil, drawable: nil, shape_listener_block: nil, observation_request: nil, widget_listener_proxy: nil) ⇒ ShapeListenerProxy

Returns a new instance of ShapeListenerProxy.



31
32
33
34
35
36
37
# File 'lib/glimmer/swt/shape_listener_proxy.rb', line 31

def initialize(shape: nil, drawable: nil, shape_listener_block: nil, observation_request: nil, widget_listener_proxy: nil)
  @shape = shape
  @drawable = drawable
  @shape_listener_block = shape_listener_block
  @observation_request = observation_request
  @widget_listener_proxy = widget_listener_proxy
end

Instance Attribute Details

#observation_requestObject (readonly)

Returns the value of attribute observation_request.



29
30
31
# File 'lib/glimmer/swt/shape_listener_proxy.rb', line 29

def observation_request
  @observation_request
end

#shapeObject (readonly)

Returns the value of attribute shape.



29
30
31
# File 'lib/glimmer/swt/shape_listener_proxy.rb', line 29

def shape
  @shape
end

#widget_listener_proxyObject (readonly)

Returns the value of attribute widget_listener_proxy.



29
30
31
# File 'lib/glimmer/swt/shape_listener_proxy.rb', line 29

def widget_listener_proxy
  @widget_listener_proxy
end

Instance Method Details

#deregisterObject Also known as: unregister

Deregisters shape listener



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/glimmer/swt/shape_listener_proxy.rb', line 40

def deregister
  if @observation_request == 'on_drop'
    @widget_listener_proxy.deregister
    @shape.widget_listener_proxies.delete(@widget_listener_proxy)
    @drawable.drop_shapes.delete(shape)
  elsif @observation_request == 'on_shape_disposed'
    @shape.remove_shape_disposed_listener(@shape_listener_block)
  else
    @widget_listener_proxy.deregister
    @shape.widget_listener_proxies.delete(@widget_listener_proxy)
  end
end