Class: Glimmer::SWT::MessageBoxProxy

Inherits:
WidgetProxy show all
Defined in:
lib/glimmer/swt/message_box_proxy.rb

Constant Summary

Constants inherited from WidgetProxy

WidgetProxy::DEFAULT_INITIALIZERS

Instance Attribute Summary collapse

Attributes inherited from WidgetProxy

#args, #background, #children, #enabled, #font, #foreground, #parent, #path

Instance Method Summary collapse

Methods inherited from WidgetProxy

#add_child, #add_css_class, #add_css_classes, #add_observer, #apply_property_type_converters, #build_dom, #can_handle_observation_request?, #clear_css_classes, #css_classes, #dispose, #dom_element, #element, for, #handle_observation_request, #has_style?, #id, #id=, #listener_dom_element, max_id_number_for, max_id_numbers, next_id_number_for, #parent_dom_element, #parent_path, #property_type_converters, #remove_css_class, #remove_css_classes, #render, reset_max_id_numbers!, #set_attribute, #style_element, underscored_widget_name, widget_class, widget_exists?, #widget_property_listener_installers

Methods included from PropertyOwner

#attribute_getter, #attribute_setter, #get_attribute, #set_attribute

Constructor Details

#initialize(parent, args) ⇒ MessageBoxProxy

Returns a new instance of MessageBoxProxy.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/glimmer/swt/message_box_proxy.rb', line 8

def initialize(parent, args)
  i = 0
  @parent = parent
  @args = args
  @children = Set.new
  @enabled = true
  content do
    on_widget_selected {
      hide
    }
  end
end

Instance Attribute Details

#messageObject

Returns the value of attribute message.



6
7
8
# File 'lib/glimmer/swt/message_box_proxy.rb', line 6

def message
  @message
end

#textObject

Returns the value of attribute text.



6
7
8
# File 'lib/glimmer/swt/message_box_proxy.rb', line 6

def text
  @text
end

Instance Method Details

#content(&block) ⇒ Object



47
48
49
# File 'lib/glimmer/swt/message_box_proxy.rb', line 47

def content(&block)
  Glimmer::DSL::Engine.add_content(self, Glimmer::DSL::Opal::MessageBoxExpression.new, &block)
end

#documentObject



31
32
33
34
35
36
37
# File 'lib/glimmer/swt/message_box_proxy.rb', line 31

def document
  element = self
  begin
    element = element.parent
  end while(element.parent)
  element
end

#domObject



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/glimmer/swt/message_box_proxy.rb', line 116

def dom
  modal_id = id
  modal_style = css
  modal_text = text
  modal_message = message
  modal_class = ['modal', name].join(' ')
  @dom ||= html {        
    div(id: modal_id, style: modal_style, class: modal_class) {
      style(class: 'modal-style') {
        style_dom_modal_css #.split("\n").map(&:strip).join(' ')
      }        
      div(class: 'modal-content') {
        header(class: 'text') {
          modal_text
        }
        tag(_name: 'p', id: 'message', class: 'message') {
          modal_message
        }
        input(type: 'button', class: 'close', autofocus: 'autofocus', value: 'OK')
      }
    }
  }.to_s
end

#hideObject



43
44
45
# File 'lib/glimmer/swt/message_box_proxy.rb', line 43

def hide
  dom_element.remove
end

#listener_pathObject



59
60
61
# File 'lib/glimmer/swt/message_box_proxy.rb', line 59

def listener_path
  path + ' .close' 
end

#nameObject



51
52
53
# File 'lib/glimmer/swt/message_box_proxy.rb', line 51

def name
  'div'
end

#observation_request_to_event_mappingObject



63
64
65
66
67
68
69
# File 'lib/glimmer/swt/message_box_proxy.rb', line 63

def observation_request_to_event_mapping
  {
    'on_widget_selected' => {
      event: 'click'
    },
  }
end

#openObject



39
40
41
# File 'lib/glimmer/swt/message_box_proxy.rb', line 39

def open
  document.add_child(self)
end

#selectorObject



55
56
57
# File 'lib/glimmer/swt/message_box_proxy.rb', line 55

def selector
  super + ' .close' 
end

#style_dom_modal_cssObject



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/glimmer/swt/message_box_proxy.rb', line 71

def style_dom_modal_css
  <<~CSS
    .modal {
      position: fixed;
      z-index: 1;
      padding-top: 100px;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      overflow: auto;
      background-color: rgb(0,0,0);
      background-color: rgba(0,0,0,0.4);
      text-align: center;
    }
    .modal-content .text {
      background: rgb(80, 116, 211);
      color: white;
      padding: 5px;
    }
    .modal-content .message {
      padding: 20px;
    }
    .modal-content {
      background-color: #fefefe;
      padding-bottom: 15px;
      border: 1px solid #888;
      display: inline-block;
      min-width: 200px;
    }
  CSS
#           .close {
#             color: #aaaaaa;
#             float: right;
#             font-weight: bold;
#             margin: 5px;
#           }
#           .close:hover,
#           .close:focus {
#             color: #000;
#             text-decoration: none;
#             cursor: pointer;
#           }
end