BBjEnterpriseNamespace::setCallbackForVariableChange

Description

In BBj 13.00 and higher, this BBjEnterpriseNamespace method sets a callback that will be called whenever the specified variable is changed.

Syntax

Return Value

Method

void

setCallbackForVariableChange(String varName, String callbackName)

void

setCallbackForVariableChange(String varName, CustomObject customObj, String methodName)

void

setCallbackForVariableChange(String varName, Object object, String methodName)

Parameters

Variable

Description

varName

Specifies the name of the object being watched.

callbackName

Specifies the name of the callback to be called when the value changes.

customObj

Specifies a CustomObject that has a method which is to be called when value changes.

methodName

Specifies the method of the Object which is to be called.

object

Specifies a Java Object that has a method which is to be called when value changes.

Return Value

None.

Remarks

The callback set using setCallbackForVariableChange() will be called whenever the value for the specified variable is set to a new value that is different from its previous value. This is different from a callback set using the setCallbackForVariable(), which will only be called each time the value of a variable is set even if the new value is the same as the old value.

All callbacks that a program registered on a BBjEnterpriseNamespace are removed when that program executes START, STOP, END, or BEGIN. All callbacks registered by a BBj process are removed when the BBj process terminates.

Example

rem host and authentication information
host$="localhost"
port=2552
user$="admin"
password$="admin123"

sysgui! = bbjapi().openSysGui("X0")
window! = sysgui!.addWindow(200,200,200,100,"Enterprise NS",$02$)

namespace! =
bbjapi().getBBjEnterpriseNamespace(host$,port,"test",user$,password$)

REM set a callback that will be called if *any* value in namespace changes
namespace!.setCallbackForNamespaceChange("someValueChanged")

REM set a callback that will be called if the value changes
namespace!.setCallbackForVariableChange("x","xChanged")

REM set a callback that will be called if *any* value is
REM set (even if the value is not changed)
namespace!.setCallbackForNamespace("someValueSet")

REM set a callback that will be called if the value of x is set
REM (even if the values is not changed)
namespace!.setCallbackForVariable("x","xSet")

window!.setCallback(BBjWindow.ON_CLOSE,"OnClose")

process_events

OnClose:
REM  disable all callbacks
namespace!.enableCallbacks(0)
REM  and re-enable them
namespace!.enableCallbacks(1)

REM remove all callbacks
namespace!.removeCallbackForNamespace()
namespace!.removeCallbackForNamespaceChange()
namespace!.removeCallbackForVariableChange()
namespace!.removeCallbackForVariable()
release

someValueChanged:
x=MsgBox("some value in " + namespace!.getName() + " has changed")
return

someValueSet:
x=MsgBox("some value in " + namespace!.getName() + " has been set")
return

xChanged:
x=MsgBox("the value of x in " + namespace!.getName() + " has changed")
return

xSet:
x=MsgBox("the value of x in " + namespace!.getName() + " has been set")
return

ClosedVersion History

  • 25.03: Previously, this method could only accept a BBj CustomObject, but can now take any Java Object as a parameter.

See Also

BBjAPI

BBjEnterpriseNamespace

BBjNamespace

Object Variables

See the BBj Object Diagram for an illustration of the relationship between BBj Objects.