Skip to content

Commit

Permalink
First passing spec with data-binding date_time property on DateTimeProxy
Browse files Browse the repository at this point in the history
  • Loading branch information
AndyObtiva committed Nov 7, 2020
1 parent 7cfa2d6 commit b9ca3fe
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 6 deletions.
1 change: 1 addition & 0 deletions lib/glimmer/dsl/swt/widget_expression.rb
Expand Up @@ -58,3 +58,4 @@ def add_content(parent, &block)
require 'glimmer/swt/table_column_proxy'
require 'glimmer/swt/sash_form_proxy'
require 'glimmer/swt/styled_text_proxy'
require 'glimmer/swt/date_time_proxy'
16 changes: 14 additions & 2 deletions lib/glimmer/swt/date_time_proxy.rb
Expand Up @@ -41,17 +41,29 @@ def date_time=(date_time_value)
self.seconds = date_time_value.sec
end

def month
swt_widget.month + 1
end

def month=(new_value)
swt_widget.month = new_value - 1
end

def set_attribute(attribute_name, *args)
if attribute_name.to_s == 'month'
swt_widget.month = args.first - 1
self.month = args.first
elsif attribute_name.to_s == 'date_time'
self.date_time = args.first
else
super(attribute_name, *args)
end
end

def get_attribute(attribute_name)
if attribute_name.to_s == 'month'
swt_widget.month + 1
month
elsif attribute_name.to_s == 'date_time'
date_time
else
super(attribute_name)
end
Expand Down
7 changes: 5 additions & 2 deletions lib/glimmer/swt/widget_proxy.rb
Expand Up @@ -231,8 +231,11 @@ def get_attribute(attribute_name)
else
@swt_widget.send(widget_custom_attribute[:getter][:name])
end
else
elsif @swt_widget.respond_to?(attribute_getter(attribute_name))
@swt_widget.send(attribute_getter(attribute_name))
else
pd attribute_name
send(attribute_name)
end
end

Expand Down Expand Up @@ -416,7 +419,7 @@ def widget_property_listener_installers
end
},
Java::OrgEclipseSwtWidgets::DateTime =>
[:year, :month, :day, :hours, :minutes, :seconds].reduce({}) do |hash, attribute|
[:year, :month, :day, :hours, :minutes, :seconds, :date_time].reduce({}) do |hash, attribute|
hash.merge(
attribute => lambda do |observer|
on_widget_selected { |selection_event|
Expand Down
29 changes: 27 additions & 2 deletions spec/lib/glimmer/dsl/swt/glimmer__date_time__spec.rb
Expand Up @@ -25,7 +25,7 @@ class Person
end
end

it "renders date time with :time style, data-binding year, month, day" do
it "renders date_time with default :date style, data-binding year, month, day" do
@target = shell {
@date_time = date_time {
year bind(person, :dob, on_read: ->(v) {v.year}, on_write: ->(v) {Time.new(v, person.dob.month, person.dob.day, person.dob.hour, person.dob.min, person.dob.sec)})
Expand Down Expand Up @@ -74,7 +74,32 @@ class Person
expect(@date_time.day).to eq(2)
end

it "renders date time with default :date style, data-binding hour, minute, second" do
it "renders date_time with default :date style, data-binding date_time property" do
@target = shell {
@date_time = date_time {
date_time bind(person, :dob)
}
}

expect(@date_time).to_not be_nil
expect(@date_time.swt_widget).to be_a(Java::OrgEclipseSwtWidgets::DateTime)
expect(@date_time).to have_style(:date)
expect(@date_time.date_time).to eq(person.dob)

@date_time.date_time = Time.new(2013, 1, 12, 2, 7, 3)
event = Event.new
event.display = @date_time.swt_widget.getDisplay
event.item = @date_time.swt_widget
event.widget = @date_time.swt_widget
event.type = Glimmer::SWT::SWTProxy[:selection]
@date_time.swt_widget.notifyListeners(Glimmer::SWT::SWTProxy[:selection], event)
expect(person.dob).to eq(@date_time.date_time)

person.dob = Time.new(2033, 3, 2, 12, 47, 32)
expect(@date_time.date_time).to eq(person.dob)
end

it "renders date_time with :time style, data-binding hour, minute, second" do
@target = shell {
@date_time = date_time(:time) {
hours bind(person, :dob, on_read: ->(v) {v.hour}, on_write: ->(v) {Time.new(person.dob.year, person.dob.month, person.dob.day, v, person.dob.min, person.dob.sec)})
Expand Down

0 comments on commit b9ca3fe

Please sign in to comment.