extends HBoxContainer

func _ready() -> void:
	$Type.clear()
	for t in $Types.get_children():
		$Type.add_item(t.name)
	_on_Type_item_selected($Type.selected)

func update_up_down_button() -> void:
	var parent = get_parent()
	if parent == null:
		return
	$Up.disabled = (get_index() == 0)
	$Down.disabled = (get_index() == get_parent().get_child_count()-2)

func set_model_data(data) -> void:
	if data.has("name"):
		$Name.text = data.name
	if data.has("label"):
		$Label.text = data.label
	if !data.has("type"):
		return
	var type = $Types.get_node(data.type)
	type.set_model_data(data)
	var selected = type.get_index()
	$Type.selected = selected
	_on_Type_item_selected(selected)

func get_model_data() -> Dictionary:
	var data = $Types.get_node($Type.get_item_text($Type.selected)).get_model_data()
	data.name=$Name.text
	data.label=$Label.text
	data.type=$Type.get_item_text($Type.selected)
	return data

func _on_Delete_pressed() -> void:
	var p = get_parent()
	p.remove_child(self)
	p.update_up_down_buttons()
	queue_free()

func _on_Up_pressed() -> void:
	get_parent().move_child(self, get_index() - 1)
	get_parent().update_up_down_buttons()

func _on_Down_pressed() -> void:
	get_parent().move_child(self, get_index() + 1)
	get_parent().update_up_down_buttons()

func _on_Type_item_selected(ID) -> void:
	for t in $Types.get_children():
		t.visible = false
	var t = $Types.get_child(ID)
	if t != null:
		t.visible = true
	else:
		print(ID)