note
	description: "[
		One of the classes that decompose the numourous VITP widgets 
		into more managable groups.  This class models the widgets
		that contain the sea areas.
		]"
	author:    "Jimmy J. Johnson"
	date:      "5/15/24"
	copyright: "Copyright (c) 2024, Jimmy J. Johnson"
	license:   "Eiffel Forum v2 (http://www.eiffel.com/licensing/forum.txt)"

class
	SEA_AREAS_FACTORY

inherit

	WIDGET_FACTORY
		redefine
			make_widgets,
			extend_widgets,
			pair_widgets,
			fill_widgets
		end

create
	make

feature {NONE} -- Initialization

	make_widgets
			-- Create widgets for the corresponding game item
		do
			Precursor {WIDGET_FACTORY}
			create sea_area_widgets.make (100)
				-- Create widgets
			create aleutian_islands_widget.make (game.aleutian_islands)
			create bay_of_bengal_widget.make (game.bay_of_bengal)
			create central_pacific_ocean_widget.make (game.central_pacific_ocean)
			create coral_sea_widget.make (game.coral_sea)
			create hawaiian_islands_widget.make (game.hawaiian_islands)
			create indian_ocean_widget.make (game.indian_ocean)
			create indonesia_widget.make (game.indonesia)
			create japanese_islands_widget.make (game.japanese_islands)
			create marianas_islands_widget.make (game.marianas_islands)
			create marshall_islands_widget.make (game.marshall_islands)
			create north_pacific_ocean_widget.make (game.north_pacific_ocean)
			create south_pacific_ocean_widget.make (game.south_pacific_ocean)
			create us_mandate_widget.make (game.us_mandate)
		end

feature -- Access (tables)

	sea_area_widgets: VITP_WIDGET_TABLE [SEA_AREA_WIDGET, SEA_AREA]
			-- Keeps track of sea-area widgets

feature -- Access (sea area widgets)

	aleutian_islands_widget: ALEUTIAN_ISLANDS_WIDGET
	bay_of_bengal_widget: BAY_OF_BENGAL_WIDGET
	central_pacific_ocean_widget: CENTRAL_PACIFIC_OCEAN_WIDGET
	coral_sea_widget: CORAL_SEA_WIDGET
	hawaiian_islands_widget: HAWAIIAN_ISLANDS_WIDGET
	indian_ocean_widget: INDIAN_OCEAN_WIDGET
	indonesia_widget: INDONESIA_WIDGET
	japanese_islands_widget: JAPANESE_ISLANDS_WIDGET
	marianas_islands_widget: MARIANAS_ISLANDS_WIDGET
	marshall_islands_widget: MARSHALL_ISLANDS_WIDGET
	north_pacific_ocean_widget: NORTH_PACIFIC_OCEAN_WIDGET
	south_pacific_ocean_widget: SOUTH_PACIFIC_OCEAN_WIDGET
	us_mandate_widget: US_MANDATE_WIDGET

feature {NONE} -- Implementation

	extend_widgets
			-- Put each widget into `world'
		do
			sea_area_widgets.extend (aleutian_islands_widget, game.aleutian_islands)
			sea_area_widgets.extend (bay_of_bengal_widget, game.bay_of_bengal)
			sea_area_widgets.extend (central_pacific_ocean_widget, game.central_pacific_ocean)
			sea_area_widgets.extend (coral_sea_widget, game.coral_sea)
			sea_area_widgets.extend (hawaiian_islands_widget, game.hawaiian_islands)
			sea_area_widgets.extend (indian_ocean_widget, game.indian_ocean)
			sea_area_widgets.extend (indonesia_widget, game.indonesia)
			sea_area_widgets.extend (japanese_islands_widget, game.japanese_islands)
			sea_area_widgets.extend (marianas_islands_widget, game.marianas_islands)
			sea_area_widgets.extend (marshall_islands_widget, game.marshall_islands)
			sea_area_widgets.extend (north_pacific_ocean_widget, game.north_pacific_ocean)
			sea_area_widgets.extend (south_pacific_ocean_widget, game.south_pacific_ocean)
			sea_area_widgets.extend (us_mandate_widget, game.us_mandate)
			widgets.merge (sea_area_widgets)
		end

	pair_widgets
			-- Associate each widget with a sea area
		do
			sea_area_widgets.force (aleutian_islands_widget, game.aleutian_islands)
			sea_area_widgets.force (bay_of_bengal_widget, game.bay_of_bengal)
			sea_area_widgets.force (central_pacific_ocean_widget, game.central_pacific_ocean)
			sea_area_widgets.force (coral_sea_widget, game.coral_sea)
			sea_area_widgets.force (hawaiian_islands_widget, game.hawaiian_islands)
			sea_area_widgets.force (indian_ocean_widget, game.indian_ocean)
			sea_area_widgets.force (indonesia_widget, game.indonesia)
			sea_area_widgets.force (japanese_islands_widget, game.japanese_islands)
			sea_area_widgets.force (marianas_islands_widget, game.marianas_islands)
			sea_area_widgets.force (marshall_islands_widget, game.marshall_islands)
			sea_area_widgets.force (north_pacific_ocean_widget, game.north_pacific_ocean)
			sea_area_widgets.force (south_pacific_ocean_widget, game.south_pacific_ocean)
			sea_area_widgets.force (us_mandate_widget, game.us_mandate)
		end

	fill_widgets
			-- Call `set_target' to give each widget a target
		do
			aleutian_islands_widget.set_target (game.aleutian_islands)
			bay_of_bengal_widget.set_target (game.bay_of_bengal)
			central_pacific_ocean_widget.set_target (game.central_pacific_ocean)
			coral_sea_widget.set_target (game.coral_sea)
			hawaiian_islands_widget.set_target (game.hawaiian_islands)
			indian_ocean_widget.set_target (game.indian_ocean)
			indonesia_widget.set_target (game.indonesia)
			japanese_islands_widget.set_target (game.japanese_islands)
			marianas_islands_widget.set_target (game.marianas_islands)
			marshall_islands_widget.set_target (game.marshall_islands)
			north_pacific_ocean_widget.set_target (game.north_pacific_ocean)
			south_pacific_ocean_widget.set_target (game.south_pacific_ocean)
			us_mandate_widget.set_target (game.us_mandate)
		end

end
