19928/jj_vision/unfinished/ymdhms_interval_control.e
Jocelyn Fiat 6dde6425c2 init
2024-06-17 09:09:33 +02:00

165 lines
3.5 KiB
Plaintext

note
description: "Objects that ..."
author: ""
date: "$Date: 2012-03-16 14:05:07 -0400 (Fri, 16 Mar 2012) $"
revision: "$Revision: 7 $"
class
YMDHMS_INTERVAL_CONTROL
inherit
CONTROL
redefine
initialize,
value_imp,
is_value_valid,
draw
end
create
default_create
feature {NONE} -- Initialization
initialize
local
lab: EV_LABEL
do
Precursor {JJJ_CONTROL}
create start_date_edit
create finish_date_edit
create duration_edit
extend (start_date_edit)
extend (finish_date_edit)
extend (duration_edit)
create lab.make_with_text ("Start")
extend (lab)
set_item_position (lab, 0, 0)
-- set_item_width (lab, 20)
create lab.make_with_text ("Finish")
extend (lab)
set_item_position (lab, 0, 30)
create lab.make_with_text ("Duration")
extend (lab)
set_item_position (lab, 0, 60)
-- set_item_width (lab, 20)
set_item_position (start_date_edit, lab.width + 5, 0)
set_item_position (finish_date_edit, lab.width +5, 30)
set_item_position (duration_edit, lab.width + 5, 60)
-- set_item_width (start_date_edit, 150)
-- set_item_width (finish_date_edit, 150)
-- set_item_width (duration_edit, 150)
-- !! duration_edit.make (Current)
-- !! value.make
-- start_date_edit.set_x (5)
-- start_date_edit.set_y (5)
-- finish_date_edit.set_x (5)
-- finish_date_edit.set_y (start_date_edit.y + start_date_edit.height + 5)
-- duration_edit.set_x (5)
-- duration_edit.set_y (finish_date_edit.y + finish_date_edit.height + 5)
set_actions
end
set_actions
-- Add actions to the widgets in `Current'
do
start_date_edit.change_actions.extend (agent on_start_changed)
finish_date_edit.change_actions.extend (agent on_finish_changed)
duration_edit.change_actions.extend (agent on_duration_changed)
end
feature -- Access
feature -- Element Change
feature -- Status report
is_value_valid: BOOLEAN
do
-- if is_valid_date_string (text) then
-- set_date_string (text)
Result := True
-- end
end
feature -- Basic operations
draw
-- Update the screen representation of Current by simply loading
-- the various pieces of `value_imp' into the proper controls.
-- This feature is called from JJJ_CONTROL.`set_value'.
do
start_date_edit.set_value (value_imp.start)
finish_date_edit.set_value (value_imp.finish)
duration_edit.set_value (value_imp.duration)
end
feature {NONE} -- Implementation
on_start_changed
-- Start has changed so update `Current'
local
s, f: YMDHMS_TIME
do
s := start_date_edit.value
f := finish_date_edit.value
if f < s then
f := s
end
value_imp.set_start_finish (s, f)
draw
change_actions.call ([])
end
on_finish_changed
-- Finished has changed so update `Current'
local
s, f: YMDHMS_TIME
do
s := start_date_edit.value
f := finish_date_edit.value
if f < s then
s := f
end
value_imp.set_start_finish (s, f)
draw
change_actions.call ([])
end
on_duration_changed
-- `Duration_edit' has changed so update `Current'
local
s: YMDHMS_TIME
d: YMDHMS_DURATION
do
s := start_date_edit.value
d := duration_edit.value
if d.is_negative then
value_imp.set_start_finish (s, s)
else
value_imp.set_start_duration (s, d)
end
draw
change_actions.call ([])
end
feature {NONE} -- Implementation
value_imp: YMDHMS_INTERVAL
-- Implementation (and anchor) of `value'.
-- Redefined to change type.
start_date_edit: YMDHMS_TIME_CONTROL
finish_date_edit: YMDHMS_TIME_CONTROL
duration_edit: YMDHMS_DURATION_CONTROL
end