egroupware/api/js/egw_action/EgwActionObjectInterface.ts
milan 5e3c67a5cf converted egw_action from javascript to typescript
classes are now uppercase and in their own files. lowercase classes are deprecated.
Interfaces are now actual interfaces that should be implemented instead of creating and returning an ai Object every time
2023-07-10 16:54:22 +02:00

86 lines
2.9 KiB
TypeScript

/**
* EGroupware egw_action framework - egw action framework
*
* @link https://www.egroupware.org
* @author Andreas Stöckel <as@stylite.de>
* @copyright 2011 by Andreas Stöckel
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package egw_action
*/
/**
* The egwActionObjectInterface has to be implemented for each actual object in
* the browser. E.g. for the object "DataGridRow", there has to be an
* egwActionObjectInterface which is responsible for returning the outer DOMNode
* of the object to which JS-Events may be attached by the EgwActionImplementation
* object, and to do object specific stuff like highlighting the object in the
* correct way and to route state changes (like: "object has been selected")
* to the egwActionObject object the interface is associated to.
*
* @return {egwActionObjectInterface}
*/
export interface EgwActionObjectInterface {
//TODO abstract class might be better
//properties
_state: number;
stateChangeCallback: Function;
stateChangeContext: any;
reconnectActionsCallback: Function;
reconnectActionsContext: any;
//functions
/**
* Sets the callback function which will be called when a user interaction changes
* state of the object.
*
* @param {function} _callback
* @param {object} _context
*/
setStateChangeCallback(_callback: Function, _context: any): void;
/**
* Sets the reconnectActions callback, which will be called by the AOI if its
* DOM-Node has been replaced and the actions have to be re-registered.
*
* @param {function} _callback
* @param {object} _context
*/
setReconnectActionsCallback(_callback: Function, _context: any): void;
/**
* Will be called by the aoi if the actions have to be re-registered due to a
* DOM-Node exchange.
*/
reconnectActions(): void;
/**
* Internal function which should be used whenever the select status of the object
* has been changed by the user. This will automatically calculate the new state of
* the object and call the stateChangeCallback (if it has been set)
*
* @param {number} _stateBit is the bit in the state bit which should be changed
* @param {boolean} _set specifies whether the state bit should be set or not
* @param {boolean} _shiftState
*/
updateState(_stateBit: number, _set: boolean, _shiftState: boolean): void;
/**
* Returns the DOM-Node the ActionObject is actually a representation of.
* Calls the internal "doGetDOMNode" function, which has to be overwritten
* by implementations of this class.
*/
getDOMNode(): Element;
setState(_state: any): void;
getState(): number;
triggerEvent(_event: any, _data: any): boolean;
/**
* Scrolls the element into a visible area if it is currently hidden
*/
makeVisible(): void;
}