{div:style=display:none}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY (EXCEPT INSIDE THE DIV BELOW WITH ID=DESCRIPTION), UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO AUTO UPDATE THE CONTENT THROUGH THE DOC GENERATOR.\\		\\		Enter additional information related to this 'class' inside the \{div} macro with 'id=description'{div}
{div:id=description}{div}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Constants Summary{th}{tr}{tbody}{tr}{td}[String]{td}{td}[#ACTION]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#DATACHANGE]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#DOUBLECLICK]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#FOCUSGAINED]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#FOCUSLOST]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#FORM]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#MODIFIER_ALT]
Constant for the ALT modifier that can be returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#MODIFIER_CTRL]
Constant for the CTRL modifier that can be returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#MODIFIER_META]
Constant for the META modifier that can be returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#MODIFIER_SHIFT]
Constant for the SHIFT modifier that can be returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#NONE]
Constant returned by JSEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#ONDRAG]
Constant returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#ONDRAGEND]
Constant returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#ONDRAGOVER]
Constant returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#ONDROP]
Constant returned by JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#RIGHTCLICK]
Constant returned by JSEvent.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summary{th}{tr}{tbody}{tr}{td}[Object]{td}{td}[#data]
A data object that specific events can set, a user can set data back to the system for events that supports this.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#dataMimeType]
The event data mime type.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:width=80px|padding=0px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[Number]{td}{td}[#getDragResult]\()
Returns the result of the drag action.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getElementName]\()
returns the name of the element, can be null if the form was the source of the event.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getFormName]\()
returns the name of the form the element was placed on.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getModifiers]\()
Returns the modifiers of the event, see JSDNDEvent.{td}{tr}{tbody}{tbody}{tr}{td}[JSRecord]{td}{td}[#getRecord]\()
Returns the record of the event.{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#getSource]\()
returns the source component/element of the event.{td}{tr}{tbody}{tbody}{tr}{td}[Date]{td}{td}[#getTimestamp]\()
Returns the time the event occurred.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getType]\()
returns the dnd event type see the JSDNDEvents constants what it can return.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getX]\()
Returns the x position of the event, relative to the component that fired it, if applicable.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getY]\()
Returns the y position of the event, relative to the component that fired it, if applicable.{td}{tr}{tbody}{table}\\ 

{table:id=constant|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Constants Details{th}{tr}{tbody:id=ACTION}{tr:id=name}{td}h6.ACTION{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.ACTION) 
{
	// its an action event.
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=DATACHANGE}{tr:id=name}{td}h6.DATACHANGE{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.DATACHANGE) 
{
	// its a data change event
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=DOUBLECLICK}{tr:id=name}{td}h6.DOUBLECLICK{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.DOUBLECLICK) 
{
	// its a double click event.
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=FOCUSGAINED}{tr:id=name}{td}h6.FOCUSGAINED{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.FOCUSGAINED) 
{
	// its a focus gained event.
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=FOCUSLOST}{tr:id=name}{td}h6.FOCUSLOST{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.FOCUSLOST) 
{
	// its a focus lost event.
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=FORM}{tr:id=name}{td}h6.FORM{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.FORM) 
{
	// its a form event or command
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=MODIFIER_ALT}{tr:id=name}{td}h6.MODIFIER_ALT{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//test if the SHIFT modifier is used.
if (event.getModifiers() & JSDNDEvent.MODIFIER_SHIFT)
{
	//do shift action
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=MODIFIER_CTRL}{tr:id=name}{td}h6.MODIFIER_CTRL{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//test if the SHIFT modifier is used.
if (event.getModifiers() & JSDNDEvent.MODIFIER_SHIFT)
{
	//do shift action
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=MODIFIER_META}{tr:id=name}{td}h6.MODIFIER_META{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//test if the SHIFT modifier is used.
if (event.getModifiers() & JSDNDEvent.MODIFIER_SHIFT)
{
	//do shift action
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=MODIFIER_SHIFT}{tr:id=name}{td}h6.MODIFIER_SHIFT{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//test if the SHIFT modifier is used.
if (event.getModifiers() & JSDNDEvent.MODIFIER_SHIFT)
{
	//do shift action
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=NONE}{tr:id=name}{td}h6.NONE{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.NONE) 
{
	// type is not set.
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=ONDRAG}{tr:id=name}{td}h6.ONDRAG{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSDNDEvent.ONDRAG) 
{
	// its an ondrag event
	if (event.getElementName() == 'todragelement')
		return DRAGNDROP.COPY
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=ONDRAGEND}{tr:id=name}{td}h6.ONDRAGEND{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSDNDEvent.ONDRAGEND) 
{
	// its an on drag end event.
	// return true if the drop has been completed successfully
	return event.isDropSuccess(); 
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=ONDRAGOVER}{tr:id=name}{td}h6.ONDRAGOVER{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSDNDEvent.ONDRAGOVER) 
{
	// its an on drag over event.
	// return true if it over the right element.
	return event.getElementName() == 'candroponelement';
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=ONDROP}{tr:id=name}{td}h6.ONDROP{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSDNDEvent.ONDROP) 
{
	// its a on drop event.
	var element = elements[event.getElementName()];
	// do drop on element
	return true;
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=RIGHTCLICK}{tr:id=name}{td}h6.RIGHTCLICK{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSEvent.RIGHTCLICK) 
{
	// its a right click event.
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=data}{tr:id=name}{td}h6.data{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Object]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// A client design method that handles ondrag
if (event.getType() == JSEvent.ONDRAG)
{
     // the data is the selected elements array
     var elements = event.data;
     // only start a client design drag when there is 1 element
     if (elements.length == 1)
     {
     	return true;
     }
}

// code for a data drag method
event.data = "drag me!";
return DRAGNDROP.COPY;

// code for a data drop method
var data = event.data;
elemements[event.getElementName()].setText(data);
return true;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=dataMimeType}{tr:id=name}{td}h6.dataMimeType{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String]{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// only accept drag if data is a servoy record 
function onDragOver(event)
{
	if(event.dataMimeType.indexOf("application/x-servoy-record-object") == 0) return true;
	else return false;
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:width=100%|padding=0px}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=getDragResult}{tr:id=name}{td}h6.getDragResult{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Number]{span}{span:style=font-weight: bold;}getDragResult{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number] -- a DRAGNDROP constant, representing the result of the drag action{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
function onDragEnd(event)
{
	var dragResult = event.getDragResult();
	if(dragResult == DRAGNDROP.NONE)
	{
		// the drag was canceled
	}
	else if(dragResult == DRAGNDROP.COPY)
	{
		// the drag ended with a copy action
	}
	else if(dragResult == DRAGNDROP.MOVE)
	{
		// the drag ended with a move action
	}
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getElementName}{tr:id=name}{td}h6.getElementName{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}getElementName{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String] -- a String representing the element name.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getElementName() == 'myElement')
{
    elements[event.getElementName()].bgcolor = '#ff0000';
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getFormName}{tr:id=name}{td}h6.getFormName{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}getFormName{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String] -- a String representing the form name.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
forms[event.getFormName()].myFormMethod();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getModifiers}{tr:id=name}{td}h6.getModifiers{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Number]{span}{span:style=font-weight: bold;}getModifiers{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number] -- an int which holds the modifiers as a bitset.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//test if the SHIFT modifier is used.
if (event.getModifiers() & JSDNDEvent.MODIFIER_SHIFT)
{
	//do shift action
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRecord}{tr:id=name}{td}h6.getRecord{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[JSRecord]{span}{span:style=font-weight: bold;}getRecord{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[JSRecord] -- Record of the event{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
event.Record();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSource}{tr:id=name}{td}h6.getSource{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Object]{span}{span:style=font-weight: bold;}getSource{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Object] -- an Object representing the source of this event.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// cast to runtime text field (change to anoter kind of type if you know the type)
/** @type {RuntimeTextField} */
var source = event.getSource();
var sourceDataProvider = source.getDataProviderID();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getTimestamp}{tr:id=name}{td}h6.getTimestamp{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Date]{span}{span:style=font-weight: bold;}getTimestamp{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Date] -- a Date when this event happened.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
event.getTimestamp();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getType}{tr:id=name}{td}h6.getType{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[String]{span}{span:style=font-weight: bold;}getType{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[String] -- a String representing the type of this event.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
if (event.getType() == JSDNDEvent.ONDROP) 
{
	// it's a drop
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getX}{tr:id=name}{td}h6.getX{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Number]{span}{span:style=font-weight: bold;}getX{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number] -- an int representing the X position.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var x = event.getX();
var xPrevious = previousEvent.getX();
var movedXPixels = x -xPrevious;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getY}{tr:id=name}{td}h6.getY{td}{tr}{tr:id=sig}{td}{span:style=margin-right: 5px;}[Number]{span}{span:style=font-weight: bold;}getY{span}{span}\(){span}{td}{tr}{tr:id=ret}{td}*Returns*\\{div:class=sIndent}[Number] -- an int representing the Y position.{div}{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var y = event.getY();
var yPrevious = previousEvent.getY();
var movedYPixels = y -yPrevious;
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}