Class: Glimmer::SWT::ColorProxy
- Inherits:
-
Object
- Object
- Glimmer::SWT::ColorProxy
- Defined in:
- lib/glimmer/swt/color_proxy.rb
Overview
Proxy for org.eclipse.swt.graphics.Color
Invoking ‘#swt_color` returns the SWT Color object wrapped by this proxy
Follows the Proxy Design Pattern
Instance Method Summary collapse
-
#initialize(*args) ⇒ ColorProxy
constructor
Initializes a proxy for an SWT Color object.
- #method_missing(method, *args, &block) ⇒ Object
- #respond_to?(method, *args, &block) ⇒ Boolean
- #swt_color ⇒ Object
Constructor Details
#initialize(*args) ⇒ ColorProxy
Initializes a proxy for an SWT Color object
Takes a standard color single argument, rgba 3 args, or rgba 4 args
A standard color is a string/symbol representing one of the SWT.COLOR_*** constants like SWT.COLOR_RED, but in underscored string format (e.g :color_red). Glimmer can also accept standard color names without the color_ prefix, and it will automatically figure out the SWT.COLOR_*** constant (e.g. :red)
rgb is 3 arguments representing Red, Green, Blue numeric values
rgba is 4 arguments representing Red, Green, Blue, and Alpha numeric values
50 51 52 |
# File 'lib/glimmer/swt/color_proxy.rb', line 50 def initialize(*args) @args = args end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
73 74 75 76 77 78 |
# File 'lib/glimmer/swt/color_proxy.rb', line 73 def method_missing(method, *args, &block) swt_color.send(method, *args, &block) rescue => e Glimmer::Config.logger.debug {"Neither ColorProxy nor #{swt_color.class.name} can handle the method ##{method}"} super end |
Instance Method Details
#respond_to?(method, *args, &block) ⇒ Boolean
80 81 82 |
# File 'lib/glimmer/swt/color_proxy.rb', line 80 def respond_to?(method, *args, &block) super || swt_color.respond_to?(method, *args, &block) end |
#swt_color ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/glimmer/swt/color_proxy.rb', line 54 def swt_color unless @swt_color case @args.size when 1 if @args.first.is_a?(String) || @args.first.is_a?(Symbol) standard_color = @args.first standard_color = "color_#{standard_color}".to_sym unless standard_color.to_s.downcase.include?('color_') @swt_color = DisplayProxy.instance.swt_display.getSystemColor(SWTProxy[standard_color]) else @swt_color = @args.first end when 3..4 red, green, blue, alpha = @args @swt_color = Color.new(DisplayProxy.instance.swt_display, *[red, green, blue, alpha].compact) end end @swt_color end |