glimmer-dsl-opal 0.6.1 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +54 -0
- data/README.md +489 -16
- data/VERSION +1 -1
- data/lib/display.rb +31 -0
- data/lib/file.rb +29 -0
- data/lib/glimmer-dsl-opal.rb +31 -3
- data/lib/glimmer-dsl-opal/ext/date.rb +11 -0
- data/lib/glimmer-dsl-opal/ext/struct.rb +37 -0
- data/lib/glimmer-dsl-opal/samples/hello/hello_browser.rb +1 -1
- data/lib/glimmer-dsl-opal/samples/hello/hello_button.rb +46 -0
- data/lib/glimmer-dsl-opal/samples/hello/hello_custom_shell.rb +7 -7
- data/lib/glimmer-dsl-opal/samples/hello/hello_table.rb +283 -0
- data/lib/glimmer-dsl-swt.rb +20 -35
- data/lib/glimmer/data_binding/table_items_binding.rb +32 -19
- data/lib/glimmer/dsl/opal/block_property_expression.rb +41 -0
- data/lib/glimmer/dsl/opal/custom_widget_expression.rb +5 -0
- data/lib/glimmer/dsl/opal/dsl.rb +2 -0
- data/lib/glimmer/dsl/opal/widget_expression.rb +6 -2
- data/lib/glimmer/swt/combo_proxy.rb +40 -1
- data/lib/glimmer/swt/composite_proxy.rb +5 -1
- data/lib/glimmer/swt/control_editor.rb +54 -0
- data/lib/glimmer/swt/date_time_proxy.rb +66 -1
- data/lib/glimmer/swt/display_proxy.rb +4 -0
- data/lib/glimmer/swt/font_proxy.rb +4 -4
- data/lib/glimmer/swt/grid_layout_proxy.rb +7 -8
- data/lib/glimmer/swt/label_proxy.rb +11 -3
- data/lib/glimmer/swt/layout_data_proxy.rb +9 -3
- data/lib/glimmer/swt/layout_proxy.rb +1 -1
- data/lib/glimmer/swt/message_box_proxy.rb +3 -10
- data/lib/glimmer/swt/property_owner.rb +2 -2
- data/lib/glimmer/swt/shell_proxy.rb +8 -0
- data/lib/glimmer/swt/table_column_proxy.rb +71 -12
- data/lib/glimmer/swt/table_editor.rb +65 -0
- data/lib/glimmer/swt/table_item_proxy.rb +44 -1
- data/lib/glimmer/swt/table_proxy.rb +579 -12
- data/lib/glimmer/swt/text_proxy.rb +49 -1
- data/lib/glimmer/swt/widget_proxy.rb +106 -17
- data/lib/glimmer/ui/custom_shell.rb +9 -7
- data/lib/net/http.rb +1 -5
- data/lib/os.rb +36 -0
- data/lib/uri.rb +3 -3
- metadata +31 -9
- data/lib/glimmer/data_binding/ext/observable_model.rb +0 -40
@@ -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
|