class Glimmer::SWT::MenuItemProxy

Proxy for org.eclipse.swt.widgets.MenuItem

Follows the Proxy Design Pattern since it's a proxy for an HTML based menu Follows the Adapter Design Pattern since it's adapting a Glimmer DSL for SWT widget

Constants

STYLE

Attributes

accelerator[RW]

Public Class Methods

new(parent, args) click to toggle source
Calls superclass method
# File lib/glimmer/swt/menu_item_proxy.rb, line 46
def initialize(parent, args)
  args.push(:push) if args.empty?
  super(parent, args)
  # TODO do not add the following event till post_add_content to avoid adding if already one on_widget_selected event existed
  on_widget_selected {
    # No Op, just trigger selection
  }
end

Public Instance Methods

cascade?() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 59
def cascade?
  args.include?(:cascade)
end
check?() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 71
def check?
  args.include?(:check)
end
div_content() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 110
def div_content
  div_attributes = {}
  icon_suffix = check? ? 'check' : 'bullet'
  div(div_attributes) {
    unless separator? # empty content automatically gets a separator style in jQuery-UI
      span(class: "menu-item-selection #{"ui-icon ui-icon-#{icon_suffix}" if selection}") {}
      span(class: 'ui-menu-icon ui-icon ui-icon-caret-1-e') {} if cascade? && !parent.bar?
      span(class: 'menu-item-text') {
        @text
      }
      ''
    end
  }
end
dom() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 164
def dom
  # TODO support rendering image
  @dom ||= html {
    li(id: id, class: "#{name} #{'disabled' unless enabled}") {
      div_content
    }
  }.to_s
end
element() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 160
def element
  'li'
end
enabled=(value) click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 104
def enabled=(value)
  @enabled = value
  dom_element.toggle_class('disabled', !@enabled)
  @enabled
end
observation_request_to_event_mapping() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 135
def observation_request_to_event_mapping
  {
    'on_widget_selected' => {
      event: 'mouseup',
      event_handler: -> (event_listener) {
        -> (event) {
          if enabled && (push? || radio? || check?)
            if check?
              self.toggle_selection!
            elsif radio? && !selection
              parent.children.detect(&:selection)&.selection = false
              self.selection = true
            end
            if !root_menu.bar?
              remove_event_listener_proxies
              root_menu.close
            end
            event_listener.call(event)
          end
        }
      },
    },
  }
end
post_initialize_child(child) click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 55
def post_initialize_child(child)
  @children << child
end
push?() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 63
def push?
  args.include?(:push)
end
radio?() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 67
def radio?
  args.include?(:radio)
end
root_menu() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 125
def root_menu
  the_menu = parent
  the_menu = the_menu.parent_menu until the_menu.root_menu?
  the_menu
end
selection() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 89
def selection
  @selection
end
selection=(value) click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 93
def selection=(value)
  @selection = value
  icon_suffix = check? ? 'check' : 'bullet'
  dom_element.find('.menu-item-selection').toggle_class("ui-icon ui-icon-#{icon_suffix}", @selection)
  @selection
end
separator?() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 75
def separator?
  args.include?(:separator)
end
skip_content_on_render_blocks?() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 131
def skip_content_on_render_blocks?
  true
end
text() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 79
def text
  @text
end
text=(value) click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 83
def text=(value)
  @text = value
  dom_element.find('.menu-item-text').html(@text)
  @text
end
toggle_selection!() click to toggle source
# File lib/glimmer/swt/menu_item_proxy.rb, line 100
def toggle_selection!
  self.selection = !selection
end