{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
\\ 

{table:id=|class=servoy sReturnTypes}{tr:style=height: 30px;}{th}Return Types{th}{tr}{tr}{td}{span:class=sWordList}[DRAGNDROP]{span}{span:class=sWordList}[JSDNDEvent]{span}{span:class=sWordList}[JSEvent]{span}{span:class=sWordList}[JSRenderEvent]{span}{span:class=sWordList}[JSWindow]{span}{span:class=sWordList}[APPLICATION_TYPES]{span}{span:class=sWordList}[CLIENTDESIGN]{span}{span:class=sWordList}[ELEMENT_TYPES]{span}{span:class=sWordList}[LOGGINGLEVEL]{span}{span:class=sWordList}[UICONSTANTS]{span}{span:class=sWordList}[WEBCONSTANTS]{span}{span:class=sWordList}[Renderable]{span}{span:class=sWordList}[UUID]{span}{td}{tr}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}void{td}{td}[#addClientInfo]\(info)
Adds a string of client information which gets stored on the server, 
and can be viewed on the Clients page of Servoy Server Administration Console.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#beep]\()
Produces a "beep" sound; commonly used to indicate an error or warning dialog.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#closeAllWindows]\()
Close all visible windows (except main application window).{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#closeSolution]\(\[solutionToLoad\], \[method\], \[argument\])
Closes the currently open solution and optionally opens another solution, calling a specified global method with the specified arguments.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#createNewFormInstance]\(designFormName, newInstanceScriptName)
Create a new form instance.{td}{tr}{tbody}{tbody}{tr}{td}[JSWindow]{td}{td}[#createWindow]\(windowName, type)
Creates a new window that can be used for displaying forms.{td}{tr}{tbody}{tbody}{tr}{td}[JSWindow]{td}{td}[#createWindow]\(windowName, type, parentWindow)
Creates a new window that can be used for displaying forms.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#executeProgram]\(programName(fullpath), \[arg1\], \[arg2\], \[argN\], \[#\], \[environmentvar1\], \[environmentvarN\], \[startdirectory\])
Execute a program and returns output.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#executeProgramInBackground]\(programName(fullpath), \[arg1\], \[arg2\], \[argN\], \[#\], \[environmentvar1\], \[environmentvarN\], \[startdirectory\])
Execute a program in the background.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#exit]\()
Stop and exit application.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getActiveClientCount]\(currentSolutionOnly)
Get the active user count on the server (can be limited to current solution).{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getApplicationType]\()
Get the application type.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getClientCountForInfo]\(info)
Gets the count for all clients displaying the same additional information 
in the Clients page of Servoy Server Administration Console.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getClipboardString]\()
Gets a string from the clipboard, null if not a string or empty.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getCurrentLookAndFeelName]\()
Gets the name of the current Look And Feel specified in Application Preferences.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getHostName]\()
Get the name of the localhost.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getIPAddress]\()
Get the clients' IP address.{td}{tr}{tbody}{tbody}{tr}{td}[String]\[]{td}{td}[#getLicenseNames]\()
Get the names of the used client licenses (as strings in array).{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getOSName]\()
Returns the name of the operating system.{td}{tr}{tbody}{tbody}{tr}{td}[String]\[]{td}{td}[#getPrinters]\()
Get all the printer names in an array.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getScreenHeight]\()
Get the screen height in pixels.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getScreenWidth]\()
Get the screen width in pixels.{td}{tr}{tbody}{tbody}{tr}{td}[Date]{td}{td}[#getServerTimeStamp]\()
Returns a date object initialized on server with current date and time.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getServerURL]\()
Gets the HTTP server url.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getSolutionName]\()
Returns the name of the current solution.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getSolutionRelease]\()
Get the solution release number.{td}{tr}{tbody}{tbody}{tr}{td}[Date]{td}{td}[#getTimeStamp]\()
Returns a date object initialized in client with current date and time.{td}{tr}{tbody}{tbody}{tr}{td}[UUID]{td}{td}[#getUUID]\(\[uuidStringOrByteArray\])
Get a new UUID object (also known as GUID) or convert the parameter (that can be string or byte array) to an UUID object.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getUserProperty]\(name)
Get a persistent user property.{td}{tr}{tbody}{tbody}{tr}{td}[String]\[]{td}{td}[#getUserPropertyNames]\()
Get all persistent user property names.{td}{tr}{tbody}{tbody}{tr}{td}[Array]{td}{td}[#getValueListArray]\(name)
Retrieve a valuelist as array, to get real\-values for display\-values.{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#getValueListDisplayValue]\(name, realValue)
Retrieve a valuelist display\-value for a real\-value.{td}{tr}{tbody}{tbody}{tr}{td}[JSDataSet]{td}{td}[#getValueListItems]\(name)
Get all values from a custom or database type value list as dataset (with columns displayValue,realValue).{td}{tr}{tbody}{tbody}{tr}{td}[String]\[]{td}{td}[#getValueListNames]\()
Get all the valuelist names as array.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#getVersion]\()
Returns the application version.{td}{tr}{tbody}{tbody}{tr}{td}[JSWindow]{td}{td}[#getWindow]\()
Get the main application window.{td}{tr}{tbody}{tbody}{tr}{td}[JSWindow]{td}{td}[#getWindow]\(name)
Get a window by window name.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#isInDeveloper]\()
Returns true if the solution is running in the developer.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#isLastPrintPreviewPrinted]\()
Check if the last printpreview did print.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#output]\(msg)
Output something on the out stream.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#output]\(msg, level)
Output something on the out stream.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#overrideStyle]\(originalStyleName, newStyleName)
Overrides one style (defined in in a form) with another.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#playSound]\(url)
Play a sound (AU file, an AIFF file, a WAV file, and a MIDI file).{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#redo]\()
Redo last action (if possible).{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#removeAllClientInfo]\()
Removes all names given to the client via the admin page.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeClientInfo]\(info)
Removes a string of client information which is stored on the server and
previously was added using the application.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setClipboardContent]\(string)
Sets a string object in the clipboard.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setNumpadEnterAsFocusNextEnabled]\(enabled)
Set if numpad enter should behave like focus next.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setStatusText]\(text)
Set the status area value.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setStatusText]\(text, tooltip)
Set the status area value.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setToolbarVisible]\(name, visible)
Make a toolbar visible or invisible.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#setUIProperty]\(name, value)
Sets a UI property.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setUserProperty]\(name, value)
Set a persistent user property.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setValueListItems]\(name, displayValArray/dataset, \[realValuesArray\], \[autoconvert(false)\])
Fill a custom type valuelist with values from array(s) or dataset.{td}{tr}{tbody}{tbody}{tr}{td}[Date]{td}{td}[#showCalendar]\(\[selecteddate\], \[dateformat\])
Show the calendar, returns selected date or null if canceled.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#showColorChooser]\(\[colorString\])
Show the colorChooser.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#showFontChooser]\(\[fontString\])
Show the font chooser dialog.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#showForm]\(form)
Show the form specified by the parameter, that can be a name (is case sensitive!) or a form object.{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#showI18NDialog]\(\[keyToSelect\], \[languageToSelect\])
Opens the i18n dialog so users can change translations.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#showURL]\(url, \[webclientTarget\], \[webclientTargetOptions/timeout\], \[timeout\])
Shows an URL in a browser.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#sleep]\(ms)
Sleep for specified time (in milliseconds).{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#undo]\()
Undo last action (if possible).{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#updateUI]\(\[milliseconds\])
Updates the UI (painting).{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=addClientInfo|class=node}{tr:id=name}{td}h6.addClientInfo{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}addClientInfo{span}{span:id=iets|style=float: left;}\(info){span}{td}{tr}{tr:id=des}{td}Adds a string of client information which gets stored on the server, 
and can be viewed on the Clients page of Servoy Server Administration Console.

The new piece of client information is added on behalf of the running 
Servoy client.

This function can be called more than once, if you want to add multiple
lines of client information.

NOTE: 
This function can also be used with the function <em>getClientCountForInfo</em>
to count the number of clients with matching addditional client information.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} info -- A line of text to be added as additional client information
             on behalf of the running Servoy client.
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.addClientInfo('SaaS company name');
application.addClientInfo('For any issues call +31-SA-AS');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=beep|class=node}{tr:id=name}{td}h6.beep{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}beep{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Produces a "beep" sound; commonly used to indicate an error or warning dialog.{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.beep();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=closeAllWindows|class=node}{tr:id=name}{td}h6.closeAllWindows{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}closeAllWindows{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Close all visible windows (except main application window). Returns true if operation was successful.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- Boolean true if all windows were closed and false otherwise.{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var win = application.createWindow("aWindowName", JSWindow.WINDOW, null);
win.setInitialBounds(10, 10, 300, 300);
win.title = "This is a window";
controller.show(win);

var win2 = application.createWindow("anotherWindowName", JSWindow.WINDOW, null);
win2.setInitialBounds(100, 100, 300, 300);
win2.title = "This is another window";
controller.show(win2);

var qdialog = plugins.dialogs.showQuestionDialog("QuestionDialog","Do you want to close the windows?","Yes","No");
if (qdialog == "Yes") {
	application.closeAllWindows();
 controller.show(null);
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=closeSolution|class=node}{tr:id=name}{td}h6.closeSolution{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}closeSolution{span}{span:id=iets|style=float: left;}\(\[solutionToLoad\], \[method\], \[argument\]){span}{td}{tr}{tr:id=des}{td}Closes the currently open solution and optionally opens another solution, calling a specified global method with the specified arguments.
If the user has been logged in, this function keeps the user logged in and in the newly open solution, the login is skipped and the solution goes straight to the first form.
If you want to go to a different url, you need to call application.showURL(url) before calling application.closeSolution() (this is only applicable for Web Client). 
An alternative option is security.logout() which also does a log out for the user (for solutions that require authentication).{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[solutionToLoad\] -- Name of the solution to load
\[method\] -- Name of the global method to call
\[argument\] -- Argument passed to the global method
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//application.showURL('http://www.servoy.com', '_self');  //Web Client only
application.closeSolution();
//close current solution, open solution 'solution_name', call global method 'global_method_name' with argument 'my_argument'.
//if the user has been logged in, he will stay logged in
//application.closeSolution('solution_name','global_method_name','my_argument');
//Note: specifying a solution will not work in the Developer due to debugger dependencies
//specified solution should be of compatible type with client (normal type or client specific(Smart client only/Web client only) type )
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createNewFormInstance|class=node}{tr:id=name}{td}h6.createNewFormInstance{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}createNewFormInstance{span}{span:id=iets|style=float: left;}\(designFormName, newInstanceScriptName){span}{td}{tr}{tr:id=des}{td}Create a new form instance.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} designFormName -- Name of the design form
\{[String]} newInstanceScriptName -- Name of the new form instance
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- Boolean (true) if the instance was created succesfully, (false) otherwise{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var ok = application.createNewFormInstance('orders','orders_view');
if (ok)
{
	application.showFormInDialog(forms.orders_view)
	//forms['orders_view'].controller.show()
	//forms.xyz.elements.myTabPanel.addTab(forms['orders_view'])
	//forms['orders_view'].elements.mylabel.setLocation(10,20)
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createWindow-String_Number|class=node}{tr:id=name}{td}h6.createWindow{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSWindow]{span}{span:id=iets|style=float: left; font-weight: bold;}createWindow{span}{span:id=iets|style=float: left;}\(windowName, type){span}{td}{tr}{tr:id=des}{td}Creates a new window that can be used for displaying forms. Initially the window is not visible.
If there is already a window with the given name, it will be closed and destroyed prior to creating the new window.
Use the form controller show() and showRecords() methods in order to show a form in this window.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} windowName -- the name of the window.
\{[Number]} type -- the type of the window. Can be one of JSWindow.DIALOG, JSWindow.MODAL\_DIALOG, JSWindow.WINDOW.
{td}{tr}{tr:id=ret}{td}*Returns*\\ [JSWindow] -- the newly created window.{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// create and show a window, with specified title, initial location and size
// type of the window can be one of JSWindow.DIALOG, JSWindow.MODAL_DIALOG, JSWindow.WINDOW
// If parentWindow is not specified, the current window will be used as parent; parentWindow parameter is only used by dialogs
var win = application.createWindow("windowName", JSWindow.WINDOW);
win.setInitialBounds(10, 10, 300, 300);
win.title = "This is a window";
controller.show(win);
// create and show a non-modal dialog with default initial bounds/title
var nmd = application.createWindow("nonModalDialogName", JSWindow.DIALOG);
controller.showRecords(15, nmd); // 15 is a single-number pk in this case
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=createWindow-String_Number_JSWindow|class=node}{tr:id=name}{td}h6.createWindow{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSWindow]{span}{span:id=iets|style=float: left; font-weight: bold;}createWindow{span}{span:id=iets|style=float: left;}\(windowName, type, parentWindow){span}{td}{tr}{tr:id=des}{td}Creates a new window that can be used for displaying forms. Initially the window is not visible.
If there is already a window with the given name, it will be closed and destroyed prior to creating the new window.
Use the form controller show() and showRecords() methods in order to show a form in this window.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} windowName -- the name of the window.
\{[Number]} type -- the type of the window. Can be one of JSWindow.DIALOG, JSWindow.MODAL\_DIALOG, JSWindow.WINDOW.
\{[JSWindow]} parentWindow -- the parent JSWindow object. If it is not specified, the current window will be used as parent. This parameter is only used by dialogs.
{td}{tr}{tr:id=ret}{td}*Returns*\\ [JSWindow] -- the newly created window.{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// create and show a window, with specified title, initial location and size
var win = application.createWindow("windowName", JSWindow.WINDOW);
win.setInitialBounds(10, 10, 300, 300);
win.title = "This is a window";
controller.show(win);
// create and show a non-modal dialog with default initial bounds/title
var nmd = application.createWindow("nonModalDialogName", JSWindow.DIALOG);
controller.showRecords(15, nmd); // 15 is a single-number pk in this case
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=executeProgram|class=node}{tr:id=name}{td}h6.executeProgram{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}executeProgram{span}{span:id=iets|style=float: left;}\(programName(fullpath), \[arg1\], \[arg2\], \[argN\], \[#\], \[environmentvar1\], \[environmentvarN\], \[startdirectory\]){span}{td}{tr}{tr:id=des}{td}Execute a program and returns output. Specify the cmd as you would do in a console.{td}{tr}{tr:id=prs}{td}*Parameters*\\programName(fullpath) -- Name of the program to execute
\[arg1\] -- Argument
\[arg2\] -- Argument
\[argN\] -- Argument
\[#\] -- Divider between program environment vars and startdir
\[environmentvar1\] -- Environment variable
\[environmentvarN\] -- Environment variable
\[startdirectory\] -- Program start directory
{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- The output generated by the program execution.{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// "#" is divider between program args, environment vars and startdir
// For Windows systems:
// Runs a binary located in the user's home directory. The application will run in the current working
// directory, which in general is the one where Servoy was started from.
application.executeProgram("c:\\Users\\myself\\myapp.exe", "arg1", "arg2", "arg3");
// The same as above, but run the application in the user's home directory. 
application.executeProgram("c:\\Users\\myself\\myapp.exe", "arg1", "arg2", "arg3", "#", "#", "c:\\Users\\myself\\");	
// The same as above, but also set an environment variable for the called program.
application.executeProgram("c:\\Users\\myself\\myapp.exe", "arg1", "arg2", "arg3", "#", "MY_ENV_VAR=something", "#", "c:\\Users\\myself\\");
// For non-Windows systems:
application.executeProgram("/home/myself/myapp", "arg1", "arg2", "arg3");
application.executeProgram("/home/myself/myapp", "arg1", "arg2", "arg3", "#", "#", "/home/myself/");	
application.executeProgram("/home/myself/myapp", "arg1", "arg2", "arg3", "#", "MY_ENV_VAR=something", "#", "/home/myself/myapp");
// Open a file with the default application associated with it. (on Windows)
application.executeProgram("rundll32.exe", "url.dll,FileProtocolHandler", "filename");	
// Open a file with the default application associated with it. (on Linux)
application.executeProgram("xdg-open", "filename");
// Open a file with the default application associated with it. (on MacOS)
application.executeProgram("open", "filename");
// Open a file with a specific application (on MacOS).
application.executeProgram("open", "-a", "OpenOffice.org.app", "filename.doc");
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=executeProgramInBackground|class=node}{tr:id=name}{td}h6.executeProgramInBackground{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}executeProgramInBackground{span}{span:id=iets|style=float: left;}\(programName(fullpath), \[arg1\], \[arg2\], \[argN\], \[#\], \[environmentvar1\], \[environmentvarN\], \[startdirectory\]){span}{td}{tr}{tr:id=des}{td}Execute a program in the background. Specify the cmd as you would do in a console.{td}{tr}{tr:id=prs}{td}*Parameters*\\programName(fullpath) -- Name of the program to execute
\[arg1\] -- Argument
\[arg2\] -- Argument
\[argN\] -- Argument
\[#\] -- Divider between program environment vars and startdir
\[environmentvar1\] -- Environment variable
\[environmentvarN\] -- Environment variable
\[startdirectory\] -- Program start directory
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// "#" is divider between program args, environment vars and startdir
// For Windows systems:
// Runs a binary located in the user's home directory. The application will run in the current working
// directory, which in general is the one where Servoy was started from.
application.executeProgramInBackground("c:\\Users\\myself\\myapp.exe", "arg1", "arg2", "arg3");
// The same as above, but run the application in the user's home directory. 
application.executeProgramInBackground("c:\\Users\\myself\\myapp.exe", "arg1", "arg2", "arg3", "#", "#", "c:\\Users\\myself\\");	
// The same as above, but also set an environment variable for the called program.
application.executeProgramInBackground("c:\\Users\\myself\\myapp.exe", "arg1", "arg2", "arg3", "#", "MY_ENV_VAR=something", "#", "c:\\Users\\myself\\");
// For non-Windows systems:
application.executeProgramInBackground("/home/myself/myapp", "arg1", "arg2", "arg3");
application.executeProgramInBackground("/home/myself/myapp", "arg1", "arg2", "arg3", "#", "#", "/home/myself/");	
application.executeProgramInBackground("/home/myself/myapp", "arg1", "arg2", "arg3", "#", "MY_ENV_VAR=something", "#", "/home/myself/myapp");	
// Open a file with the default application associated with it. (on Windows)
application.executeProgramInBackground("rundll32.exe", "url.dll,FileProtocolHandler", "filename");	
// Open a file with the default application associated with it. (on Linux)
application.executeProgramInBackground("xdg-open", "filename");
// Open a file with the default application associated with it. (on MacOS)
application.executeProgramInBackground("open", "filename");
// Open a file with a specific application (on MacOS).
application.executeProgramInBackground("open", "-a", "OpenOffice.org.app", "filename.doc");
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=exit|class=node}{tr:id=name}{td}h6.exit{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}exit{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Stop and exit application.{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// exit application
application.exit();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getActiveClientCount|class=node}{tr:id=name}{td}h6.getActiveClientCount{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getActiveClientCount{span}{span:id=iets|style=float: left;}\(currentSolutionOnly){span}{td}{tr}{tr:id=des}{td}Get the active user count on the server (can be limited to current solution).{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Boolean]} currentSolutionOnly -- Boolean (true) to get the active user count on server only to the current solution
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Number] -- Active user count on the server{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var count = application.getActiveClientCount(true);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getApplicationType|class=node}{tr:id=name}{td}h6.getApplicationType{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getApplicationType{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the application type.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Number] -- Constant application type{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var type = application.getApplicationType();
//see application type contstant
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getClientCountForInfo|class=node}{tr:id=name}{td}h6.getClientCountForInfo{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getClientCountForInfo{span}{span:id=iets|style=float: left;}\(info){span}{td}{tr}{tr:id=des}{td}Gets the count for all clients displaying the same additional information 
in the Clients page of Servoy Server Administration Console.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} info -- The additional client info string to search for.
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Number] -- Number of clients{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var count = application.getClientCountForInfo('SaaS company name');
application.output('Including yourself, there are ' + count + ' client(s) running on behalf of the company.');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getClipboardString|class=node}{tr:id=name}{td}h6.getClipboardString{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getClipboardString{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Gets a string from the clipboard, null if not a string or empty.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- The string from the clipboard{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var fromClipboard = application.getClipboardString();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getCurrentLookAndFeelName|class=node}{tr:id=name}{td}h6.getCurrentLookAndFeelName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getCurrentLookAndFeelName{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Gets the name of the current Look And Feel specified in Application Preferences.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- Current Look And Feel{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var laf = application.getCurrentLookAndFeelName();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getHostName|class=node}{tr:id=name}{td}h6.getHostName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getHostName{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the name of the localhost.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- Name of the localhost{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var hostName = application.getHostName();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getIPAddress|class=node}{tr:id=name}{td}h6.getIPAddress{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getIPAddress{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the clients' IP address.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- IP address of the client{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var ip = application.getIPAddress();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getLicenseNames|class=node}{tr:id=name}{td}h6.getLicenseNames{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getLicenseNames{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the names of the used client licenses (as strings in array).{td}{tr}{tr:id=ret}{td}*Returns*\\ [String]\[] -- Client licenses names{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var array = application.getLicenseNames();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getOSName|class=node}{tr:id=name}{td}h6.getOSName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getOSName{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Returns the name of the operating system.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- Name of the operating system{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var osname = application.getOSName();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getPrinters|class=node}{tr:id=name}{td}h6.getPrinters{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getPrinters{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get all the printer names in an array.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String]\[] -- All printer names{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var printersArray = application.getPrinters();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getScreenHeight|class=node}{tr:id=name}{td}h6.getScreenHeight{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getScreenHeight{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the screen height in pixels.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Number] -- Screen height{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var height = application.getScreenHeight();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getScreenWidth|class=node}{tr:id=name}{td}h6.getScreenWidth{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getScreenWidth{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the screen width in pixels.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Number] -- Screen width{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var width = application.getScreenWidth();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getServerTimeStamp|class=node}{tr:id=name}{td}h6.getServerTimeStamp{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Date]{span}{span:id=iets|style=float: left; font-weight: bold;}getServerTimeStamp{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Returns a date object initialized on server with current date and time.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Date] -- Server time{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var servertime = application.getServerTimeStamp();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getServerURL|class=node}{tr:id=name}{td}h6.getServerURL{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getServerURL{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Gets the HTTP server url.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- HTTP server URL{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var url = application.getServerURL();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSolutionName|class=node}{tr:id=name}{td}h6.getSolutionName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getSolutionName{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Returns the name of the current solution.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- Current solution name{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var solutionName = application.getSolutionName();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSolutionRelease|class=node}{tr:id=name}{td}h6.getSolutionRelease{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getSolutionRelease{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the solution release number.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Number] -- Current solution release number{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var release = application.getSolutionRelease();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getTimeStamp|class=node}{tr:id=name}{td}h6.getTimeStamp{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Date]{span}{span:id=iets|style=float: left; font-weight: bold;}getTimeStamp{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Returns a date object initialized in client with current date and time.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Date] -- Current time at the client{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var clienttime = application.getTimeStamp();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUUID|class=node}{tr:id=name}{td}h6.getUUID{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[UUID]{span}{span:id=iets|style=float: left; font-weight: bold;}getUUID{span}{span:id=iets|style=float: left;}\(\[uuidStringOrByteArray\]){span}{td}{tr}{tr:id=des}{td}Get a new UUID object (also known as GUID) or convert the parameter (that can be string or byte array) to an UUID object. A table column marked as UUID will work with such objects.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[uuidStringOrByteArray\] -- String or byte array representing an uuid
{td}{tr}{tr:id=ret}{td}*Returns*\\ [UUID] -- The new UUID object{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var new_uuid_object = application.getUUID(); // generate new uuid object
var uuid_object1 = application.getUUID(new_uuid_object.toString()); // convert a string representing an uuid to an uuid object
var uuid_object2 = application.getUUID(new_uuid_object.toBytes());  // convert a byte array representing an uuid to an uuid object
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUserProperty|class=node}{tr:id=name}{td}h6.getUserProperty{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getUserProperty{span}{span:id=iets|style=float: left;}\(name){span}{td}{tr}{tr:id=des}{td}Get a persistent user property.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- Name of the property
{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- Property value{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var value = application.getUserProperty('showOrders');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getUserPropertyNames|class=node}{tr:id=name}{td}h6.getUserPropertyNames{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getUserPropertyNames{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get all persistent user property names.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String]\[] -- Array of all user property names{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// display all user properties
allPropertyNames = application.getUserPropertyNames();
for(var i = 0; i < allPropertyNames.length; i++)
		application.output(allPropertyNames[i] + " = " + application.getUserProperty(allPropertyNames[i]));
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getValueListArray|class=node}{tr:id=name}{td}h6.getValueListArray{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Array]{span}{span:id=iets|style=float: left; font-weight: bold;}getValueListArray{span}{span:id=iets|style=float: left;}\(name){span}{td}{tr}{tr:id=des}{td}Retrieve a valuelist as array, to get real\-values for display\-values.
NOTE: this doesn't return a value for a valuelist that depends on a database relation or is a global method valuelist.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- The name of the valuelist
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Array] -- Named array for the valuelist{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var packet_types = application.getValueListArray('packet_types');
if (a_realValue == packet_types['displayValue'])
{
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getValueListDisplayValue|class=node}{tr:id=name}{td}h6.getValueListDisplayValue{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]{span}{span:id=iets|style=float: left; font-weight: bold;}getValueListDisplayValue{span}{span:id=iets|style=float: left;}\(name, realValue){span}{td}{tr}{tr:id=des}{td}Retrieve a valuelist display\-value for a real\-value.
NOTE: this doesn't return a value for a valuelist that depends on a database relation or is a global method valuelist.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- Name of the valuelist
\{[Object]} realValue -- Real value of the valuelist
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Object] -- Display value of the real value from the valuelist{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var displayable_status = application.getValueListDisplayValue('case_status',status);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getValueListItems|class=node}{tr:id=name}{td}h6.getValueListItems{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSDataSet]{span}{span:id=iets|style=float: left; font-weight: bold;}getValueListItems{span}{span:id=iets|style=float: left;}\(name){span}{td}{tr}{tr:id=des}{td}Get all values from a custom or database type value list as dataset (with columns displayValue,realValue).
NOTE: this doesn't return a value for a valuelist that depends on a database relation or is a global method valuelist.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- Name of the valuelist
{td}{tr}{tr:id=ret}{td}*Returns*\\ [JSDataSet] -- DataSet with valuelist's display values and real values{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//Note:see databaseManager.JSDataSet for full details of dataset
var dataset = application.getValueListItems('my_en_types');
//example to calc a strange total
global_total = 0;
for( var i = 1 ; i <= dataset.getMaxRowIndex() ; i++ )
{
		global_total = global_total + dataset.getValue(i,1);
}
//example to assign to dataprovider
//employee_salary = dataset.getValue(1,1)
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getValueListNames|class=node}{tr:id=name}{td}h6.getValueListNames{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getValueListNames{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get all the valuelist names as array.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String]\[] -- Array with all valuelist names{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var array = application.getValueListNames();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getVersion|class=node}{tr:id=name}{td}h6.getVersion{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getVersion{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Returns the application version.{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- Application version{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.getVersion();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getWindow|class=node}{tr:id=name}{td}h6.getWindow{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSWindow]{span}{span:id=iets|style=float: left; font-weight: bold;}getWindow{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Get the main application window.{td}{tr}{tr:id=ret}{td}*Returns*\\ [JSWindow] -- the main application JSWindow.{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// close and dispose window resources
var mainAppWindow = application.getWindow();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getWindow-String|class=node}{tr:id=name}{td}h6.getWindow{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSWindow]{span}{span:id=iets|style=float: left; font-weight: bold;}getWindow{span}{span:id=iets|style=float: left;}\(name){span}{td}{tr}{tr:id=des}{td}Get a window by window name. When not supplying a name, the main application window is grabbed.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- the name of the window. If not specified, the main application JSWindow will be returned.
{td}{tr}{tr:id=ret}{td}*Returns*\\ [JSWindow] -- the JSWindow with the specified name, or null if no such window exists.{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// close and dispose window resources
var win = application.getWindow("someWindowName");
if (win != null) {
	win.destroy();
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=isInDeveloper|class=node}{tr:id=name}{td}h6.isInDeveloper{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}isInDeveloper{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Returns true if the solution is running in the developer.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- Boolean (true) if the solution is running in the developer, (false) otherwise{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var flag = application.isInDeveloper();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=isLastPrintPreviewPrinted|class=node}{tr:id=name}{td}h6.isLastPrintPreviewPrinted{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}isLastPrintPreviewPrinted{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Check if the last printpreview did print.{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- Boolean (true) is the last print preview did print, (false) otherwise{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//attached this method to onShow on the form being shown after printpreview
//set a global called globals.showPrintPreview to 1 in the onPrintPreview method
if (globals.showPrintPreview == 1)
{
globals.showPrintPreview = 0;//clear for next time
	if (application.isLastPrintPreviewPrinted())
	{
		plugins.dialogs.showInfoDialog('Alert',  'There is printed in printpreview',  'OK')
	}
}
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=output-Object|class=node}{tr:id=name}{td}h6.output{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}output{span}{span:id=iets|style=float: left;}\(msg){span}{td}{tr}{tr:id=des}{td}Output something on the out stream. (if running in debugger view output console tab){td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Object]} msg -- Object to send to output stream
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// log level is used to determine how/if to log in servoy_log.txt; for smart client java out and err streams are used
application.output('my very important trace msg');// default log level: info
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=output-Object_Number|class=node}{tr:id=name}{td}h6.output{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}output{span}{span:id=iets|style=float: left;}\(msg, level){span}{td}{tr}{tr:id=des}{td}Output something on the out stream. (if running in debugger view output console tab){td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Object]} msg -- Object to send to output stream
\{[Number]} level -- the log level where it should log to.
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
// log level is used to determine how/if to log in servoy_log.txt; for smart client java out and err streams are used
application.output('my very important msg',LOGGINGLEVEL.ERROR);// log level: error
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=overrideStyle|class=node}{tr:id=name}{td}h6.overrideStyle{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}overrideStyle{span}{span:id=iets|style=float: left;}\(originalStyleName, newStyleName){span}{td}{tr}{tr:id=des}{td}Overrides one style (defined in in a form) with another.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} originalStyleName -- Name of the style to override
\{[String]} newStyleName -- Name of the new style
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//This function will only have effect on  forms not yet created, so solution onLoad is the best place to override'
//For example overriding the use of default/designed style anywhere in the solution from 'mystyle' to 'mystyle_mac'
application.overrideStyle('mystyle','mystyle_mace')//in this case both styles should have about the same classes
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=playSound|class=node}{tr:id=name}{td}h6.playSound{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}playSound{span}{span:id=iets|style=float: left;}\(url){span}{td}{tr}{tr:id=des}{td}Play a sound (AU file, an AIFF file, a WAV file, and a MIDI file).{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} url -- URL of the sound file
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.playSound('media:///click.wav');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=redo|class=node}{tr:id=name}{td}h6.redo{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}redo{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Redo last action (if possible).{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.redo();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeAllClientInfo|class=node}{tr:id=name}{td}h6.removeAllClientInfo{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}removeAllClientInfo{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Removes all names given to the client via the admin page.{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.removeAllClientInfo();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeClientInfo|class=node}{tr:id=name}{td}h6.removeClientInfo{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}removeClientInfo{span}{span:id=iets|style=float: left;}\(info){span}{td}{tr}{tr:id=des}{td}Removes a string of client information which is stored on the server and
previously was added using the application.addClientInfo('client info')

This function can be called more than once, if you want to delete multiple
lines of client information.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} info -- A line of text to be removed from the client information
             on behalf of the running Servoy client.
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- boolean indicator if info was removed successfully{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var removed = application.removeClientInfo('SaaS company name');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setClipboardContent|class=node}{tr:id=name}{td}h6.setClipboardContent{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setClipboardContent{span}{span:id=iets|style=float: left;}\(string){span}{td}{tr}{tr:id=des}{td}Sets a string object in the clipboard.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Object]} string -- New content of the clipboard
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.setClipboardContent('test');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setNumpadEnterAsFocusNextEnabled|class=node}{tr:id=name}{td}h6.setNumpadEnterAsFocusNextEnabled{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setNumpadEnterAsFocusNextEnabled{span}{span:id=iets|style=float: left;}\(enabled){span}{td}{tr}{tr:id=des}{td}Set if numpad enter should behave like focus next.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Boolean]} enabled -- Boolean (true) if numpad enter should behave like focus next
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.setNumpadEnterAsFocusNextEnabled(true);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setStatusText-String|class=node}{tr:id=name}{td}h6.setStatusText{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setStatusText{span}{span:id=iets|style=float: left;}\(text){span}{td}{tr}{tr:id=des}{td}Set the status area value.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} text -- New status text
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.setStatusText('Your status text');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setStatusText-String_String|class=node}{tr:id=name}{td}h6.setStatusText{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setStatusText{span}{span:id=iets|style=float: left;}\(text, tooltip){span}{td}{tr}{tr:id=des}{td}Set the status area value.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} text -- New status text
\{[String]} tooltip -- Status tooltip text
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.setStatusText('Your status text','Your status tooltip text');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setToolbarVisible|class=node}{tr:id=name}{td}h6.setToolbarVisible{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setToolbarVisible{span}{span:id=iets|style=float: left;}\(name, visible){span}{td}{tr}{tr:id=des}{td}Make a toolbar visible or invisible.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- Name of the toolbar
\{[Boolean]} visible -- Visibility of the toolbar
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//example: hide the text toolbar
application.setToolbarVisible('text',false);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setUIProperty|class=node}{tr:id=name}{td}h6.setUIProperty{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}setUIProperty{span}{span:id=iets|style=float: left;}\(name, value){span}{td}{tr}{tr:id=des}{td}Sets a UI property.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Object]} name -- Name of the UI property
\{[Object]} value -- New value of the UI property
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- Boolean (true) if the UI property was set with the new value{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//Only use this function from the solution on open method!
//In smart client, use this to set javax.swing.UIDefaults properties.
application.setUIProperty('ToolTip.hideAccelerator', true)
//To change the comboboxes selection background color, do this:
application.setUIProperty('ComboBox.selectionBackground', new Packages.javax.swing.plaf.ColorUIResource(java.awt.Color.RED)) 


//In web client, use this to change the template directory.
//To change the default dir of templates/default to templates/green_skin, do this:
application.setUIProperty('templates.dir','green_skin');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setUserProperty|class=node}{tr:id=name}{td}h6.setUserProperty{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setUserProperty{span}{span:id=iets|style=float: left;}\(name, value){span}{td}{tr}{tr:id=des}{td}Set a persistent user property.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[String]} name -- Name of the user property
\{[String]} value -- New value of the user property
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.setUserProperty('showOrders','1');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setValueListItems|class=node}{tr:id=name}{td}h6.setValueListItems{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setValueListItems{span}{span:id=iets|style=float: left;}\(name, displayValArray/dataset, \[realValuesArray\], \[autoconvert(false)\]){span}{td}{tr}{tr:id=des}{td}Fill a custom type valuelist with values from array(s) or dataset.{td}{tr}{tr:id=prs}{td}*Parameters*\\name -- Name of the valuelist
displayValArray/dataset -- Display values array or DataSet
\[realValuesArray\] -- Real values array
\[autoconvert(false)\] -- Boolean (true) if display values and return values should be converted to numbers
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//set display values (return values will be same as display values)
application.setValueListItems('my_en_types',new Array('Item 1', 'Item 2', 'Item 3'));
//set display values and return values (which are stored in dataprovider)
//application.setValueListItems('my_en_types',new Array('Item 1', 'Item 2', 'Item 3'),new Array(10000,10010,10456));
//set display values and return values converted to numbers
//application.setValueListItems('my_en_types',new Array('Item 1', 'Item 2', 'Item 3'),new Array('10000','10010', '10456'), true);
//do query and fill valuelist (see databaseManager for full details of queries/dataset)
//var query = 'select display_value,optional_real_value from test_table';
//var dataset = databaseManager.getDataSetByQuery(databaseManager.getDataSourceServerName(controller.getDataSource()), query, null, 25);

//application.setValueListItems('my_en_types',dataset);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=showCalendar|class=node}{tr:id=name}{td}h6.showCalendar{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Date]{span}{span:id=iets|style=float: left; font-weight: bold;}showCalendar{span}{span:id=iets|style=float: left;}\(\[selecteddate\], \[dateformat\]){span}{td}{tr}{tr:id=des}{td}Show the calendar, returns selected date or null if canceled.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[selecteddate\] -- Default selected date
\[dateformat\] -- Date format
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Date] -- Selected date or null if canceled{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var selectedDate = application.showCalendar();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=showColorChooser|class=node}{tr:id=name}{td}h6.showColorChooser{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}showColorChooser{span}{span:id=iets|style=float: left;}\(\[colorString\]){span}{td}{tr}{tr:id=des}{td}Show the colorChooser. Returned value is in format #RRGGBB or null if canceled.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[colorString\] -- Default color
{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- selected color or null if canceled{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var selectedColor = application.showColorChooser();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=showFontChooser|class=node}{tr:id=name}{td}h6.showFontChooser{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}showFontChooser{span}{span:id=iets|style=float: left;}\(\[fontString\]){span}{td}{tr}{tr:id=des}{td}Show the font chooser dialog. Returns the selected font.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[fontString\] -- Default font
{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- selected font{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
var selectedFont = application.showFontChooser();
elements.myfield.font = selectedFont
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=showForm|class=node}{tr:id=name}{td}h6.showForm{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}showForm{span}{span:id=iets|style=float: left;}\(form){span}{td}{tr}{tr:id=des}{td}Show the form specified by the parameter, that can be a name (is case sensitive!) or a form object.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Object]} form -- Form object or name
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.showForm('MyForm');
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=showI18NDialog|class=node}{tr:id=name}{td}h6.showI18NDialog{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}showI18NDialog{span}{span:id=iets|style=float: left;}\(\[keyToSelect\], \[languageToSelect\]){span}{td}{tr}{tr:id=des}{td}Opens the i18n dialog so users can change translations. Returns the key selected by the user (not it's translation)  or null if cancel is pressed. Optional parameters specify the initial selections in the dialog.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[keyToSelect\] -- Default selected key
\[languageToSelect\] -- Default selected language
{td}{tr}{tr:id=ret}{td}*Returns*\\ [String] -- selected I18N key or null if cancel is pressed{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.showI18NDialog("servoy.button.close", "en");
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=showURL|class=node}{tr:id=name}{td}h6.showURL{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}showURL{span}{span:id=iets|style=float: left;}\(url, \[webclientTarget\], \[webclientTargetOptions/timeout\], \[timeout\]){span}{td}{tr}{tr:id=des}{td}Shows an URL in a browser.{td}{tr}{tr:id=prs}{td}*Parameters*\\url -- URL to show
\[webclientTarget\] -- Target frame or named dialog/window
\[webclientTargetOptions/timeout\] -- Dialog options used when a dialog is specified / a timeout in seconds when the url should be shown
\[timeout\] -- A timeout in seconds when the url should be shown
{td}{tr}{tr:id=ret}{td}*Returns*\\ [Boolean] -- Boolean (true) if URL was shown{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.showURL('http://www.example.com');

//webclient specific additional parameters...
//2nd parameter: target frame or named dialog/window, so its possible to control in which (internal) frame or dialog the url is loaded, '_self' is current window,'_blank' is new dialog, '_top' is main window
//3rd parameter: dialog options used when a dialog is specified, example: 'height=200,width=400,status=yes,toolbar=no,menubar=no,location=no'
//3th or 4th parameter: a timeout in seconds when the url should be shown, immediantly/0 is default'
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sleep|class=node}{tr:id=name}{td}h6.sleep{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}sleep{span}{span:id=iets|style=float: left;}\(ms){span}{td}{tr}{tr:id=des}{td}Sleep for specified time (in milliseconds).{td}{tr}{tr:id=prs}{td}*Parameters*\\ \{[Number]} ms -- Sleep time in milliseconds
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
//Sleep for 3 seconds
application.sleep(3000);
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=undo|class=node}{tr:id=name}{td}h6.undo{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}undo{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}Undo last action (if possible).{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.undo();
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=updateUI|class=node}{tr:id=name}{td}h6.updateUI{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}updateUI{span}{span:id=iets|style=float: left;}\(\[milliseconds\]){span}{td}{tr}{tr:id=des}{td}Updates the UI (painting). If in a script an element changed and the script continues doing 
things, you can give an number in ms how long this can take.{td}{tr}{tr:id=prs}{td}*Parameters*\\ \[milliseconds\] -- How long the update should take in milliseconds
{td}{tr}{tr:id=ret}{td}*Returns*\\void{td}{tr}{tr:id=sam}{td}*Sample*\\{div:class=sIndent}{code:language=javascript}
application.updateUI(500);
//continue doing things
{code}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}