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

154 lines
3.1 KiB
Plaintext

note
description: "[
Used by {EDIT_TOOL} to add or remove a {FIELD} in a {SCHEMA}.
Note: this is not to be confused with {EDIT_COMMAND} which is used
to change the "data" in a record or to change the positioning of a
{FIELD}; this changes the {SCHEMA} itself.
]"
date: "6 Oct 07"
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/interface/commands/change_fields_command.e $"
date: "$Date: 2013-04-25 18:11:22 -0400 (Thu, 25 Apr 2013) $"
revision: "$Revision: 14 $"
class
CHANGE_FIELDS_COMMAND
inherit
JJ_COMMAND
redefine
text,
affected_objects,
execute,
undo,
is_executable,
is_undoable
end
create
make
feature {NONE} -- Initialization
make (a_schema: like schema; a_field: like field)
-- Create an instance
do
default_create
schema := a_schema
field := a_field
end
feature -- Access
text: STRING
-- Name of this command
do
Result := "Change schema"
end
schema: SCHEMA
-- The SCHEMA being changed
field: FIELD
-- FIELD which identifies the "item" to be changed
affected_objects: LINKED_SET [ANY]
-- Set of objects changable by this command
do
Result := Precursor {JJ_COMMAND}
Result.extend (schema)
Result.extend (field)
end
feature -- Element change
set_schema (a_schema: like schema)
-- Change `schema'
require
schema_exists: a_schema /= Void
do
schema := a_schema
ensure
schema_assigned: schema = a_schema
end
set_field (a_field: FIELD)
-- Change `field'
require
field_exists: a_field /= Void
do
field := a_field
ensure
field_assigned: field = a_field
end
feature -- Basic operations
execute
-- Perform the command
do
Precursor {JJ_COMMAND}
schema.time_modified.set_now_utc_fine
if is_delete_command then
schema.start
schema.prune (field)
else
schema.extend (field)
end
end
undo
-- Undo the command
do
Precursor {JJ_COMMAND}
schema.time_modified.set_now_utc_fine
if is_delete_command then
schema.extend (field)
else
schema.start
schema.prune (field)
end
end
feature -- Status report
is_executable: BOOLEAN
-- Can the command be executed?
do
Result := Precursor {JJ_COMMAND} and then
(schema /= Void and field /= Void) and then
(is_delete_command implies schema.has (field))
end
is_undoable: BOOLEAN
-- Can the command be undone?
do
Result := PRECURSOR {JJ_COMMAND} and then
(schema /= Void and then field /= Void) and then
(is_delete_command implies not schema.has (field))
end
feature -- Status setting
set_delete_action
-- Make this command delete `field' from `schema' when `execute' is called.
do
is_delete_command := True
end
set_add_action
-- Make this command add `field' to `schema' when `execute' is called.
do
is_delete_command := False
end
feature {NONE} -- Implementation
is_delete_command: BOOLEAN
-- Is this command to be used to delete `field' from `schema'?
end