import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import QtQuick.Dialogs 1.1
import QtQuick.Layouts 1.1
import Qt.labs.settings 1.0
import "js/Debugger.js" as Debugger
import "js/ErrorLocationFormater.js" as ErrorLocationFormater
import "."


Rectangle {
	color: "#ededed"
	property alias bc: blockChain

	Connections
	{
		target:  projectModel
		onProjectLoaded: {
			loader.init()
		}
	}

	ScrollView
	{
		anchors.fill: parent
		onWidthChanged: {
			columnExe.width = width - 40
		}

		ColumnLayout
		{
			id: columnExe
			Layout.preferredWidth: parent.width
			width: parent.width - 40
			anchors.left: parent.left
			anchors.leftMargin: 15
			ColumnLayout
			{				
				id: scenarioColumn
				width: parent.width
				spacing: 10				
				ScenarioLoader
				{
					anchors.horizontalCenter: parent.horizontalCenter
					height: 100
					Layout.preferredWidth: 400
					width: 400
					id: loader
				}

				Connections
				{
					target: blockChain
					onChainChanged:
					{
						loader.needSaveOrReload()
					}
				}

				Rectangle
				{
					Layout.preferredWidth: parent.width
					height: 1
					color: "#cccccc"
				}

				Connections
				{
					target: loader
					onLoaded:
					{
						watchers.clear()
						blockChain.load(scenario)
					}
				}

				BlockChain
				{
					id: blockChain
					width: parent.width
				}

				Connections
				{
					target: blockChain
					property var currentSelectedBlock
					property var currentSelectedTx
					onTxSelected: {
						currentSelectedBlock = blockIndex
						currentSelectedTx = txIndex
						updateWatchers(blockIndex, txIndex)
					}

					function updateWatchers(blockIndex, txIndex){
						var tx = blockChain.model.blocks[blockIndex].transactions[txIndex]
						var state = blockChain.getState(tx.recordIndex)
						watchers.updateWidthTx(tx, state, blockIndex, txIndex)
					}

					onRebuilding: {
						watchers.clear()
					}

					onAccountAdded: {
						watchers.addAccount(address, "0 wei")
					}
				}
			}

			Watchers
			{
				id: watchers
				bc: blockChain
				Layout.fillWidth: true
				Layout.preferredHeight: 740
			}

			Rectangle
			{
				color: "transparent"
				Layout.preferredHeight: 50
				Layout.fillWidth: true
			}
		}
	}
}