Last updated

API / geotoolkit / scene / Node / Node

Class: Node

scene.Node.Node

The Node class is the abstract class parent of all geotoolkit shapes.

Node implements the functions required by a shape to be inserted in a Plot. (Except the render function which is Geotoolkit abstract method.)
Every Node has two transformations: World Transform and the Scene Transform.
WorldTransform corresponds to the concatenation of local and contents transforms
Scene Transform corresponds to the concatenation of a Node's World Transform with its parent's World Transforms or the ultimate transformation beween the group and the plot.

A node handles some of the invalidation mechanism as it forwards (upward) the invalidation event to its parent.
One may add an invalidationHandler to be notified when the node has been invalidated, see Node.addInvalidateHandler
When implementing a new shape, one will have to implement the render()function which allows rendering graphics.
Note that shape selection/detection is also using rendering.
It is also recommended to implement the checkCollision() function to let the toolkit optimize rendering by checking if the node is in the specified area and needs to be rendered.
If it passes the test then only render() function will be called.

The node class also introduces the functions getProperties and setProperties that may be used for serialization/deserialization.
Therefore, a custom shape should extend those functions to be able to be serialized and deserialized.

Hierarchy

Implements

Table of contents

Constructors
Methods
Css Properties
Name Type Description
cssclassstringThe css class name of this node
idstring | numberId of the node, its a unique identifier
namestringName of the node. It is often used for debugging purposes or to simplify queries
selectablebooleanSelectable node, a boolean to determine if selection should consider this node
taganyCustom information associated with node. It is a user object which can be used by client code to store information or attach an application object to the shape
visiblebooleanVisibility of the node, a boolean to determine if the node should be rendered or not
z-indexnumberDefine node z-index

Contents

Constructors

new Node(options)

Protected new Node(options?)

Create Node

Parameters

Name Type Description
Optional optionsOptionsoptions

Overrides

EventDispatcher.constructor

Methods

addCssClass

addCssClass(cssclass): Node

Adds new css class to node

Parameters

Name Type Description
cssclassstring | string[]css class name('s)

Returns

Node

this


addInvalidateHandler

addInvalidateHandler(handler): Node

Add invalidate handler

Deprecated

since 4.0, use Node.on instead

Parameters

Name Type Description
handlerFunctionhandler to be notified about invalidation

Returns

Node

this


checkCollision

checkCollision(context): boolean

Check if this node is within the area being rendered by the context

Parameters

Name Type Description
contextRenderingContextRendering Context

Returns

boolean

true if object is inside of renderable area


clone

clone(): Node

All subclasses should override copyConstructor or provide custom implementation for this method

Returns

Node

clone


connectStyle

connectStyle(style, type, callback): Node

Connects style.

This convenience method subscribes a listener to given style for the specified type.
And automatically un-subscribes listener if node is disposed to prevent memory leaks

Parameters

Name Type Description
styleEventDispatcherconnect style
typestringtype of event or property
callbackAttributeCallback<EventDispatcher>function to be called

Returns

Node

this

Implementation of

IStyleListener.connectStyle


copyConstructor

Protected copyConstructor(src, deepCopy?): Node

Copy constructor function.
Function used as part of the cloning mechanism.
Implementations should copy the given instance state to this instance.

Parameters

Name Type Description
srcNodeSource to copy from
Optional deepCopybooleandeep copy

Returns

Node

this


disconnectStyle

disconnectStyle(style, type, callback): Node

Disconnect style
This convenience method un-subscribes a listener to given style for the specified type.

Parameters

Name Type Description
styleEventDispatcherconnect style
typestringtype of event or property
callbackAttributeCallback<EventDispatcher>function to be called

Returns

Node

this

Implementation of

IStyleListener.disconnectStyle


dispose

dispose(): void

Disposes this node, once disposes a node should not be used anymore.
Clear all listeners, and disconnect styles to avoid memory leaks.
Also aggressively 'cleanup' this node by setting some of its members to null.

Returns

void

Overrides

EventDispatcher.dispose


enableEventPropagation

enableEventPropagation(enable): Node

Enable event propagation from the node hierarchy from bottom to top

This option is similar to DOM Event bubbling, which allows to get any event from child node. By default it is disabled for better performance.

Example

import {Group} from '@int/geotoolkit/scene/Group';
import {Events as SceneEvents} from '@int/geotoolkit/scene/Node';
const parentGroup = new Group()
.setName('ParentGroup')
.enableEventPropagation(true);
const childGroup = new Group()
.setName('ChildGroup');

parentGroup.addChild(childGroup);
parentGroup.on(SceneEvents.Invalidate, (eventName, sender, args) => {
// Got notifications from all children of parent group
});
childGroup.invalidate();

Parameters

Name Type Description
enablebooleanenable

Returns

Node

this


execute

execute(delegate): Node

Executes delegate and return the result. It allows us to keep all initialization calls in one place,
and we do not need to scroll up or down in IDE to find how and where it was initialized.

Example

// All setters (.setName() for example) returns reference to the this.
// In order to modify inner object like LineStyle or Pattern, to get this object (property) we should call getter to get object reference.
// Then modify it as shown below in Option 1 or you can use execute methods shown in Option 2.
import {Group} from '@int/geotoolkit/scene/Group';
import {Rect} from '@int/geotoolkit/util/Rect';
// Option 1
const group = new Group()
.setName('MyGroup')
.setBounds(new Rect(0, 0, 42, 16))
.enableClipping(true)
.setTag({'type': 'sometype'});

group.getLineStyle().setPattern('pattern');
return group;

// Options 2 ( using execute method )
return group
.execute(function () {
this.getLineStyle()
.setPattern("pattern");
});

Parameters

Name Type Description
delegate(this: Node) => voidFunction to execute

Returns

Node

The result if any or this

execute<T>(delegate): T

Type parameters

Name
T

Parameters

Name Type
delegate(this: Node) => T

Returns

T


getClassName

getClassName(): string

Returns

string

Inherited from

EventDispatcher.getClassName


getCssClass

getCssClass(): string

Returns css class name to be used to apply CSS style

Returns

string

the css class name


getCssClasses

getCssClasses(): string[]

Gets list of css class names which applied to this node

Returns

string[]


getId

getId(): string | number

Returns the associated identifier of the node

Returns

string | number

The node's id


getName

getName(): string

Returns the node name

Returns

string

The node name


getParent

getParent(): Node

Return parent node

Returns

Node

parent node


getProperties

getProperties(context?): Options

Gets all the properties pertaining to this object

Parameters

Name Type Description
Optional contextISerializationContextserialization context

Returns

Options

An object containing the properties to set


getProperty

getProperty(name): any

Gets dynamic property by name. These properties can be used as a property bags

Parameters

Name Type Description
namestringproperty name

Returns

any


getPropertyKeys

getPropertyKeys(): string[]

Returns known properties keys

Returns

string[]


getRoot

getRoot(): Node

Returns root node.
If node doesn't have parent then it returns itself.

Returns

Node

the root node


getSceneTransform

getSceneTransform(): Transformation

Returns transformation from node to root scene

Returns

Transformation

a transformation from node to root scene


getTag

getTag(): any

Returns the object associated with the node by user.

Returns

any

The node's user-object


getVisible

getVisible(): boolean

Return visibility of the node

Returns

boolean

true if node is visible


getWorldTransform

getWorldTransform(): Transformation

getWorldTransform retrieves the local transformation of the inner node coordinates to parent coordinates.

Returns

Transformation

the world transform.


getZIndex

getZIndex(): number

Returns node z-index (null if not set)

Returns

number


hasCssClass

hasCssClass(cssClass): boolean

Check if node has specified css class

Parameters

Name Type Description
cssClassstringcss class name

Returns

boolean


hasEventListener

hasEventListener(type, callback?): boolean

Check if a list of event listeners for this type contains this listener

Parameters

Name Type Description
typestringtype of event or property
Optional callbackFunctionto be called, if null, check if any callback is registered

Returns

boolean

Inherited from

EventDispatcher.hasEventListener


invalidate

invalidate(bounds?, force?): Node

Invalidate area of the shape. This method invalidates parent by default. invalidated from parent to root node.

Parameters

Name Type Description
Optional boundsRectbounds of the invalid rectangle in the inner node coordinates
Optional forcebooleantrue if parent should be invalidated immediately if null is provided then cache (if any will be completely refreshed) otherwise only specified rect or node.bounds will be refreshed

Returns

Node

this


invalidateParent

Protected invalidateParent(bounds?, force?): Node

Invalidate parent and notify all listeners. NOTE: Don't keep arguments of the event, because instance can be changed

Fires

Events.Invalidate

Parameters

Name Type Description
Optional boundsRectbounds of the invalid rectangle in the inner node coordinates
Optional forcebooleanforce rendering

Returns

Node

this


isDisposed

isDisposed(): boolean

Returns whether this object has been disposed

Returns

boolean

Inherited from

EventDispatcher.isDisposed


isEventPropagationEnabled

isEventPropagationEnabled(): boolean

Return true if event propagation is enabled from child to parent

Returns

boolean


isNotificationEnabled

isNotificationEnabled(): boolean

return state of notification

Returns

boolean

current notification state


isSelectable

isSelectable(): boolean

Returns true if node can be picked/selected.

Returns

boolean

The selectable flag


isSilent

isSilent(): boolean

Return true if the event dispatcher doesn't notify any events

Returns

boolean

Inherited from

EventDispatcher.isSilent


notify

notify<E>(event, source, args?): Node

Notify listeners of the Node

Type parameters

NameType
Eextends string

Parameters

Name Type Description
eventEtype of event
sourceNodesource who called the event
Optional argsEventMap[E]event arguments

Returns

Node

this

Overrides

EventDispatcher.notify


off

off<E>(type?, callback?): Node

Detach listener on event. Calling .off() with no arguments removes all attached listeners. Calling .off(type) with no callback removes all attached listeners for specific type.

Type parameters

NameType
Eextends string

Parameters

Name Type Description
Optional typeEtype of the event
Optional callback(eventType: E, sender: Node, args: EventMap[E]) => voidfunction to be called

Returns

Node

this

Overrides

EventDispatcher.off


on

on<E>(type, callback): Node

Attach listener on event that will be called whenever the specified event is delivered to the target

If the callback function is already in the list of event listeners for this target, the function is not added a second time.

If a particular anonymous function is in the list of event listeners registered for a certain target, and then later in the code, an identical anonymous function is given in an "on" call, the second function will also be added to the list of event listeners for that target.

Type parameters

NameType
Eextends string

Parameters

Name Type Description
typeEtype of event or property
callback(eventType: E, sender: Node, args: EventMap[E]) => voidto be called

Returns

Node

this

Overrides

EventDispatcher.on


onParentChanged

Protected onParentChanged(node): Node

This method is called when parent changes. Do not call it directly.

Parameters

Name Type Description
nodeNodenode to change parent

Returns

Node

this


onVisibilityChanged

Protected onVisibilityChanged(): void

This method is called if visibility is changed. Send event Events.VisibilityChanged

Returns

void


removeCssClass

removeCssClass(cssclass): Node

Removes css class from node

Parameters

Name Type Description
cssclassstring | string[]css class name('s)

Returns

Node

this


removeInvalidateHandler

removeInvalidateHandler(handler): Node

Remove invalidate handler

Deprecated

since 4.0, use Node.off instead

Parameters

Name Type Description
handlerFunctionhandler to be notified about invalidation

Returns

Node

this


render

Abstract render(context): void

Renders node

Parameters

Name Type Description
contextRenderingContextThe rendering context to be used to draw the node

Returns

void


renderAsync

renderAsync(context, callback): void

Render node in asynchronous mode. Default implementation creates call method "render" inside

Parameters

Name Type Description
contextRenderingContextThe rendering context to be used to draw the node
callback() => voidcallback function

Returns

void


setCssClass

setCssClass(name): Node

Sets css class name of the node to be used to apply CSS style

Parameters

Name Type Description
namestringcss class name of the node

Returns

Node

this


setId

setId(id): Node

Allows the user to associate any identifier

Parameters

Name Type Description
idstring | numberobject id

Returns

Node

this


setName

setName(name): Node

Sets name of the node

Parameters

Name Type Description
namestringThe node name

Returns

Node

this


setNotification

setNotification(notify, force?): Node

set notification state

Parameters

Name Type Description
notifybooleanflag set to invalidate parent or not
Optional forcebooleantrue if parent should be invalidated immediately

Returns

Node

this


setProperties

setProperties(properties?, context?): Node

Sets all the properties pertaining to this object

Parameters

Name Type Description
Optional propertiesOptionsAn object containing the properties to set
Optional contextIDeserializationContextdeserialization context

Returns

Node

this


setProperty

setProperty(name, value): Node

Sets dynamic property by name

Parameters

Name Type Description
namestringproperty name
valueanyproperty value

Returns

Node

this


setSelectable

setSelectable(selectable): Node

Allows to select node. If node is not selectable then child node is not selectable.

Parameters

Name Type Description
selectablebooleanflag to allow node selection

Returns

Node

this


setSilent

setSilent(bool): Node

Set silent mode

Parameters

Name Type Description
boolbooleanflag to enable silent mode

Returns

Node

this

Inherited from

EventDispatcher.setSilent


setTag

setTag(tag): Node

Allows the user to associate any arbitrary object with the node.

Parameters

Name Type Description
taganyThe object to be associated with the node.

Returns

Node

this


setVisible

setVisible(value): Node

Sets visibility of the node. Send event Events.VisibilityChanged

Parameters

Name Type Description
valuebooleanflag specifying visibility of the node

Returns

Node

this


setZIndex

setZIndex(value): Node

Sets z-index for node (set null for default)

Parameters

Name Type Description
valuenumberindex determining node z-position

Returns

Node

this


toString

toString(): string

Returns a string representation of this object (generally the classname)

Returns

string

A string representation


updateSceneTransformation

updateSceneTransformation(): Node

Update scene transformation

Returns

Node

this


updateState

updateState(regions?, changes?): Node

Update state. These methods reset node state and update state for children. this method is useful to refresh a scene graph

Parameters

Name Type Description
Optional regionsRect[]optional array to return invalid rectangles in the parent coordinates
Optional changesStateChangesoptional parameter to specify a reason of changes

Returns

Node

this


updateTimeStamp

Protected updateTimeStamp(): Node

Update time stamp to indicate that Node or Children has been changed.

Returns

Node

this


enableSceneGraphNotification

Static enableSceneGraphNotification(enabled): void

Enable / disable all notifications

Parameters

Name Type Description
enabledbooleansets if this object sends notifications

Returns

void


findParent

Static findParent<T>(node, classType, filter?): InstanceType<T>

Find root of the node with specified type

Type parameters

NameType
Textends Constructor<any>

Parameters

Name Type Description
nodeNodenode to start search
classTypeTtype of the class to search for
Optional filter(node: Node) => booleanadditional filter to apply

Returns

InstanceType<T>

Static findParent(node, classType, filter?): Node

Find root of the node with specified type

Parameters

Name Type Description
nodeNodenode to start search
classTypestringinterface name to search for
Optional filter(node: Node) => booleanadditional filter to apply

Returns

Node


getClassName

Static getClassName(): string

Returns

string

Inherited from

EventDispatcher.getClassName


isSceneGraphNotificationEnabled

Static isSceneGraphNotificationEnabled(): boolean

Return status of the global notification for all nodes.

Returns

boolean