154 lines
3.1 KiB
Plaintext
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
|