110 lines
2.2 KiB
Plaintext
110 lines
2.2 KiB
Plaintext
|
class YMD_INTERVAL_CONTROL
|
||
|
|
||
|
inherit
|
||
|
|
||
|
WEL_EN_CONSTANTS
|
||
|
export
|
||
|
{NONE} all
|
||
|
end
|
||
|
|
||
|
JJJ_CONTROL
|
||
|
redefine
|
||
|
make,
|
||
|
notify,
|
||
|
set_height,
|
||
|
set_width
|
||
|
end
|
||
|
|
||
|
create
|
||
|
make
|
||
|
|
||
|
feature -- Initialization
|
||
|
|
||
|
make (a_parent: WEL_COMPOSITE_WINDOW)
|
||
|
do
|
||
|
Precursor (a_parent)
|
||
|
create start_date_edit.make (Current)
|
||
|
create finish_date_edit.make (Current)
|
||
|
create duration_edit.make (Current)
|
||
|
create data.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)
|
||
|
end
|
||
|
|
||
|
set_height (a_height: INTEGER)
|
||
|
do
|
||
|
Precursor (a_height)
|
||
|
finish_date_edit.set_y (start_date_edit.y + start_date_edit.height + 5)
|
||
|
end
|
||
|
|
||
|
set_width (a_width: INTEGER)
|
||
|
do
|
||
|
Precursor (a_width)
|
||
|
start_date_edit.set_width (width-10)
|
||
|
finish_date_edit.set_width (width-10)
|
||
|
duration_edit.set_width (width-10)
|
||
|
end
|
||
|
|
||
|
feature -- Access
|
||
|
|
||
|
data: YMD_INTERVAL
|
||
|
|
||
|
feature -- Element Change
|
||
|
|
||
|
set_data (a_interval: like data)
|
||
|
do
|
||
|
data := a_interval
|
||
|
start_date_edit.set_data (data.start)
|
||
|
finish_date_edit.set_data (data.finish)
|
||
|
duration_edit.set_data (data.duration)
|
||
|
end
|
||
|
|
||
|
feature -- Status report
|
||
|
|
||
|
is_data_valid: BOOLEAN
|
||
|
do
|
||
|
-- if is_valid_date_string (text) then
|
||
|
-- set_date_string (text)
|
||
|
Result := True
|
||
|
-- end
|
||
|
end
|
||
|
|
||
|
|
||
|
feature {NONE} -- Messages
|
||
|
|
||
|
notify (a_control: WEL_CONTROL; a_notify_code: INTEGER)
|
||
|
local
|
||
|
p: WEL_COMPOSITE_WINDOW
|
||
|
do
|
||
|
if a_notify_code = En_change then
|
||
|
if a_control = start_date_edit or a_control = finish_date_edit then
|
||
|
data.set_start_finish (start_date_edit.data, finish_date_edit.data)
|
||
|
elseif a_control = duration_edit then
|
||
|
if not duration_edit.data.is_negative then
|
||
|
data.set_start_duration (start_date_edit.data, duration_edit.data)
|
||
|
end
|
||
|
else
|
||
|
end
|
||
|
set_data (data)
|
||
|
end
|
||
|
p ?= parent
|
||
|
if p /= Void then
|
||
|
p.notify (Current, En_change)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
feature {NONE} -- Implementation
|
||
|
|
||
|
start_date_edit: JJJ_EDIT_DATE
|
||
|
|
||
|
finish_date_edit: JJJ_EDIT_DATE
|
||
|
|
||
|
duration_edit: JJJ_EDIT_YMD_DURATION
|
||
|
|
||
|
|
||
|
end -- class YMD_INTERVAL_CONTROL
|