class Glimmer::SWT::ShellProxy
Constants
- HEIGHT_MIN
- STYLE
- WIDTH_MIN
Attributes
minimum_size[R]
TODO consider renaming to ShellProxy
to match SWT
API
Public Class Methods
new(args)
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 71 def initialize(args) # TODO set parent @args = args @children = [] render # TODO attach to specific element @layout = FillLayoutProxy.new(self, []) @layout.margin_width = 0 @layout.margin_height = 0 self.minimum_size = Point.new(WIDTH_MIN, HEIGHT_MIN) DisplayProxy.instance.shells << self end
Public Instance Methods
close()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 199 def close DisplayProxy.instance.shells.delete(self) dom_element.remove @open = false listeners_for('swt_close').each {|listener| listener.call(Event.new(widget: self))} end
dom()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 154 def dom i = 0 body_id = id body_class = ([name, 'hide'] + css_classes.to_a).join(' ') @dom ||= html { div(id: body_id, class: body_class) { # TODO consider supporting the idea of dynamic CSS building on close of shell that adds only as much CSS as needed for widgets that were mentioned style(class: 'common-style') { style_dom_css } [LayoutProxy, WidgetProxy].map(&:descendants).reduce(:+).each do |style_class| if style_class.constants.include?('STYLE') style(class: "#{style_class.name.split(':').last.underscore.gsub('_', '-').sub(/-proxy$/, '')}-style") { style_class::STYLE } end end div(class: 'dialog-overlay hide') { } } }.to_s end
element()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 87 def element 'div' end
favicon_dom_element()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 121 def favicon_dom_element Document.find('link[rel=icon]') end
handle_observation_request(keyword, original_event_listener)
click to toggle source
Calls superclass method
# File lib/glimmer/swt/shell_proxy.rb, line 132 def handle_observation_request(keyword, original_event_listener) case keyword when 'on_swt_show', 'on_swt_close', 'on_shell_closed' keyword = 'on_swt_close' if keyword == 'on_shell_closed' listeners_for(keyword.sub(/^on_/, '')) << original_event_listener.to_proc else super(keyword, original_event_listener) end end
hide()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 194 def hide dom_element.add_class('hide') @open = false end
image()
click to toggle source
favicon
# File lib/glimmer/swt/shell_proxy.rb, line 104 def image @image end
image=(value)
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 108 def image=(value) @image = value # TODO consider moving this code to favicon_dom_element if favicon_dom_element.empty? favicon_element = Element.new(:link) favicon_element.attr('rel', 'icon') Document.find('head').append(favicon_element) else favicon_element = favicon_dom_element end favicon_element.attr('href', image) end
minimum_size=(width_or_minimum_size, height = nil)
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 125 def minimum_size=(width_or_minimum_size, height = nil) @minimum_size = height.nil? ? width_or_minimum_size : Point.new(width_or_minimum_size, height) return if @minimum_size.nil? dom_element.css('min-width', "#{@minimum_size.x}px") dom_element.css('min-height', "#{@minimum_size.y}px") end
open(async: true)
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 177 def open(async: true) work = lambda do unless @open DisplayProxy.instance.shells.select(&:open?).reject {|s| s == self}.map(&:hide) dom_element.remove_class('hide') @open = true listeners_for('swt_show').each {|listener| listener.call(Event.new(widget: self))} end end if async DisplayProxy.instance.async_exec(&work) else work.call end end
Also aliased as: show
open?()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 206 def open? @open end
parent_path()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 91 def parent_path 'body' end
post_add_content()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 83 def post_add_content `$( document ).tooltip()` end
style_dom_css()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 142 def style_dom_css <<~CSS .hide { display: none !important; } .selected { background: rgb(80, 116, 211); color: white; } CSS end
text()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 95 def text $document.title end
text=(value)
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 99 def text=(value) Document.title = value end
visible()
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 210 def visible @open end
Also aliased as: visible?
visible=(value)
click to toggle source
# File lib/glimmer/swt/shell_proxy.rb, line 215 def visible=(value) if value show(async: false) else hide end end