#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private textarea1 As TextArea
Private nb_line As Label
Private coordonate As Label
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
MainForm.Show
Dim jo As JavaObject = textarea1
textarea1.Text="line 1"&CRLF&"line 2"&CRLF&"line 2"&CRLF&"line 4"&CRLF&CRLF&"end line"
Dim event As Object = jo.CreateEventFromUI("javafx.beans.value.ChangeListener", "SelectionChanged", Null)
jo.RunMethodJO("selectionProperty", Null).RunMethod("addListener", Array(event))
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
Sub SelectionChanged_Event (MethodName As String, Args() As Object) As Object
If MethodName = "changed" Then
Dim IndexRange As JavaObject = Args(2)
Dim StartPosition As Int = IndexRange.RunMethod("getStart", Null)
'Dim EndPosition As Int = IndexRange.RunMethod("getEnd", Null)
' copy the text area to a list
Dim l As List
l.Initialize
l.AddAll(Regex.Split(CRLF, textarea1.text))
' echo the number of line excluding empty line at the end
nb_line.Text=l.size& " lines in text area"
Dim the_start,the_end,line,column As Int
Dim the_str As String =""
the_start = 0
the_end = 0
For i = 0 To l.Size-1
' get line length
the_str = l.Get(i)
the_end = the_start+the_str.Length
If StartPosition >= the_start And StartPosition <= the_end Then
line = i+1
column= StartPosition - the_start
End If
the_start = the_end+1
coordonate.Text ="line = "&line& " column = "&column
Next
End If
Return Null
End Sub