I'm violating DRY by using this code in every single B4XPage class:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Everybody knows that violating DRY is a code-smell, so I'm asking, how do I generalize this algorithm so I can call it like this from every B4XPage class:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
In App.bas:
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
...but this does not work, probably because of the "B4XPages.ClosePage(Me)," as "Me" isn't accurate in the App class.
What do I do to generalize this functionality? Or should I bother? I have less than 10 pages, but if I ever want to upgrade the key event processing...
Maybe Event has the info I need. I'll check. But if anybody has an idea, please let me know.
			
			
			
				B4X:
			
		
		
		Public Sub AddEscapeExit(ctl As Object)
    'allow Escape key to exit signin screen
    Dim r As Reflector
    r.Target = ctl
    r.AddEventFilter("keypressed","javafx.scene.input.KeyEvent.KEY_PRESSED")
End Sub
Sub KeyPressed_Filter (e As Event)
    Dim jo As JavaObject = e
    Dim keycode As String = jo.RunMethod("getCode", Null)
    If keycode = "ESCAPE" Then
        B4XPages.ClosePage(Me)
        e.Consume
    End If
End SubEverybody knows that violating DRY is a code-smell, so I'm asking, how do I generalize this algorithm so I can call it like this from every B4XPage class:
			
				B4X:
			
		
		
		Sub Main
    ...
    App.AddEscapeExit( myControl )
    ...
End SubIn App.bas:
			
				B4X:
			
		
		
		Public Sub AddEscapeExit(ctl As Object)
    'allow Escape key to exit signin screen
    Dim r As Reflector
    r.Target = ctl
    r.AddEventFilter("keypressed","javafx.scene.input.KeyEvent.KEY_PRESSED")
End Sub
Sub KeyPressed_Filter (e As Event)
    Dim jo As JavaObject = e
    Dim keycode As String = jo.RunMethod("getCode", Null)
    If keycode = "ESCAPE" Then
        B4XPages.ClosePage(Me)
        e.Consume
    End If
End Sub...but this does not work, probably because of the "B4XPages.ClosePage(Me)," as "Me" isn't accurate in the App class.
What do I do to generalize this functionality? Or should I bother? I have less than 10 pages, but if I ever want to upgrade the key event processing...
Maybe Event has the info I need. I'll check. But if anybody has an idea, please let me know.
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		