lib/glimmer/swt/cursor_proxy.rb in glimmer-dsl-swt-4.18.4.3 vs lib/glimmer/swt/cursor_proxy.rb in glimmer-dsl-swt-4.18.4.4

- old
+ new

@@ -1,66 +1,66 @@ -# Copyright (c) 2007-2021 Andy Maleh -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -require 'glimmer/error' -require 'glimmer/swt/swt_proxy' -require 'glimmer/swt/display_proxy' - -module Glimmer - module SWT - # Proxy for org.eclipse.swt.graphics.Cursor - # - # Invoking `#swt_cursor` returns the SWT Cursor object wrapped by this proxy - # - # Follows the Proxy Design Pattern - class CursorProxy - CURSOR_STYLES = org.eclipse.swt.SWT.constants.select {|c| c.to_s.downcase.start_with?('cursor_')}.map {|c| c.to_s.downcase.sub('cursor_', '').to_sym} - ERROR_INVALID_CURSOR_STYLE = " is an invalid cursor style! Valid values are #{CURSOR_STYLES.map(&:to_s).join(", ")}" - - include_package 'org.eclipse.swt.graphics' - - attr_reader :swt_cursor, :cursor_style - - # Builds a new CursorProxy from passed in cursor SWT style (e.g. :appstarting, :hand, or :help) - # - # Cursor SWT styles are those that begin with "CURSOR_" prefix - # - # They are expected to be passed in in short form without the prefix (but would work with the prefix too) - def initialize(cursor_style) - @cursor_style = cursor_style - @cursor_style = SWTProxy.reverse_lookup(@cursor_style).detect { |symbol| symbol.to_s.downcase.start_with?('cursor_') } if cursor_style.is_a?(Integer) - @cursor_style = @cursor_style.to_s.downcase - @cursor_style = @cursor_style.sub(/^cursor\_/, '') if @cursor_style.start_with?('cursor_') - detect_invalid_cursor_style - @swt_cursor = DisplayProxy.instance.swt_display.get_system_cursor(SWTProxy[swt_style]) - end - - def swt_style - @swt_style ||= @cursor_style.upcase.start_with?('CURSOR_') ? @cursor_style : "CURSOR_#{@cursor_style}" - end - - private - - def detect_invalid_cursor_style - raise Error, cursor_style.to_s + ERROR_INVALID_CURSOR_STYLE unless CURSOR_STYLES.include?(cursor_style.to_s.downcase.to_sym) - end - end - end -end +# Copyright (c) 2007-2021 Andy Maleh +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +require 'glimmer/error' +require 'glimmer/swt/swt_proxy' +require 'glimmer/swt/display_proxy' + +module Glimmer + module SWT + # Proxy for org.eclipse.swt.graphics.Cursor + # + # Invoking `#swt_cursor` returns the SWT Cursor object wrapped by this proxy + # + # Follows the Proxy Design Pattern + class CursorProxy + CURSOR_STYLES = org.eclipse.swt.SWT.constants.select {|c| c.to_s.downcase.start_with?('cursor_')}.map {|c| c.to_s.downcase.sub('cursor_', '').to_sym} + ERROR_INVALID_CURSOR_STYLE = " is an invalid cursor style! Valid values are #{CURSOR_STYLES.map(&:to_s).join(", ")}" + + include_package 'org.eclipse.swt.graphics' + + attr_reader :swt_cursor, :cursor_style + + # Builds a new CursorProxy from passed in cursor SWT style (e.g. :appstarting, :hand, or :help) + # + # Cursor SWT styles are those that begin with "CURSOR_" prefix + # + # They are expected to be passed in in short form without the prefix (but would work with the prefix too) + def initialize(cursor_style) + @cursor_style = cursor_style + @cursor_style = SWTProxy.reverse_lookup(@cursor_style).detect { |symbol| symbol.to_s.downcase.start_with?('cursor_') } if cursor_style.is_a?(Integer) + @cursor_style = @cursor_style.to_s.downcase + @cursor_style = @cursor_style.sub(/^cursor\_/, '') if @cursor_style.start_with?('cursor_') + detect_invalid_cursor_style + @swt_cursor = DisplayProxy.instance.swt_display.get_system_cursor(SWTProxy[swt_style]) + end + + def swt_style + @swt_style ||= @cursor_style.upcase.start_with?('CURSOR_') ? @cursor_style : "CURSOR_#{@cursor_style}" + end + + private + + def detect_invalid_cursor_style + raise Error, cursor_style.to_s + ERROR_INVALID_CURSOR_STYLE unless CURSOR_STYLES.include?(cursor_style.to_s.downcase.to_sym) + end + end + end +end