159 lines
3.2 KiB
Plaintext
159 lines
3.2 KiB
Plaintext
note
|
|
description: "[
|
|
Item for placement into a {HISTORY_DROPDOWN}, pairing
|
|
an {EDITABLE} with a `time_stamp'.
|
|
]"
|
|
date: "23 Aug 04"
|
|
author: "Jimmy J. Johnson"
|
|
copyright: "Copyright 2012, Jimmy J. Johnson"
|
|
license: "Eiffel Forum License v2 (see forum.txt)"
|
|
URL: "$URL: file:///F:/eiffel_repositories/jj_vision/trunk/support/history_item.e $"
|
|
date: "$Date: 2015-10-24 07:32:40 -0700 (Sat, 24 Oct 2015) $"
|
|
revision: "$Revision: 23 $"
|
|
|
|
class
|
|
HISTORY_ITEM
|
|
|
|
inherit
|
|
|
|
COMPARABLE
|
|
undefine
|
|
default_create,
|
|
copy
|
|
end
|
|
|
|
VIEW
|
|
rename
|
|
parent as view_parent,
|
|
pixmap as view_pixmap
|
|
undefine
|
|
-- default_create,
|
|
is_equal,
|
|
copy
|
|
redefine
|
|
create_interface_objects,
|
|
initialize,
|
|
set_target,
|
|
draw
|
|
end
|
|
|
|
EV_LIST_ITEM
|
|
rename
|
|
object_id as ise_object_id
|
|
undefine
|
|
is_equal,
|
|
is_in_default_state
|
|
redefine
|
|
create_interface_objects,
|
|
initialize
|
|
end
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
create_interface_objects
|
|
-- Create objects to be used by `Current' in `initialize'
|
|
-- Implemented by descendants to create attached objects
|
|
-- in order to adhere to void-safety due to the implementation bridge pattern.
|
|
do
|
|
Precursor {VIEW}
|
|
Precursor {EV_LIST_ITEM}
|
|
create time_stamp
|
|
end
|
|
|
|
initialize
|
|
-- Setup current
|
|
do
|
|
Precursor {EV_LIST_ITEM}
|
|
Precursor {VIEW}
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
time_stamp: YMDHMS_TIME
|
|
-- To keep track of objects creation time
|
|
|
|
feature -- Element change
|
|
|
|
set_target (a_target: like target)
|
|
-- change `target'
|
|
do
|
|
Precursor {VIEW} (a_target)
|
|
reset_time_stamp
|
|
draw
|
|
end
|
|
|
|
reset_time_stamp
|
|
-- Make `time_stamp' be the current system time
|
|
do
|
|
time_stamp := create {YMDHMS_TIME}.set_now
|
|
end
|
|
|
|
feature -- Querry
|
|
|
|
is_simular (a_other: like Current): BOOLEAN
|
|
-- Does Current and other contain the same `target'?
|
|
require
|
|
other_exists: a_other /= Void
|
|
do
|
|
Result := target = a_other.target
|
|
ensure
|
|
definition: Result implies target = a_other.target
|
|
end
|
|
|
|
feature -- Comparison
|
|
|
|
is_less alias "<" (a_other: like Current): BOOLEAN
|
|
-- Is Current less than `a_other'?
|
|
do
|
|
Result := (time_stamp < a_other.time_stamp)
|
|
end
|
|
|
|
feature {NONE} -- Implementation
|
|
|
|
pointer_button_release_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
|
|
-- Actions to be performed when screen pointer button is pressed.
|
|
-- Defined here as place-holder to be undefined (i.e. joined) to
|
|
-- the version from {EV_WIDGET} or {EV_MODEL}.
|
|
-- See index clause for information on pick-and-put.
|
|
obsolete
|
|
"Do not call; deferred in {VIEW} to implement pick-and-put"
|
|
do
|
|
create Result
|
|
check
|
|
do_not_call: false
|
|
-- Because this feature should be UNDEFINED and the
|
|
-- version from {EV_WIDGET} or {EV_MODEL} called.
|
|
end
|
|
end
|
|
|
|
draw
|
|
-- Put the correct text into this EV_LIST_ITEM.
|
|
do
|
|
if not is_view_empty then
|
|
if attached {EDITABLE} target as e then
|
|
set_text (e.display_name)
|
|
else
|
|
set_text (target.generating_type + " " + time_stamp.as_string)
|
|
end
|
|
end
|
|
end
|
|
|
|
view_parent: EV_FIXED
|
|
-- Not used.
|
|
-- Result type is just so it conforms for redefinition.
|
|
do
|
|
check
|
|
do_not_call: False then
|
|
end
|
|
end
|
|
|
|
invariant
|
|
|
|
time_stamp_exists: time_stamp /= Void
|
|
target_exists: target /= Void
|
|
|
|
end
|