class Glimmer::SWT::SpinnerProxy

Attributes

digits[R]
increment[R]
maximum[R]
minimum[R]
page_increment[R]

Public Class Methods

new(parent, args, block) click to toggle source
Calls superclass method
# File lib/glimmer/swt/spinner_proxy.rb, line 29
def initialize(parent, args, block)
  super(parent, args, block)
  @increment = 1
  @digits = 0
  dom_element.spinner
end

Public Instance Methods

digits=(value) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 90
def digits=(value)
  @digits = value
  dom_element.spinner('option', 'numberFormat', "n") if @digits.to_i > 0
end
divider() click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 86
def divider
  ('1' + '0'*@digits.to_i).to_f
end
dom() click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 159
def dom
  text_text = @text
  text_id = id
  text_style = css
  text_class = name
  options = {type: 'text', id: text_id, style: text_style, class: text_class, value: text_text, style: 'min-width: 27px;'}
  options = options.merge('disabled': 'disabled') unless @enabled
  @dom ||= html {
    input(options)
  }.to_s
end
element() click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 95
def element
  'input'
end
increment=(value) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 76
def increment=(value)
  @increment = value.to_f / divider
  dom_element.spinner('option', 'step', @increment)
end
maximum=(value) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 71
def maximum=(value)
  @maximum = value.to_f / divider
  dom_element.spinner('option', 'max', @maximum)
end
minimum=(value) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 66
def minimum=(value)
  @minimum = value.to_f / divider
  dom_element.spinner('option', 'min', @minimum)
end
observation_request_to_event_mapping() click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 99
def observation_request_to_event_mapping
  {
    'on_widget_selected' => [
      {
        event: 'change',
        event_handler: -> (event_listener) {
          -> (event) {
            self.selection = event.target.value
            event_listener.call(event)
          }
        }
      },
      {
        event: 'keyup',
        event_handler: -> (event_listener) {
          -> (event) {
            @keyup = true # ensures spinstop event does not set selection if caused by key up entry
          }
        }
      },
      {
        event: 'spin',
        event_handler: -> (event_listener) {
          -> (event) {
            @keyup = false
          }
        }
      },
      {
        event: 'spinstop',
        event_handler: -> (event_listener) {
          -> (event) {
            self.set_selection(event.target.value, format_digits: !@keyup)
            @keyup = false
            event_listener.call(event)
          }
        }
      },
    ],
    'on_modify_text' => {
      event: 'keyup',
      event_handler: -> (event_listener) {
        -> (event) {
          # TODO consider unifying this event handler with on_key_pressed by relying on its result instead of hooking another keyup event
          if @last_key_pressed_event.nil? || @last_key_pressed_event.doit
            self.text = event.target.value
            event_listener.call(event)
          else
            # TODO Fix doit false, it's not stopping input
            event.prevent
            event.prevent_default
            event.stop_propagation
            event.stop_immediate_propagation
          end
        }
      }
    },
  }
end
page_increment=(value) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 81
def page_increment=(value)
  @page_increment = value.to_f / (@increment * divider)
  dom_element.spinner('option', 'page', @page_increment)
end
selection() click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 54
def selection
  @selection && @selection * divider
end
selection=(value, format_digits: true) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 36
def selection=(value, format_digits: true)
  old_value = @selection.to_f
  if @selection.nil?
    @selection = value.to_f / divider
  else
    @selection = value.to_f
  end
  if value.to_i != old_value.to_i
    if format_digits && @digits.to_i > 0
      new_value = "%0.#{@digits.to_i}f" % @selection
      dom_element.value = new_value
    else
      dom_element.value = @selection if @selection != 0
    end
  end
end
Also aliased as: set_selection
set_selection(value, format_digits: true)
Alias for: selection=
text() click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 62
def text
  self.selection.to_s
end
text=(value) click to toggle source
# File lib/glimmer/swt/spinner_proxy.rb, line 58
def text=(value)
  self.selection = value.to_f
end