Class: Glimmer::SWT::DisplayProxy

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

Overview

Proxy for org.eclipse.swt.widgets.Display

Maintains a singleton instance since SWT only supports a single active display at a time.

Supports SWT Display’s very useful asyncExec and syncExec methods to support proper multi-threaded manipulation of SWT UI objects

Invoking ‘#swt_display` returns the SWT Display object wrapped by this proxy

Follows the Proxy Design Pattern

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ DisplayProxy

Returns a new instance of DisplayProxy.



30
31
32
# File 'lib/glimmer/swt/display_proxy.rb', line 30

def initialize(*args)
  @swt_display = Display.new(*args)
end

Instance Attribute Details

#swt_displayObject (readonly)

SWT Display object wrapped



28
29
30
# File 'lib/glimmer/swt/display_proxy.rb', line 28

def swt_display
  @swt_display
end

Class Method Details

.instance(*args) ⇒ Object

Returns singleton instance



19
20
21
22
23
24
# File 'lib/glimmer/swt/display_proxy.rb', line 19

def instance(*args)
  if @instance.nil? || @instance.swt_display.isDisposed
    @instance = new(*args)
  end
  @instance
end

Instance Method Details

#async_exec(&block) ⇒ Object

Executes code block asynchronously with respect to SWT UI thread



39
40
41
# File 'lib/glimmer/swt/display_proxy.rb', line 39

def async_exec(&block)
  @swt_display.asyncExec(&block)
end

#disposeObject



34
35
36
# File 'lib/glimmer/swt/display_proxy.rb', line 34

def dispose
  @swt_display.dispose
end

#sync_exec(&block) ⇒ Object

Executes code block synchronously with respect to SWT UI thread



44
45
46
# File 'lib/glimmer/swt/display_proxy.rb', line 44

def sync_exec(&block)
  @swt_display.syncExec(&block)
end