import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import QtQuick.Window 2.0
import "."

Dialog {
	id: stateListContainer
	modality: Qt.WindowModal
	width: 640
	height: 480
	visible: false
	contentItem: Rectangle {
		anchors.fill: parent
		ColumnLayout
		{
			anchors.fill: parent
			TableView {
				id: list
				Layout.fillHeight: true
				Layout.fillWidth: true
				model: projectModel.stateListModel
				itemDelegate: renderDelegate
				headerDelegate: null
				frameVisible: false
				TableViewColumn {
					role: "title"
					title: qsTr("State")
					width: list.width
				}
			}

			Row{
				spacing: 5
				anchors.bottom: parent.bottom
				anchors.right: parent.right
				anchors.rightMargin: 10
				Button {
					action: addStateAction
				}

				Button {
					action: closeAction
				}
			}
		}
	}

	Component {
		id: renderDelegate
		Item {
			RowLayout {
				anchors.fill: parent
				Text {
					Layout.fillWidth: true
					Layout.fillHeight: true
					text: styleData.value
					font.pointSize: StateStyle.general.basicFontSize
					verticalAlignment: Text.AlignBottom
				}
				ToolButton {
					text: qsTr("Edit");
					Layout.fillHeight: true
					onClicked: list.model.editState(styleData.row);
				}
				ToolButton {
					visible: list.model.defaultStateIndex !== styleData.row
					text: qsTr("Delete");
					Layout.fillHeight: true
					onClicked: list.model.deleteState(styleData.row);
				}
				ToolButton {
					text: qsTr("Run");
					Layout.fillHeight: true
					onClicked: list.model.runState(styleData.row);
				}
			}
		}
	}

	Row
	{
		Action {
			id: addStateAction
			text: qsTr("Add State")
			shortcut: "Ctrl+T"
			enabled: codeModel.hasContract && !clientModel.running;
			onTriggered: list.model.addState();
		}

		Action {
			id: closeAction
			text: qsTr("Close")
			onTriggered: stateListContainer.close();
		}
	}
}