class Glimmer::SWT::Custom::RadioGroup

A custom widget rendering a group of radios generated via data-binding

Public Instance Methods

can_handle_observation_request?(observation_request) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 80
def can_handle_observation_request?(observation_request)
  radios.first&.can_handle_observation_request?(observation_request) || super(observation_request)
end
delegate_observation_request_to_radios(observation_request, &block) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 90
def delegate_observation_request_to_radios(observation_request, &block)
  if observation_request != 'on_widget_disposed'
    radios.count.times do |index|
    radio = radios[index]
    radio.handle_observation_request(observation_request, block) if radio.can_handle_observation_request?(observation_request)
    end
  end
end
handle_observation_request(observation_request, block) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 84
def handle_observation_request(observation_request, block)
  observation_requests << [observation_request, block]
  delegate_observation_request_to_radios(observation_request, &block)
  super
end
has_attribute?(attribute_name, *args) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 103
def has_attribute?(attribute_name, *args)
  @radios.to_a.map do |widget_proxy|
    return true if widget_proxy.has_attribute?(attribute_name, *args)
  end
  super
end
items() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 41
def items
  @items || []
end
items=(text_array) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 35
def items=(text_array)
  selection_value = selection
  @items = Array[*text_array]
  build_radios
end
observation_request_to_event_mapping() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 71
def observation_request_to_event_mapping
  # TODO method might not be needed
  {
    'on_widget_selected' => {
      event: 'change'
    },
  }
end
observation_requests() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 99
def observation_requests
  @observation_requests ||= Set.new
end
radios() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 67
def radios
  @radios ||= []
end
select(index)
Alias for: selection_index=
selection() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 53
def selection
  selection_value = radios[selection_index]&.text unless selection_index == -1
  selection_value.to_s
end
selection=(text) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 45
def selection=(text)
  radios.count.times do |index|
    radio = radios[index]
    item = items[index]
    radio.selection = item == text
  end
end
selection_index() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 63
def selection_index
  radios.index(radios.detect(&:selection)) || -1
end
selection_index=(index) click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 58
def selection_index=(index)
  self.selection=(items[index])
end
Also aliased as: select
set_attribute(attribute_name, *args) click to toggle source
Calls superclass method Glimmer::UI::CustomWidget#set_attribute
# File lib/glimmer/swt/custom/radio_group.rb, line 110
def set_attribute(attribute_name, *args)
  excluded_attributes = ['selection']
  unless excluded_attributes.include?(attribute_name.to_s)
    @radios.to_a.each do |widget_proxy|
      widget_proxy.set_attribute(attribute_name, *args) if widget_proxy.has_attribute?(attribute_name, *args)
    end
  end
  super
end

Private Instance Methods

build_radios() click to toggle source
# File lib/glimmer/swt/custom/radio_group.rb, line 122
def build_radios
  current_selection = selection
  @radios = []
  items.each do |item|
    body_root.content {
      radios << radio { |radio_proxy|
        text item
        on_widget_selected {
          self.selection = items[radios.index(radio_proxy)]
        }
      }
    }
  end
  observation_requests.to_a.each do |observation_request, block|
    delegate_observation_request_to_radios(observation_request, &block)
  end
  self.selection = current_selection
end