glimmer-dsl-opal 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,8 +20,56 @@ module Glimmer
20
20
  event: 'keyup',
21
21
  event_handler: -> (event_listener) {
22
22
  -> (event) {
23
+ # TODO consider unifying this event handler with on_key_pressed by relying on its result instead of hooking another keyup event
24
+ if @last_key_pressed_event.nil? || @last_key_pressed_event.doit
25
+ @text = event.target.value
26
+ event_listener.call(event)
27
+ else
28
+ # TODO Fix doit false, it's not stopping input
29
+ event.prevent
30
+ event.prevent_default
31
+ event.stop_propagation
32
+ event.stop_immediate_propagation
33
+ end
34
+ }
35
+ }
36
+ },
37
+ 'on_key_pressed' => {
38
+ event: 'keydown',
39
+ event_handler: -> (event_listener) {
40
+ -> (event) {
41
+ @last_key_pressed_event = event
23
42
  @text = event.target.value
43
+ # TODO generalize this solution to all widgets that support key presses
44
+ # TODO support event.location once DOM3 is supported by opal-jquery
45
+ event.define_singleton_method(:keyCode) {event.which}
46
+ event.define_singleton_method(:key_code, &event.method(:keyCode))
47
+ event.define_singleton_method(:character) {event.which.chr}
48
+ event.define_singleton_method(:stateMask) do
49
+ state_mask = 0
50
+ state_mask |= SWTProxy[:alt] if event.alt_key
51
+ state_mask |= SWTProxy[:ctrl] if event.ctrl_key
52
+ state_mask |= SWTProxy[:shift] if event.shift_key
53
+ state_mask |= SWTProxy[:command] if event.meta_key
54
+ state_mask
55
+ end
56
+ event.define_singleton_method(:state_mask, &event.method(:stateMask))
57
+ doit = true
58
+ event.define_singleton_method(:doit=) do |value|
59
+ doit = value
60
+ end
61
+ event.define_singleton_method(:doit) { doit }
24
62
  event_listener.call(event)
63
+
64
+ # TODO Fix doit false, it's not stopping input
65
+ unless doit
66
+ event.prevent
67
+ event.prevent_default
68
+ event.stop_propagation
69
+ event.stop_immediate_propagation
70
+ end
71
+
72
+ doit
25
73
  }
26
74
  }
27
75
  }
@@ -488,6 +488,17 @@ module Glimmer
488
488
  }
489
489
  end
490
490
  },
491
+ TableProxy => {
492
+ :selection => lambda do |observer|
493
+ on_widget_selected { |selection_event|
494
+ if has_style?(:multi)
495
+ observer.call(selection.map(&:get_data))
496
+ else
497
+ observer.call(selection.first&.get_data)
498
+ end
499
+ }
500
+ end,
501
+ },
491
502
  # Java::OrgEclipseSwtWidgets::MenuItem => {
492
503
  # :selection => lambda do |observer|
493
504
  # on_widget_selected { |selection_event|
@@ -509,12 +520,12 @@ module Glimmer
509
520
  end
510
521
  end
511
522
 
523
+ require 'glimmer/swt/display_proxy'
512
524
  require 'glimmer/swt/browser_proxy'
513
525
  require 'glimmer/swt/button_proxy'
514
526
  require 'glimmer/swt/combo_proxy'
515
527
  require 'glimmer/swt/checkbox_proxy'
516
528
  require 'glimmer/swt/composite_proxy'
517
- require 'glimmer/swt/display_proxy'
518
529
  require 'glimmer/swt/date_time_proxy'
519
530
  require 'glimmer/swt/group_proxy'
520
531
  require 'glimmer/swt/label_proxy'
@@ -7,11 +7,7 @@ module Net
7
7
  # Note: ignore Protocol superclass for now
8
8
  class HTTP
9
9
  def post_form(uri, params)
10
- # pd uri.scheme
11
- # pd uri.host
12
- # pd uri.path
13
- # pd uri.query
14
- # pd params
10
+ # TODO
15
11
  end
16
12
  end
17
13
  end
data/lib/uri.rb CHANGED
@@ -6,7 +6,7 @@ module URI
6
6
 
7
7
  def initialize(url)
8
8
  @url = url
9
- uri_match = url.match(REGEX)
9
+ uri_match = url.match(REGEX).to_a
10
10
  @scheme = uri_match[1]
11
11
  @host = uri_match[2]
12
12
  @path = uri_match[3]
@@ -16,7 +16,7 @@ module URI
16
16
 
17
17
  def to_s
18
18
  url
19
- end
19
+ end
20
20
  end
21
21
 
22
22
  TBLENCWWWCOMP_ = {"\u0000"=>"%00", "\u0001"=>"%01", "\u0002"=>"%02", "\u0003"=>"%03", "\u0004"=>"%04", "\u0005"=>"%05", "\u0006"=>"%06", "\a"=>"%07", "\b"=>"%08", "\t"=>"%09", "\n"=>"%0A", "\v"=>"%0B", "\f"=>"%0C", "\r"=>"%0D", "\u000E"=>"%0E", "\u000F"=>"%0F", "\u0010"=>"%10", "\u0011"=>"%11", "\u0012"=>"%12", "\u0013"=>"%13", "\u0014"=>"%14", "\u0015"=>"%15", "\u0016"=>"%16", "\u0017"=>"%17", "\u0018"=>"%18", "\u0019"=>"%19", "\u001A"=>"%1A", "\e"=>"%1B", "\u001C"=>"%1C", "\u001D"=>"%1D", "\u001E"=>"%1E", "\u001F"=>"%1F", " "=>"+", "!"=>"%21", "\""=>"%22", "#"=>"%23", "$"=>"%24", "%"=>"%25", "&"=>"%26", "'"=>"%27", "("=>"%28", ")"=>"%29", "*"=>"%2A", "+"=>"%2B", ","=>"%2C", "-"=>"%2D", "."=>"%2E", "/"=>"%2F", "0"=>"%30", "1"=>"%31", "2"=>"%32", "3"=>"%33", "4"=>"%34", "5"=>"%35", "6"=>"%36", "7"=>"%37", "8"=>"%38", "9"=>"%39", ":"=>"%3A", ";"=>"%3B", "<"=>"%3C", "="=>"%3D", ">"=>"%3E", "?"=>"%3F", "@"=>"%40", "A"=>"%41", "B"=>"%42", "C"=>"%43", "D"=>"%44", "E"=>"%45", "F"=>"%46", "G"=>"%47", "H"=>"%48", "I"=>"%49", "J"=>"%4A", "K"=>"%4B", "L"=>"%4C", "M"=>"%4D", "N"=>"%4E", "O"=>"%4F", "P"=>"%50", "Q"=>"%51", "R"=>"%52", "S"=>"%53", "T"=>"%54", "U"=>"%55", "V"=>"%56", "W"=>"%57", "X"=>"%58", "Y"=>"%59", "Z"=>"%5A", "["=>"%5B", "\\"=>"%5C", "]"=>"%5D", "^"=>"%5E", "_"=>"%5F", "`"=>"%60", "a"=>"%61", "b"=>"%62", "c"=>"%63", "d"=>"%64", "e"=>"%65", "f"=>"%66", "g"=>"%67", "h"=>"%68", "i"=>"%69", "j"=>"%6A", "k"=>"%6B", "l"=>"%6C", "m"=>"%6D", "n"=>"%6E", "o"=>"%6F", "p"=>"%70", "q"=>"%71", "r"=>"%72", "s"=>"%73", "t"=>"%74", "u"=>"%75", "v"=>"%76", "w"=>"%77", "x"=>"%78", "y"=>"%79", "z"=>"%7A", "{"=>"%7B", "|"=>"%7C", "}"=>"%7D", "~"=>"%7E", "\u007F"=>"%7F", "\u0080"=>"%80", "\u0081"=>"%81", "\u0082"=>"%82", "\u0083"=>"%83", "\u0084"=>"%84", "\u0085"=>"%85", "\u0086"=>"%86", "\u0087"=>"%87", "\u0088"=>"%88", "\u0089"=>"%89", "\u008A"=>"%8A", "\u008B"=>"%8B", "\u008C"=>"%8C", "\u008D"=>"%8D", "\u008E"=>"%8E", "\u008F"=>"%8F", "\u0090"=>"%90", "\u0091"=>"%91", "\u0092"=>"%92", "\u0093"=>"%93", "\u0094"=>"%94", "\u0095"=>"%95", "\u0096"=>"%96", "\u0097"=>"%97", "\u0098"=>"%98", "\u0099"=>"%99", "\u009A"=>"%9A", "\u009B"=>"%9B", "\u009C"=>"%9C", "\u009D"=>"%9D", "\u009E"=>"%9E", "\u009F"=>"%9F", "\u00A0"=>"%A0", "\u00A1"=>"%A1", "\u00A2"=>"%A2", "\u00A3"=>"%A3", "\u00A4"=>"%A4", "\u00A5"=>"%A5", "\u00A6"=>"%A6", "\u00A7"=>"%A7", "\u00A8"=>"%A8", "\u00A9"=>"%A9", "\u00AA"=>"%AA", "\u00AB"=>"%AB", "\u00AC"=>"%AC", "\u00AD"=>"%AD", "\u00AE"=>"%AE", "\u00AF"=>"%AF", "\u00B0"=>"%B0", "\u00B1"=>"%B1", "\u00B2"=>"%B2", "\u00B3"=>"%B3", "\u00B4"=>"%B4", "\u00B5"=>"%B5", "\u00B6"=>"%B6", "\u00B7"=>"%B7", "\u00B8"=>"%B8", "\u00B9"=>"%B9", "\u00BA"=>"%BA", "\u00BB"=>"%BB", "\u00BC"=>"%BC", "\u00BD"=>"%BD", "\u00BE"=>"%BE", "\u00BF"=>"%BF", "\u00C0"=>"%C0", "\u00C1"=>"%C1", "\u00C2"=>"%C2", "\u00C3"=>"%C3", "\u00C4"=>"%C4", "\u00C5"=>"%C5", "\u00C6"=>"%C6", "\u00C7"=>"%C7", "\u00C8"=>"%C8", "\u00C9"=>"%C9", "\u00CA"=>"%CA", "\u00CB"=>"%CB", "\u00CC"=>"%CC", "\u00CD"=>"%CD", "\u00CE"=>"%CE", "\u00CF"=>"%CF", "\u00D0"=>"%D0", "\u00D1"=>"%D1", "\u00D2"=>"%D2", "\u00D3"=>"%D3", "\u00D4"=>"%D4", "\u00D5"=>"%D5", "\u00D6"=>"%D6", "\u00D7"=>"%D7", "\u00D8"=>"%D8", "\u00D9"=>"%D9", "\u00DA"=>"%DA", "\u00DB"=>"%DB", "\u00DC"=>"%DC", "\u00DD"=>"%DD", "\u00DE"=>"%DE", "\u00DF"=>"%DF", "\u00E0"=>"%E0", "\u00E1"=>"%E1", "\u00E2"=>"%E2", "\u00E3"=>"%E3", "\u00E4"=>"%E4", "\u00E5"=>"%E5", "\u00E6"=>"%E6", "\u00E7"=>"%E7", "\u00E8"=>"%E8", "\u00E9"=>"%E9", "\u00EA"=>"%EA", "\u00EB"=>"%EB", "\u00EC"=>"%EC", "\u00ED"=>"%ED", "\u00EE"=>"%EE", "\u00EF"=>"%EF", "\u00F0"=>"%F0", "\u00F1"=>"%F1", "\u00F2"=>"%F2", "\u00F3"=>"%F3", "\u00F4"=>"%F4", "\u00F5"=>"%F5", "\u00F6"=>"%F6", "\u00F7"=>"%F7", "\u00F8"=>"%F8", "\u00F9"=>"%F9", "\u00FA"=>"%FA", "\u00FB"=>"%FB", "\u00FC"=>"%FC", "\u00FD"=>"%FD", "\u00FE"=>"%FE", "\u00FF"=>"%FF"}
@@ -54,7 +54,7 @@ module URI
54
54
  def self.decode_www_form_component(str, enc=Encoding::UTF_8)
55
55
  raise ArgumentError, "invalid %-encoding (#{str})" if /%(?![0-9a-fA-F][0-9a-fA-F])/ =~ str
56
56
  str.b.gsub(/\+|%[0-9a-fA-F][0-9a-fA-F]/, TBLDECWWWCOMP_).force_encoding(enc)
57
- end
57
+ end
58
58
  end
59
59
 
60
60
  module Kernel
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-18 00:00:00.000000000 Z
11
+ date: 2020-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: glimmer
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.1
19
+ version: 1.0.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.1
26
+ version: 1.0.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: glimmer-dsl-xml
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: puts_debuggerer
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 0.8.1
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 0.8.1
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -248,6 +248,7 @@ files:
248
248
  - lib/glimmer-dsl-opal/samples/hello/hello_radio.rb
249
249
  - lib/glimmer-dsl-opal/samples/hello/hello_radio_group.rb
250
250
  - lib/glimmer-dsl-opal/samples/hello/hello_tab.rb
251
+ - lib/glimmer-dsl-opal/samples/hello/hello_table.rb
251
252
  - lib/glimmer-dsl-opal/samples/hello/hello_world.rb
252
253
  - lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/GPL-LICENSE.txt
253
254
  - lib/glimmer-dsl-opal/vendor/jquery-ui-timepicker/MIT-LICENSE.txt
@@ -269,12 +270,12 @@ files:
269
270
  - lib/glimmer-dsl-opal/vendor/jquery.js
270
271
  - lib/glimmer-dsl-swt.rb
271
272
  - lib/glimmer/data_binding/element_binding.rb
272
- - lib/glimmer/data_binding/ext/observable_model.rb
273
273
  - lib/glimmer/data_binding/list_selection_binding.rb
274
274
  - lib/glimmer/data_binding/observable_element.rb
275
275
  - lib/glimmer/data_binding/table_items_binding.rb
276
276
  - lib/glimmer/dsl/opal/async_exec_expression.rb
277
277
  - lib/glimmer/dsl/opal/bind_expression.rb
278
+ - lib/glimmer/dsl/opal/block_property_expression.rb
278
279
  - lib/glimmer/dsl/opal/checkbox_group_selection_data_binding_expression.rb
279
280
  - lib/glimmer/dsl/opal/color_expression.rb
280
281
  - lib/glimmer/dsl/opal/column_properties_expression.rb
@@ -1,40 +0,0 @@
1
- require 'glimmer/data_binding/observable'
2
- require 'glimmer/data_binding/observer'
3
- require 'glimmer/swt/display_proxy'
4
-
5
- # This ensures all data-binding events happen async and block on modal display
6
-
7
- module Glimmer
8
- module DataBinding
9
- # TODO prefix utility methods with double-underscore
10
- module ObservableModel
11
- include Observable
12
- # include Glimmer
13
-
14
- def add_property_writer_observers(property_name)
15
- property_writer_name = "#{property_name}="
16
- method(property_writer_name)
17
- ensure_array_object_observer(property_name, send(property_name))
18
- begin
19
- method("__original_#{property_writer_name}")
20
- rescue
21
- old_method = self.class.instance_method(property_writer_name)
22
- define_singleton_method("__original_#{property_writer_name}", old_method)
23
- define_singleton_method(property_writer_name) do |value|
24
- old_value = self.send(property_name)
25
- unregister_dependent_observers(property_name, old_value)
26
- self.send("__original_#{property_writer_name}", value)
27
- # Glimmer::Opal::DisplayProxy.instance.async_exec do
28
- notify_observers(property_name)
29
- ensure_array_object_observer(property_name, value, old_value)
30
- # end
31
- end
32
- end
33
- rescue => e
34
- # ignore writing if no property writer exists
35
- Glimmer::Config.logger&.debug "No need to observe property writer: #{property_writer_name}\n#{e.message}\n#{e.backtrace.join("\n")}"
36
- end
37
-
38
- end
39
- end
40
- end