Messages handling basic class. Main objective of it is to handles received SliceMessage either by itself or by its owner object or class. When provided with SliceMessenger can be used to send messages.
SliceMessageBox constructor
| Name | type | Description |
|---|---|---|
| owner | object or class | SliceMessageBox owner, depending on settings can be used to handle SliceMessage |
| settings | object | Object with SliceMessageBox settings |
| messenger | SliceMessenger | when provided, SliceMessageBox can be used to send SliceMessage |
| subscribe | boolean | When true, will add created SliceMessageBox to the provided SliceMessenger |
// create SliceMessenger
const messenger = SliceMessengerFactory.create('myMessenger');
// create message box owner object
const myMessageBoxOwner = {
ownerMethodDefault: function(message) {
console.log('ownerMethodDefault' + message.name);
},
ownerMethod1: function(message) {
console.log('ownerMethod1: messageName1);
},
ownerMethod2: function(message) {
console.log('ownerMethod2: messageName2=' + message.data.prop1);
}
};
// create SliceMessageBox settings
const myMessageBoxSettings = {
// handlers list, with key as message name and value as handler settings
handlers: {
// full handler example
'messageName1': {
// defines who should handle message, false - owner will handle, true - message box
self: false, // boolean
// method name, that will be called to handle message
handler: 'ownerMethod1' // string
},
// short example, but do the same as full example
'messageName2': 'ownerMethod2'
},
// default handler, same rules as for handler settings
defaultHandler: {
// defines who should handle message, false - owner will handle, true - message box
self: false, // boolean
// method name, that will be called to handle message
handler: 'ownerMethodDefault' // string
}
};
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings, messenger, true);
// send messages to itself
myMessageBox.sendSelf('messageName1'); // will log 'ownerMethod1: messageName1'
myMessageBox.sendSelf('messageName2', {prop1: 'value1'}); // will log 'ownerMethod2: messageName2=value1'
myMessageBox.sendSelf('messageName3'); // will log 'ownerMethodDefault: messageName3'
myMessageBox.sendSelf('unknownMessage'); // will log 'ownerMethodDefault: unknownMessage'| Name | type | Description |
|---|---|---|
| owner | object or class | SliceMessageBox owner, depending on settings can be used to handle SliceMessage. |
| settings | object | Object with SliceMessageBox settings. |
| messenger | SliceMessenger | when provided, SliceMessageBox can be used to send SliceMessage. |
Set SliceMessenger, subscribe to it and unsbuscribe from pervious.
| Name | type | Description |
|---|---|---|
| messenger | SliceMessenger | SliceMessenger, that will be used to send messages. |
| subscribe | boolean | Add current message box to provided SliceMessenger or not. |
| unsubscribe | boolean | Remove current message box from previous SliceMessenger if any. |
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings);
// create messenger
const messenger1 = SliceMessengerFactory.create('myMessenger1');
// set messenger and subscribe to it
myMessageBox.setMessenger(messenger1, true);
// now it receives messages from messenger1 and can send messages through it
// create another messenger
const messenger2 = SliceMessengerFactory.create('myMessenger2');
// set messenger, but don't subscribe to it, and unsubscribe from messenger1
myMessageBox.setMessenger(messenger2, false, true);
// now it doesn't receive messages from messengers, but can send messages through messenger2Receive SliceMessage message and handle it, i.e. transmit it to the owner or handle by itself.
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings);
// create message
const myMessage = new SliceMessage('message', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});
// receive message
myMessageBox.receive(myMessage);Send message throught SliceMessenger and is a quirk for SliceMessenger.send.
If SliceMessenger wasn't provided with constructor or setMessenger method, will throw Error "Can't send message: no messenger provided."
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings, messenger);
// create message
myMessageBox.send('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});Send message to the current SliceMessenger only, is a quirk for SliceMessenger.sendSelf.
If SliceMessenger wasn't provided with constructor or setMessenger method, will throw Error "Can't send message: no messenger provided."
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings, messenger);
// create message
myMessageBox.sendSelf('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});Send message throught SliceMessenger to the current window/frame, is a quirk for SliceMessenger.sendCurrent.
If SliceMessenger wasn't provided with constructor or setMessenger method, will throw Error "Can't send message: no messenger provided."
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings, messenger);
// create message
myMessageBox.sendCurrent('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});Send message throught SliceMessenger to the current window/frame and outer receivers, is a quirk for SliceMessenger.sendEveryone.
If SliceMessenger wasn't provided with constructor or setMessenger method, will throw Error "Can't send message: no messenger provided."
// create message box
const myMessageBox = new SliceMessageBox(myMessageBoxOwner, myMessageBoxSettings, messenger);
// create message
myMessageBox.sendEveryone('myMessage', {
variable1: 'value1',
variable2: 'value2',
variableN: 'valueN'
});