﻿AppType=JavaFX
Build1=Default,b4j.T_Lights_Concept
Build2=New_1,b4j.T_Lights_Concept
File1=blueledoff.png
File2=blueledon.png
File3=greenledoff.png
File4=greenledon.png
File5=redledoff.png
File6=redledon.png
File7=T_Lights_Concept.bjl
FileGroup1=Default Group
FileGroup2=Default Group
FileGroup3=Default Group
FileGroup4=Default Group
FileGroup5=Default Group
FileGroup6=Default Group
FileGroup7=Default Group
Group=Default Group
Library1=jcore
Library2=jfx
Library3=jrandomaccessfile
Library4=jnetwork
Library5=javaobject
Module1=B4RSerializator
NumberOfFiles=7
NumberOfLibraries=5
NumberOfModules=1
Version=8.31
@EndOfDesignText@
'Tiffany Light-Radio-Fan PC B4J Code
#Region Project Attributes 
	#MainFormWidth: 600
	#MainFormHeight: 400 
	
#End Region

Sub Process_Globals
	Private fx As JFX
	Private MainForm As Form
	Private socket As Socket
	Public connected As Boolean
	Dim data() As Object
	Private astream As AsyncStreams
	Private ser As B4RSerializator
	Private btnConnect As Button
	Private btnLight As Button
	Private btnRadio As Button
	Private btnFuture As Button
	Private imgvLedD0 As ImageView ' Red
	Private imgvLedD1 As ImageView ' Green
	Private imgvLedD2 As ImageView ' Blue
	Private imgD0On As Image
	Private imgD0Off As Image
	Private imgD1On As Image
	Private imgD1Off As Image
	Private imgD2On As Image
	Private imgD2Off As Image
	Private txtfText1 As TextField
	Private lblIP As Label
	Private lblStatus As Label	
	Private txtfText2 As TextField
End Sub

Sub AppStart (Form1 As Form, Args() As String)
	MainForm = Form1
	MainForm.RootPane.LoadLayout("T_Lights_Concept") 'Load the layout file.
	MainForm.Show
	btnLight.Text = "_Light"
	btnRadio.Text = "_Radio"
	btnFuture.Text = "_Fan"
	txtfText1.Text = "192.168.1.95"
	txtfText2.Text = ""
	asJO(btnLight).RunMethod("setMnemonicParsing",Array(True))
	asJO(btnRadio).RunMethod("setMnemonicParsing",Array(True))
	asJO(btnFuture).RunMethod("setMnemonicParsing",Array(True))
	Connect(txtfText1.Text)
	Log(txtfText1.Text)
	txtfText2.RequestFocus
	
End Sub

Sub asJO(o As JavaObject) As JavaObject
	Return o
End Sub

Sub btnConnect_Click
	Connect(txtfText1.Text)
	Log(txtfText1.Text)
End Sub

Public Sub Connect(ip As String)
	If astream.IsInitialized Then
		Log("Open")
		astream.Close
		Log("Closed")
	End If
	socket.Initialize("socket")
	socket.Connect(ip, 51042, 30000)
	Log (ip)
	
End Sub

Private Sub Socket_Connected (Successful As Boolean)
	If Successful Then
		connected = True
		astream.Initialize(socket.InputStream, socket.OutputStream, "astream")
		StateChanged
	End If
End Sub

Private Sub Astream_Error
	Log("Disconnected")
	connected = False
	StateChanged
	
End Sub

Private Sub Astream_Terminated
	Astream_Error
	
End Sub

Private Sub txtfText2_Action
	If txtfText2.Text = "L" Then
		btnLight_Action
		txtfText2.Text = ""
	End If
	If txtfText2.Text = "R" Then
		btnRadio_Action
		txtfText2.Text = ""
	End If
	If	txtfText2.Text = "F" Then
		btnFuture_Action
		txtfText2.Text = ""
	End If
	If	txtfText2.Text = "Q" Then
		txtfText2.Text = ""
		ExitApplication
	End If
End Sub

Public Sub StateChanged
	If connected Then
		lblStatus.TextColor=fx.Colors.Green
	Else
		lblStatus.TextColor=fx.Colors.Red
		Log("Not Connected")
	End If
	
End Sub

Sub btnLight_Action
	ser.Initialize
	astream.Write(ser.ConvertArrayToBytes(Array("S0")))
	Log("S0")
End Sub

Sub btnRadio_Action
	ser.Initialize
	astream.Write(ser.ConvertArrayToBytes(Array("S1")))
	Log("S1")
End Sub

Sub btnFuture_Action
	ser.Initialize
	astream.Write(ser.ConvertArrayToBytes(Array("S2")))
	Log("S2")
End Sub

Private Sub astream_NewData (Buffer() As Byte)
	data = ser.ConvertBytesToArray(Buffer)
	Log("data")
	Log("data0 = " & data(0))
	Log("data1 = " & data(1))
	Select data(0)
		Case "S0"
			Log("CS0")
			If data(1) = 1 Then
				imgD0On.Initialize(File.DirAssets, "redledon.png")
				imgvLedD0.SetImage(imgD0On)
			Else
				imgD0Off.Initialize(File.DirAssets, "redledoff.png")
				imgvLedD0.SetImage(imgD0Off)
			End If
			Log("data1 = " & data(1))
			
		Case "S1"
			Log("CS1")
			If data(1) = 1 Then
				imgD1On.Initialize(File.DirAssets, "greenledon.png")
				imgvLedD1.SetImage(imgD1On)
			Else
				imgD1Off.Initialize(File.DirAssets, "greenledoff.png")
				imgvLedD1.SetImage(imgD1Off)
			End If
			Log(data(1))
			
		Case "S2"
			Log("CS2")
			If data(1) = 1 Then
				'imgvLedD2.Initialize("imgLedD2")
				imgD2On.Initialize(File.DirAssets, "blueledon.png")
				imgvLedD2.SetImage(imgD2On)
			Else
				'imgvLedD2.Initialize("imgLedD2")
				imgD2Off.Initialize(File.DirAssets, "blueledoff.png")
				imgvLedD2.SetImage(imgD2Off)
			End If
			Log(data(1))
			
	End Select
	ExitApplication
End Sub



'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
	Return True
End Sub