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