19928/jj_vitp/Interface/views/chart_tool.e
Jocelyn Fiat 6dde6425c2 init
2024-06-17 09:09:33 +02:00

153 lines
4.3 KiB
Plaintext

note
description: "[
Used to hold a CHART_VIEW in the VITP game program.
]"
author: "Jimmy J. Johnson"
class
CHART_TOOL
inherit
VITP_TOOL
redefine
create_interface_objects,
initialize,
-- add_actions,
set_target,
draw
end
create
default_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 {VITP_TOOL}
create japanese_oa_chart_view.make (vitp)
create allied_oa_chart_view.make (vitp)
create allied_starting_forces_view.make (vitp)
end
initialize
-- Build the interface for this window
do
Precursor {VITP_TOOL}
disable_history
split_manager.extend (japanese_oa_chart_view)
split_manager.extend (allied_starting_forces_view)
split_manager.set_vertical
split_manager.extend (allied_oa_chart_view)
end
-- add_actions
-- -- Add actions to views
-- do
-- Precursor
---- japanese_oa_chart_view.pointer_button_press_actions.extend (agent on_pressed (japanese_oa_chart_view, ?,?,?,?,?,?,?,?))
---- allied_oa_chart_view.pointer_button_press_actions.extend (agent on_pressed (allied_oa_chart_view, ?,?,?,?,?,?,?,?))
---- allied_starting_forces_view.pointer_button_press_actions.extend (agent on_pressed (allied_starting_forces_view, ?,?,?,?,?,?,?,?))
-- allied_starting_forces_view.pointer_enter_actions.extend (agent on_enter)
-- allied_starting_forces_view.pointer_button_release_actions.extend (agent on_pressed (allied_starting_forces_view, ?,?,?,?,?,?,?,?))
-- end
feature {NONE} -- Agent actions
on_enter
-- Test actions
do
io.put_string (generating_type.name + ".on_enter: %N")
end
on_pressed (a_view: ORDER_OF_APPEARANCE_VIEW;
ax, ay, button: INTEGER;
ax_tilt, ay_tilt, a_pressure: DOUBLE;
a_screen_x, a_screen_y: INTEGER)
-- I was going to use this feature for setting the `focused_view'
-- when the user clicks within one of the views, but it never gets
-- called (so I commented out `add_actions'). I bet the event
-- loop never checks for `pointer_press_actions'. ???
do
io.put_string (generating_type.name + ".on_pressed: " + a_view.generating_type.name + "%N")
focused_view_imp := a_view
end
feature -- Access
-- target: VITP_GAME
japanese_oa_chart_view: JAPANESE_ORDER_OF_APPEARANCE_CHART_VIEW
-- The view representing the Japanese order of appearance
allied_oa_chart_view: ALLIED_ORDER_OF_APPEARANCE_CHART_VIEW
-- The view representing the Allied ordr of appearance
allied_starting_forces_view: ALLIED_STARTING_FORCES_VIEW
-- The view reprsenting the Allied, turn 1, starting forces chart
focused_view: VITP_CELL_VIEW
-- The view that currently has the focus
do
if attached focused_view_imp as v and then v.is_displayed then
Result := v
else
if japanese_oa_chart_view.is_displayed then
Result := japanese_oa_chart_view
elseif allied_oa_chart_view.is_displayed then
Result := allied_oa_chart_view
elseif allied_starting_forces_view.is_displayed then
Result := allied_starting_forces_view
else
-- Unlikely, but all view are hidden, so default
Result := japanese_oa_chart_view
end
end
end
feature -- Element change
set_target (a_game: like vitp)
-- Change the value of `target' and add it to the `target_set' (the set
-- of objects contained in this view. The old target is removed from
-- the set.
do
Precursor {VITP_TOOL} (a_game)
japanese_oa_chart_view.set_target (a_game)
allied_oa_chart_view.set_target (a_game)
allied_starting_forces_view.set_target (a_game)
end
set_focused_view (a_view: ORDER_OF_APPEARANCE_VIEW)
-- Set `focused_view' to `a_view'.
-- Called by {ORDER_OF_APPEARANCE_VIEW} when `a_view' was clicked
require
valid_view: a_view = japanese_oa_chart_view or
a_view = allied_oa_chart_view or
a_view = allied_starting_forces_view
do
focused_view_imp := a_view
end
feature -- Basic operations
draw
-- Redraw the tool and the contained view
do
Precursor {VITP_TOOL}
japanese_oa_chart_view.draw
allied_oa_chart_view.draw
end
feature {NONE} -- Implementation
focused_view_imp: detachable like focused_view
-- Implementaion of `focused_view'
end