Class: Glimmer::SWT::MenuProxy
- Inherits:
-
WidgetProxy
- Object
- WidgetProxy
- Glimmer::SWT::MenuProxy
- Defined in:
- lib/glimmer/swt/menu_proxy.rb
Overview
Proxy for org.eclipse.swt.widgets.Menu
Functions differently from other widget proxies.
Glimmer automatically detects if this is a drop down menu or pop up menu from its parent if no SWT style is passed in.
There are 3 possibilities:
-
SWT :bar style is passed in: Menu Bar
-
Parent is ShellProxy: Pop Up Menu (having style :pop_up)
-
Parent is another Menu: Drop Down Menu (having style :drop_down)
In order to get the SWT Menu object, one must call ‘#swt_widget`.
In the case of a Drop Down menu, this automatically creates an SWT MenuItem object with style :cascade
In order to retrieve the menu item widget proxy, one must call ‘#menu_item_proxy`
Follows the Proxy Design Pattern
Constant Summary
Constants inherited from WidgetProxy
WidgetProxy::DEFAULT_INITIALIZERS, WidgetProxy::DEFAULT_STYLES, WidgetProxy::KEYWORD_ALIASES
Instance Attribute Summary collapse
-
#menu_item_proxy ⇒ Object
readonly
Returns the value of attribute menu_item_proxy.
-
#menu_parent ⇒ Object
readonly
Returns the value of attribute menu_parent.
-
#swt_menu_item ⇒ Object
readonly
Returns the value of attribute swt_menu_item.
Attributes inherited from WidgetProxy
#drag_source_proxy, #drag_source_style, #drag_source_transfer, #drop_target_proxy, #drop_target_transfer, #finished_add_content, #parent_proxy, #swt_widget
Attributes included from Custom::Drawable
#image_double_buffered, #requires_shape_disposal
Instance Method Summary collapse
- #can_handle_observation_request?(observation_request, super_only: false) ⇒ Boolean
- #get_attribute(attribute_name) ⇒ Object
- #handle_observation_request(observation_request, &block) ⇒ Object
- #has_attribute?(attribute_name, *args) ⇒ Boolean
-
#initialize(parent, args) ⇒ MenuProxy
constructor
A new instance of MenuProxy.
- #set_attribute(attribute_name, *args) ⇒ Object
Methods inherited from WidgetProxy
#add_observer, #async_exec, #auto_exec, #can_add_observer?, #can_handle_drag_observation_request?, #can_handle_drop_observation_request?, #content, create, #dispose, #disposed?, #ensure_drag_source_proxy, #ensure_drop_target_proxy, #extract_args, #finish_add_content!, flyweight_swt_widget_classes, #has_style?, #height, #method_missing, #pack_same_size, #post_add_content, #post_initialize_child, #print, #proxy_source_object, #remove_observer, #respond_to?, #shell_proxy, swt_widget_class_for, swt_widget_class_manual_entries, #sync_exec, #timer_exec, underscored_widget_name, widget_exists?, #widget_property_listener_installers, widget_proxy_class, #width, #x, #y
Methods included from Custom::Drawable
#add_shape, #clear_shapes, #deregister_shape_painting, #drop_shapes, #expanded_shapes, #image_buffered_shapes, #paint_pixel_by_pixel, #setup_shape_painting, #shape_at_location, #shapes, #swt_drawable
Methods included from ProxyProperties
#has_attribute_getter?, #has_attribute_setter?, #method_missing, #proxy_source_object, #respond_to?
Methods included from Properties
attribute_getter, #attribute_getter, attribute_setter, #attribute_setter, normalized_attribute, #normalized_attribute, ruby_attribute_getter, #ruby_attribute_setter, ruby_attribute_setter
Methods included from Packages
Constructor Details
#initialize(parent, args) ⇒ MenuProxy
Returns a new instance of MenuProxy.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 51 def initialize(parent, args) index = args.delete(args.last) if args.last.is_a?(Numeric) styles = args.map(&:to_sym) if !styles.include?(:bar) && !parent..is_a?(Menu) styles = styles.unshift(:pop_up) end = self.class.('menu') if parent..is_a?(Menu) @menu_item_proxy = SWT::WidgetProxy.new('menu_item', parent, [:cascade] + [index].compact) @swt_menu_item = @menu_item_proxy. @swt_widget = .new(@menu_item_proxy.) @swt_menu_item.setMenu() elsif parent..is_a?(Shell) @swt_widget = .new(parent., style('menu', styles)) elsif parent..is_a?(TrayItem) @swt_widget = .new(parent.shell_proxy., style('menu', styles)) parent. = self else @swt_widget = .new(parent.) end if styles.include?(:bar) DisplayProxy.instance.auto_exec { parent..setMenuBar() } elsif styles.include?(:pop_up) if parent..is_a?(TrayItem) parent. { self.visible = true } else DisplayProxy.instance.auto_exec { parent..setMenu() unless parent..is_a?(TrayItem) } end end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Glimmer::SWT::WidgetProxy
Instance Attribute Details
#menu_item_proxy ⇒ Object (readonly)
Returns the value of attribute menu_item_proxy.
49 50 51 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 49 def @menu_item_proxy end |
#menu_parent ⇒ Object (readonly)
Returns the value of attribute menu_parent.
49 50 51 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 49 def @menu_parent end |
#swt_menu_item ⇒ Object (readonly)
Returns the value of attribute swt_menu_item.
49 50 51 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 49 def @swt_menu_item end |
Instance Method Details
#can_handle_observation_request?(observation_request, super_only: false) ⇒ Boolean
118 119 120 121 122 123 124 125 126 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 118 def can_handle_observation_request?(observation_request, super_only: false) observation_request = observation_request.to_s super_result = super(observation_request) if observation_request.start_with?('on_') && !super_result && !super_only return .can_handle_observation_request?(observation_request) else super_result end end |
#get_attribute(attribute_name) ⇒ Object
108 109 110 111 112 113 114 115 116 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 108 def get_attribute(attribute_name) if normalized_attribute(attribute_name) == 'text' @swt_menu_item.getText elsif normalized_attribute(attribute_name) == 'enabled' @swt_menu_item.getEnabled else super(attribute_name) end end |
#handle_observation_request(observation_request, &block) ⇒ Object
128 129 130 131 132 133 134 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 128 def handle_observation_request(observation_request, &block) if can_handle_observation_request?(observation_request, super_only: true) super else .handle_observation_request(observation_request, &block) end end |
#has_attribute?(attribute_name, *args) ⇒ Boolean
88 89 90 91 92 93 94 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 88 def has_attribute?(attribute_name, *args) if ['text', 'enabled'].include?(attribute_name.to_s) true else super(attribute_name, *args) end end |
#set_attribute(attribute_name, *args) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/glimmer/swt/menu_proxy.rb', line 96 def set_attribute(attribute_name, *args) if normalized_attribute(attribute_name) == 'text' text_value = args[0] @swt_menu_item.setText text_value elsif normalized_attribute(attribute_name) == 'enabled' value = args[0] @swt_menu_item.setEnabled value else super(attribute_name, *args) end end |