class Glimmer::SWT::DialogProxy
Constants
- STYLE
Attributes
text[R]
.close {
color: #aaaaaa; float: right; font-weight: bold; margin: 5px;
} .close:hover, .close:focus {
color: #000; text-decoration: none; cursor: pointer;
}
Public Class Methods
new(parent, args, block)
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 63 def initialize(parent, args, block) i = 0 @parent = parent @parent = nil if parent.is_a?(LatestShellProxy) @parent ||= DisplayProxy.instance.shells.detect(&:open?) || ShellProxy.new([]) @args = args @block = block @children = Set.new @enabled = true DisplayProxy.instance.opened_dialogs.last&.suspend_event_handling DisplayProxy.instance.dialogs << self @parent.post_initialize_child(self) end
Public Instance Methods
close()
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 133 def close dom_element.dialog('destroy') dom_element.remove @open = false @init = false listeners_for('swt_close').each {|listener| listener.call(Event.new(widget: self))} Element['.dialog-overlay'].add_class('hide') unless DisplayProxy.instance.dialogs.any?(&:open?) parent.children.delete(self) shell.close if shell.children.empty? DisplayProxy.instance.dialogs.delete(self) DisplayProxy.instance.opened_dialogs.last&.resume_event_handling end
content(&block)
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 147 def content(&block) Glimmer::DSL::Engine.add_content(self, Glimmer::DSL::Opal::DialogExpression.new, 'dialog', &block) end
dom()
click to toggle source
def selector
super + ' .close'
end
def listener_path
widget_path + ' .close'
end
def observation_request_to_event_mapping
{ 'on_widget_selected' => { event: 'click' }, }
end
# File lib/glimmer/swt/dialog_proxy.rb, line 185 def dom @dom ||= html { div(id: id, class: "#{name} modal hide", title: text) { } }.to_s end
hide()
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 126 def hide @hiding = true dom_element.dialog('close') @open = false Element['.dialog-overlay'].add_class('hide') unless DisplayProxy.instance.dialogs.any?(&:open?) end
open(async: true)
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 90 def open(async: true) owned_proc = Glimmer::Util::ProcTracker.new(owner: self, invoked_from: :open) { shell.open(async: false) unless shell.open? unless @init dom_element.remove_class('hide') dom_element.dialog('auto_open' => false) @init = true dom_element.dialog('option', 'appendTo', parent.path) dom_element.dialog('option', 'modal', true) # NOTE: Not Working! Doing manually below by relying on overlay in ShellProxy. unless DisplayProxy.instance.dialogs.any?(&:open?) # only add for first dialog open Element['.dialog-overlay'].remove_class('hide') end dom_element.dialog('option', 'closeOnEscape', true) dom_element.dialog('option', 'draggable', true) dom_element.dialog('option', 'width', 'auto') dom_element.dialog('option', 'minHeight', 'none') dom_element.on('dialogclose') do unless @hiding close else @hiding = false end end else dom_element.dialog('open') end @open = true listeners_for('swt_show').each {|listener| listener.call(Event.new(widget: self))} } if async DisplayProxy.instance.async_exec(owned_proc) else owned_proc.call end end
open?()
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 86 def open? @open end
path()
click to toggle source
Calls superclass method
# File lib/glimmer/swt/dialog_proxy.rb, line 151 def path if @init # it gets moved once initialized by jQuery UI, so only ID is reliable then "##{id}" else super end end
resume_event_handling()
click to toggle source
Calls superclass method
# File lib/glimmer/swt/dialog_proxy.rb, line 164 def resume_event_handling super Element["[aria-describedby=#{id}]"].css('z-index', 100) end
suspend_event_handling()
click to toggle source
Calls superclass method
# File lib/glimmer/swt/dialog_proxy.rb, line 159 def suspend_event_handling super Element["[aria-describedby=#{id}]"].css('z-index', 9) end
text=(txt)
click to toggle source
# File lib/glimmer/swt/dialog_proxy.rb, line 77 def text=(txt) @text = txt if @init dom_element.dialog('option', 'title', @text) else dom_element.attr('title', @text) end end