165 lines
3.5 KiB
Plaintext
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
|