Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Dim t As Timer
Dim cnt As Int = 0
Dim lastevent As Long = 0
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.SetFormStyle("UNIFIED")
MainForm.Show
MainForm.RootPane.RequestFocus
t.Initialize("t",1000) ' use timer to check every second
t.Enabled = True
lastevent = DateTime.Now
' add listen to rootpane to monitor all controls on form
asJO(Me).RunMethod("listen",Array(MainForm.RootPane))
End Sub
Sub t_Tick
Log(cnt)
Dim ttime As Long = DateTime.Now
If (ttime - lastevent) > 10000 Then ' do something after 10 seconds of idle
Log("close app")
t.Enabled = False
Else
Log("last event was "& (ttime - lastevent)& "ms ago") ' optional for debugging
cnt = (ttime - lastevent)/1000
End If
End Sub
Sub asJO(o As JavaObject) As JavaObject
Return o
End Sub
#if java
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Node;
public static void listen(Node n){
n.addEventFilter(Event.ANY,
new EventHandler() {
@Override
public void handle(Event e) {
_lastevent = System.currentTimeMillis(); // _lastevent is lastevent in the b4j globals.
};
});
}
#end if