<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl>
	<head>
		<!-- Regiones -->
		<regionBase>
			<region id="rgMovie" width="100%" height="100%" top="0" left="0" zIndex="2"/>		<!-- Region video -->
			<region id="rgInstr" width="25%" height="70%" top="0" left="75%" zIndex="3"/>		<!-- Region instrucciones -->
			<region id="rgInput" width="65%" height="10%" top="60%" left="10%" zIndex="3"/>		<!-- Region input -->
			<region id="rgOutput" width="100%" height="30%" top="70%" left="0" zIndex="3"/>		<!-- Region output -->
			<region id="rgLupa" width="10%" height="10%" top="60%" left="0" zIndex="3"/>		<!-- Region imagen lupa -->
			<region id="rgAni" width="56" height="40" top="80%" left="40%" zIndex="4"/> 		<!-- Region animacion -->
		</regionBase>

		<!-- Descriptores -->
		<descriptorBase>
			<descriptor id="dsMovie" region="rgMovie"/>							<!-- Descriptor video -->
			<descriptor id="dsInstr" region="rgInstr"/>							<!-- Descriptor instrucciones -->
			<descriptor id="dsInput"  region="rgInput" focusIndex="inputIdx"/>	<!-- Descriptor input -->
			<descriptor id="dsOutput" region="rgOutput"/>						<!-- Descriptor output -->
			<descriptor id="dsLupa" region="rgLupa"/>							<!-- Descriptor lupa -->
			<descriptor id="dsAni" region="rgAni" />							<!-- Descriptor animacion -->
		</descriptorBase>

		<!-- Conectores (explicados al momento de enlazarlos) -->
		<connectorBase>
			<causalConnector id="onBeginStartN">
				<simpleCondition role="onBegin"/>
				<simpleAction role="start" max="unbounded"/>
			</causalConnector>

			<causalConnector id="onBeginSetNDelayN">
				<connectorParam name="var"/>
				<connectorParam name="delay"/>
				<simpleCondition role="onBegin" />
				<simpleAction role="set" value="$var" max="unbounded" qualifier="par" delay="$delay"/>
			</causalConnector>

			<causalConnector id="onEndAttributionSetDelay">
				<connectorParam name="var"/>
				<connectorParam name="delay"/>
				<simpleCondition role="onEndAttribution"/>
				<simpleAction role="set" value="$var" delay="$delay"/>
			</causalConnector>

			<causalConnector id="onKeySelectionStartNStopNSetN">
				<connectorParam name="keyCode" />
				<connectorParam name="var" />
				<simpleCondition role="onSelection" key="$keyCode" />
				<compoundAction operator="seq">
					<simpleAction role="start" max="unbounded" qualifier="par"/>
					<simpleAction role="stop" max="unbounded" qualifier="par"/>
					<simpleAction role="set" value="$var" max="unbounded" qualifier="par"/>
				</compoundAction>
			</causalConnector>
		</connectorBase>
	</head>

	<body>
		<!-- ************************************* PORTS ************************************* -->
		<port id="entryPoint" component="movie"/>
		<port id="entryBoton" component="botonRed"/>
		<port id="entryInstr" component="instr"/>

		<!-- ************************************* MEDIAS ************************************* -->

		<!-- Se setea como keyMaster a input (que tiene focusIndex "inputIdx").
			"Input" podra leer las teclas del control remoto para la escritura de la busqueda.
		  -->
		<media type="application/x-ginga-settings" id="programSettings">
	        <property name="service.currentKeyMaster" value="inputIdx"/>
		</media>

		<!-- Medio utilizado para controlar la utilizacion del boton rojo -->
		<media id="botonRed"/>

		<!-- Medio de video -->
		<media id="movie" descriptor="dsMovie" src="media/video1.mp4">
			<property name="bounds"/>
		</media>

		<!-- Medio con instrucciones de uso -->
		<media id="instr" descriptor="dsInstr" src="media/inst.jpg">
			<property name="transparency" value="30%"/>
		</media>

		<!-- Medio con imagen de lupa -->
		<media id="lupa" descriptor="dsLupa" src="media/lupa.jpg"/>

		<!-- Medio con animacion de busqueda -->
		<media id="anim" descriptor="dsAni" src="animacion.lua">
			<property name="state"/>
		</media>

		<!-- Medio con script lua para el ingreso de la busqueda -->
		<media id="input" src="input.lua"  descriptor="dsInput">
			<area id="select"/>
			<property name="text"/>
		</media>

		<!-- Medio con script lua para realizar la solicitud tcp -->
		<media id="tweet" src="tweet.lua">
			<property name="search"/>
			<property name="result"/>
		</media>

		<!-- Medio con script lua para mostrar el resultado de la busqueda en pantalla -->
		<media id="output" src="output.lua" descriptor="dsOutput">
			<property name="text"/>
		</media>

		<!-- ************************************* LINKS ************************************* -->

		<!-- Al precionar el boton rojo, este se desactiva, se cambia el tamano
			del video, se cambia la transparencia de las instrucciones y se inicia "input".
		  -->
		<link xconnector="onKeySelectionStartNStopNSetN">
		<linkParam name="keyCode" value="RED"/>
			<bind role="onSelection" component="botonRed"/>
			<bind role="stop" component="botonRed"/>				<!-- Se desactiva el boton rojo -->
			<bind role="start" component="input"/>					<!-- Se inicia "input" -->
			<bind role="set" component="movie" interface="bounds">	<!-- Se cambia el taman del video -->
				<bindParam name="var" value="0%,0%,75%,60%"/> 		<!-- left,top,width,height -->
			</bind>
			<bind role="set" component="instr" interface="transparency"> <!-- Se cambia la transparencia de las instrucciones -->
				<bindParam name="var" value="0%"/>
			</bind>
		</link>

		<!-- Al iniciar input, se inician tambien las demas componentes de la busqueda -->
		<link xconnector="onBeginStartN">
			<bind role="onBegin" component="input"/>
			<bind role="start" component="lupa"/>
			<bind role="start" component="anim"/>
			<bind role="start" component="tweet"/>
			<bind role="start" component="output"/>
		</link>

		<!-- Cuando se preciona Select/Enter para iniciar la busqueda, se activan los elementos descritos -->
		<link xconnector="onBeginSetNDelayN">
			<bind role="onBegin" component="input" interface="select"/>
			<bind role="set" component="output" interface="text"> <!-- Se borra el texto del output al iniciar una nueva busqueda -->
				<bindParam name="delay" value="0"/>
				<bindParam name="var" value=""/>
			</bind>
			<bind role="set" component="tweet" interface="search">	<!-- Se setea un parametro de otro codigo ($get) -->
				<bindParam name="delay" value="0s"/>
				<bindParam name="var" value="$get"/>
			</bind>
			<bind role="get" component="input" interface="text"/> <!-- Ese parametro corresponde al atributo text contenido en input -->
			<bind role="set" component="anim" interface="state"> <!-- Comienza la animacion -->
				<bindParam name="delay" value="0s"/>
				<bindParam name="var" value="start"/>
			</bind>
			<bind role="set" component="anim" interface="state"> <!-- Se detiene la animacion luego de 2s -->
				<bindParam name="delay" value="2s"/>
				<bindParam name="var" value="stop"/>
			</bind>
		</link>

		<!-- Cuando cambie el atributo "result" de tweet, este se asignara a "text" de output.
			Ademas se da un delay a la aparicion del texto de output para dar tiempo a que termine la animacion.
		  -->
		<link xconnector="onEndAttributionSetDelay">
			<bind role="onEndAttribution" component="tweet" interface="result"/>
			<bind role="set" component="output" interface="text"> <!-- Se setea un parametro de otro codigo ($get) -->
				<bindParam name="delay" value="1.2s"/>	<!-- Se da un delay a la aparicion del texto en output. -->
				<bindParam name="var" value="$get"/>
			</bind>
			<bind role="get" component="tweet" interface="result"/> <!-- Ese parametro corresponde al atributo result contenido en tweet -->
		</link>
	</body>
</ncl>
