Child pages
  • New in 7.0

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Code completion inside JSDoc for supported JSDoc tags and on Types (type '@' first, then Control-Space). Supported tags:
    • @AllowToRunInFind
    • @author {userName}
    • @constructor
    • @deprecated
    • @example
    • @param {Type} name
    • @private
    • @protected
    • @return {Type}
    • @see
    • @since
    • @SuppressWarnings (warning)
    • @throws {Type}
    • @type {Type}
    • @version
  • Support for automatically creating the basic JSDoc tags for an existing function: See context menu of the Script Editor > Source > Generate Element Comment (Alt-Shift-J) 
  • Support for inline JSDoc to provide type information for objects: 
    Code Block
    function demo(){
       /** @type {JSFoundSet<db:/udm/contacts>}*/
       var x = databaseManager.getFoundset('udm', 'contacts');
       x. //Code-completion here will know that x is a FoundSet on table Contacts in the UDM database, thus will include all columns, calculations and aggregates
    }
  • Support for the @deprecated tag: When a variable or function is marked as deprecated any reference to the object will generate a builder marker
  • Support for the @private tag: Hides the object for access from outside the current scope, including child scopes. Accessing the hidden object from outside the scope in which it is defined will generate a builder marker
  • Support for the @protected tag: Hides the object for access from outside the current scope. Accessing the hidden object from outside the scope in which it is defined will generate a builder marker 
  • Support for typed Arrays: 
    • Wiki Markup
      @type \{String\[\]}
    • @type {Array<String>}
    • @type {Array<Byte>}
  • Support for types Objects:
    • @type {Object<String>}
    • Wiki Markup
      @type \{Object<Array<String>>}: equivalent of \{\['one', 'two', 'three'\], \['four', 'five', 'six'\], \['seven', 'eight', 'nine'\]}
  • Support for typing JSFoundSets and JSRecord to be of a specific datasource: 
    • @type {JSFoundset<datasource>}
    • @type {JSRecord<datasource>}
      (a datasource string is build up like this: "db:/{serverName}/{tableName}", for example "db:/udm/contacts")
  • Support for typing as a RecordType:
    • @type {JSDataSet<{name:String,age:Number}>}
    • @param name:String,age:Number person A JavaScript object with a name and age property representing a person
  • Support for OR typing of parameters: "@param {String|Number} name description" 

...

  • Support added for "Mark Occurrences": highlights all occurrences of a the selected work in the Script Editor. Also see Window > Preferences > JavaScript > Editor > Mark Occurrences
  • Support for Call Hierarchy on Methods: When invoked on a function declaration or reference (through keyboard shortcut Control-Alt-H), the Call Hierarchy view is opened and shows the method call hierarchy.
  • Better support for Code completion on advanced JavaScript code structures
  • Added support for Content Assist - Parameter Hints (Control-Shift-Space): Shows a tooltip with the function's parameters with their types, when invoked withing the parameter area of the function declaration "(...)". When the function is overloaded, first a popup is shown to select a specific variant:

...

  • Fixed expand/collapse behavior when saving the Script Editor after adding new variables or functions
  • Made it possible to collapse/expand the multi-line content of variables (multi-line Strings, XML, Functions and Objects)
  • Added support for putting comments in script files (.js files) outside functions and outside JSDoc tags linked to variables and functions. Note that the comments are lost in the following scenario's:
    • When using Servoy Repository for team development: The Servoy Repository stores individual variables and functions, so anything else in the .js file is lost. Solution: use SVN instead which is file-based
    • When exporting the Solution to a .servoy file: just like the Servoy Repository, the .servoy export format only contains the individual variables and functions. When the .servoy file is used to move a Solution from development into test/Q&A/production, there should be no issue loosing the comments. However, if the .servoy export is going to be used to transport the source into another workspace/development environment, the loss of the extra information could be unwanted. In this case the solution would be:
      1. Share sourcecode between different developers by allowing (anonymous) checkout from the source repository used (for example SVN). 
      2. Use the native Eclipse Archive file export/import functionality to export and later import an entire Eclipse project (a.k.a. Servoy Solution) 
  • Fixed indentation of code when pasting code into the Script editor
  • Fixed indentation of code when moving code using the "Move Sample" and "Move Code" buttons in the Solution Explorer view
  • Prevented Typing info to get inserted by "Move Code"
  • Show Parameter Hints after "Move Code" 
  • Improved JSDoc tooltip hover behavior over functions: moving the mouse from the function to the tooltip doesn't hide the tooltip, but instead gives it focus
  • Removed the "Paste to JavaScript console" option in the Context menu of the Script Editor

Still to be done

  • Investigate if the "Run as ..." and "Debug as ..." options in the Context Hidden non-functional menu items "Open Type Hierarchy" and "Quick Type Hierarchy" from the context menu of the Script Editor can be removed or made to workBring back support for the old way to type a foundset or
  • Added Eclipse Spelling support inside the Script Editor on comments (singleline comments, multiline comments and JSDoc comments): See Window > Preferences > General > Editors > Text Editors > Spelling
  • Save Actions for the JavaScript Editor: allows automatic triggering of formatting JavaScript sourcecode when the editor is saved. Currently, the Save actions can only be accessed through the Properties of a Solution: Accessible through the context menu or keyboard shortcut Alt-Enter on the Active solution node of Module nodes in the Solution Explorer. See  JavaScript > Save Actions

Still to be done

  • Investigate if the "Run as ..." and "Debug as ..." options in the Context menu of the Script Editor can be removed or made to work
  • Bring back support for the old way to type a foundset or records to belong to a certain database and table
  • Introduce the option to suppress individual markers
  • Properly enable/disable the Refactor options based on the context and selection  

...

  • Syntax coloring
  • Code Completion, based on supported CSS subset that Servoy supports
  • Outline view for the StyleSheet
  • Properties view for the selected StyleClass
  • Font & Color chooser available in main toolbar areachooser available in main toolbar area

Others

  • Added support for CSS hex color shorthand noation: #FFF instead of #FFFFFF

Still to be done

  • Include a new example stylesheet highlighting the new options 

...

  • Activate a Solution by double-clicking the node for the solution to activate under the "All solutions" node 
  • Added support to rename the Active Solution (added item in the Context menu of the Active Solution node)
  • More contrast between enabled and disabled nodes (for example when editing Calculations)
  • Hide 'selectedrecord' & 'relations' node under the Form node of Forms that are not bound to a table 
  • Different icons under the "All solutions" node for solutions of type module or solution, with special decorators for Web Client or Smart Client only
  • Warning & Error decorators on the Icons of each node if there are any builder markers (Errors and/or Warnings) on the object the Node represents or on any of it's children
  • Subnodes now ordered alphabetically
  • Automatic expand of the Resources > Database Servers node on startup if there are invalid servers
  • Added "Search for references" to the context menu of many of the object nodes:
    "Search for references" tried to find all references to the given object, both inside the JavaScipt code as well as the definitions of objects like Forms, Relations, ValueLists etc. Due to the dynamic nature of the JavaScript language, the matches within the JavaScript code might not be complete and/or not valid in the case of code that uses dynamic code constructions 
  • Added preference to define the double-click behavior on Form nodes and on the globals node. See Window > Preferences > Servoy > Solution Explorer
  • Improved "Move Code" support:
    • Properly indent the moved code
    • Removed parameter type info from the moved code
    • Show Parameter Hints over the moved code 
  • Added Search for References on several nodes. See #Search support
  • Renamed menuitem "New server" to "Connect to existing database" in the Context menu of the Database Server node of the Solution Explorer 
  • Moved "Create new Database" option from the Context menu of existing individual Database Servers definitions to the Database Servers node in the Solution Explorer
    • As before, the Create new database is only supported on PostgreSQL and Sybase databases
    • The option's are disabled when there are no Database Servers defined yet for PostgreSQL or Sybase DB's
    • When there are Database Server connections to multiple database servers, a popup is shown first to select on which database server to create the new database
  • Improved Solution Explorer preferences page (Window > Preferences > Servoy > Solution Explorer)
    • Included Alignment and List Viewer options
    • Improved display of globals and Form Node double click options
  • On forms that are not linked to a datasource, the selectedrecord and relations nodes are removedMoved the ServoyException node under the Application node: ServoyException is not a top level scriptable object, it is only obtained through the solutions onError handler. Therefor, it is moved under the Application node, where the other similar types are already locatedand relations nodes are removed
  • Moved the ServoyException node under the Application node: ServoyException is not a top level scriptable object, it is only obtained through the solutions onError handler. Therefor, it is moved under the Application node, where the other similar types are already located
  • Added "Properties" menu item to context menu of active solution and it's modules, to gain access to the Project properties. Useful for Project specific Preference settings
  • Added support for drag 'n' dropping files from outside Servoy Devloper directly into the media library
  • Added support for drag 'n' dropping media objects onto:
    • Form Editor: supports images, dimensions of the image is used when placing the image
    • Script & CSS Editor: the media url gets inserted
Properties view
  • Color properties show the HEX value, instead of the RGB value
  • Color properties can be directly edited. Supported values are Hex values, RGB values and named colors (i.e. black, red etc)
  • Font properties can be directly edited
  • When setting a property to an invalid value, an Error dialog pops up, instead of a message in the status bar and a silent revert to the old value
  • Dataprovider properties that are unresolved now show the dataprovider name that cannot be resolved
  • StyleName and StyleClass property now have a button to open the StyleSheet/jump to the StyleClass declaration
  • The tabSeq property has a button to open the "Tab sequence" tab of the Form Editor
  • The Method Selection dialog used to assign methods to Commands and Events has an "OK & Show" button to assign the selected method to the Command/Event and open the assigned method in the Script Editor in one go
  • Ability to select -none- as dataprovider when editing a dataprovider property
  • Added option to select standard tags over a relation (where applicable) in the Text property editor
  • Overrides of inherited property values show -OVERRIDE- next to the value
  • Options to create either a private or public method when creating a new method for an event/command handler. In case of the private option, the @private JSDoc tag is set in the JSDoc of the newly created method. 
  • Better context aware entries in the dropdown of labelFor property: For labels in the body part of Forms in TableView mode, the dropdown will include all named elements that are also in the body part and that don't have the labelFor property set yet.  

...

  • If a font in html_area is expressed in "pt" instead of "px" -> it will get smaller.
  • Non-modal Dialogs in WC rendered inside the main window, instead of as new browser windows due to JSWindow implementation, allowing multiple modal and non modal in the same window
  • In Smart Clients running under Java 6, Modal Dialogs (JSWindow of type MODAL_DIALOG and the dialogs displayed using the dialogs plugin)will be modal for their parent window (hierargy). This means that when having multiple windows (JSWindow of type WINDOW) open, a Modal dialog opened in one window will only block that window, not the other Windows. This aligns the behavior with the Web Client behavior. Unfortunately, the ability to set the scope of dialog modality in only possible from Java 6 onwards. When running Smart Clients on Java 5 modal dialogs will block all windows.   
  • application.getTimeStamp() in the Web client will return the timestamp based on the timezone of the Client and the time of the Server: Before it would just return the timestamp based on the time and timezone of the server.
  • In the solutionModel when asking for a specific element on a form, if the element is not on the form, the super scope will be inspected and return the element if the element in inherited. For the plural getElements() type of functions, an optional paramter has been added to include the inherited elements in the return value or not.
  • controller.recreateUI() will keep the existing x and y scrollPosition of the form being recreated.
  • When adding a tableFilter on a column that already has a tablefilter on it, the newly applied filter will not override the existign filter, but the new filter will be appended, so both the existing and newly added tableFilter are in effect. To implement the old behavior, the TableFilters need to be created with a name and then when applying a new TableFilter the old one needs to be removed through scripting. 
  • When using labels with labelFor link to other elements in TableViews to control the TableView header rendering, the first label will now determine the height of the header 
  • The client that gets started as Authenticator during the login process isn't consuming a license any more 
  • Enhanced Security is now the default mode. The UI in Servoy Developer and in the Application Server to disable it has been removed. It is only possible to disable Enhance Security through setting the relevant property in the servoy.properties file: "servoy.application_server.enhancedSecurity=false"
  • plugins.rawSQL.executeStoredProcedure() now returns the last resultset retunred by the stored procedure, instead of the first
  •  "
  • plugins.rawSQL.executeStoredProcedure() now returns the last resultset retunred by the stored procedure, instead of the first
  • The position and dimensions of JSWindow's (Windows and Dialogs) are now persisted over client sessions
  • Default alignment for text in TableView & Portal headers brought inline (Centered)
  • Aligned default border and alignment for all elements between SC and WC
Form Design

Conditional formatting (including row coloring in grids)

...

  • Added rollOverImageMedia support in TableViews 
  • Improved Sorting indicator on Grid columns behavior: the Sorting indicator is now always shown if a FoundSet is sorted and automatically follows the actual foundset sort. Columns that display a dataprovider on which the foundset is sorted get the sorting indicator. This means that if the Foundset is sorted on dataproviders that are not linked to columns, there will be no sorting indicator. Also when the foundset is sorted in-memory, there will be no sorting indicators 
  • Added multi-column sort behavior on grids (TableView's and Portals): by Shift-clicking a column header, the foundset sort is extended with a sort on the  dataprovider of the clicked column.Right-click support on Tableview headers through label linked to field using labelFor relationof the clicked column.
  • Right-click support on Tableview headers through label linked to field using labelFor relation
  • Ability to lock one or more columns on the left and/or right of a Tableview in place (meaning they cannot be rearranged), by anchoring the element representing the column cell top and bottom. Can be combined with left/right anchoring for resizability of the column
  • Support for number length formatting on number fields
  • Support to hide the Form title from the Title bar in the Smart Client or the Tab name of the browser in case of the Web Client, by specifying "none" as value for the forms titleText property 
  • Added support for displaying HTML contained in the titleText property of non-editable HTMLArea's. Useful to show (multiple) href links in the UI. Same functionality was already available through Labels, but on Labels the entire label acts as click-able area (showing a HAND cursor), whereas when done with an HTMLArea only the links are click-able. The "displayTags" property on the HTMLArea needs to be set to true in order to process the titleText property.
  • Added encapsulation support on Forms: the ability to mark Forms as Private, Module Private and/or to prevent access to the Form's elements, controller, foundset and/or dataproviders
  • Improved support for separators within Combobox dropdowns:
    • Better styling
    • Non-selectable
    • Web Client support
  • Added support for single RadioButtons:
    • Fields of type Radio with a ValueList attached containing only 1 value now render a single RadioButton
    • Multiple single Radio button type of fields can act as a RadioButton group, by sharing the same dataprovider
  • Added option to control the automatic dropdown behavior of Comboboxes on focus gained through the APP_UI_PROPERTY.COMBOBOX_SHOW_POPUP_ON_FOCUS_GAIN property. Note that this property only affects the Smart Client, as this behavior is not controllable in browsers)
  • Added ability to control the margin of text in TableView headers through the LabelFor relation 
Drag 'n' Drop
  • Added a custom Drag 'n' Drop event type JSDNDEvent with additional API:
    • dataMimetype property
    • getDragResult(): gives the result of the DND operation (DRAGNDROP.MOVE/DRAGNDROP.COPY/DRAGNDROP.NONE). Only relevant if the event type is JSDNDEvent.ONDRAGEND
    • getRecord(): gives the record on which the event occurred
  • Added onDragEnd event to forms and portals: This event gets fired on the form on which the DND operation started (the form on which the onDrag event fired), regardless if a drop occurred or not
  • Fix: onDragOver doesn't fire anymore for elements that are layered below other elements
  • Fix: all DND related events don't fire anymore on disabled elements/forms

...

  • New controller.getWindow(...)
  • New application.isFormInDialogisFormInWindow(...)
  • New application.getWindow(...)
  • New application.createWindow(...)
  • New application.closeAllWindows(...)
  • New JSWindow class
  • Deprecated controller.getContainerName(...)
  • Deprecated application.closeForm(...)
  • Deprecated application.getWindowHeight(...)
  • Deprecated application.getWindowWidth(...)
  • Deprecated application.getWindowX(...)
  • Deprecated application.getWindowY(...)
  • Deprecated application.setWindowLocation(...)
  • Deprecated application.setWindowSize(...)
  • Deprecated application.showFormInDialog(...)
  • Deprecated application.showFormInWindow(...)
  • Deprecated constant UICONSTANTS.FULL_SCREEN

...

  • getFailedRecords: optional JSFoundset parameter
  • getEditedRecords: optional JSFoundSet parameter
  • New addTrackingInfo(...)
  • New databaseManager.dataSourceExists()
  • Wiki Markup
    New createDataSourceByQuery(String name, String server_name, String sql_query, Object\[\] arguments, int max_returned_rows): Creates a datasource directly from an SQL statement, instead of having to create a JSDataSet based on SQL and then create the DataSource based on the JSDataSet
  • Wiki Markup
    Deprecated&nbsp;getFoundSetDataProviderAsArray() in favor of databaseManager.convertToDataSet(foundset, \['columnName'\]).getColumnAsArray()

...

  • New class JSRenderEvent: eventType passed to onRender event handler methods 
  • New class Renderable: used by the JSRenderEvent
  • New class JSWindow; see Windowing API
  • New class JSDNDEvent: eventType passed to Drag 'n' Drop event handlers
  • New class CLIENTDESIGN containing constants for ClientDesign
  • New constants
    • UICONSTANTS.USE_SYSTEM_PRINT_DIALOG
    • ELEMENT_TYPES.TYPE_AHEAD
    • ELEMENT_TYPES.SPLITPANE
    • ELEMENT_TYPES.RTF_AREA
    • ELEMENT_TYPES.RECTANGLE
    • ELEMENT_TYPES.HTML_AREA
    • ELEMENT_TYPES.COMBOBOX
    • DRAGNDROP.MIME_TYPE_SERVOY_RECORD
    • DRAGNDROP.MIME_TYPE_SERVOY
    • JSEvent.ONDRAGEND
    • SQL_ACTION_TYPES.UPDATE_ACTION
    • SQL_ACTION_TYPES.SELECT_ACTION
    • SQL_ACTION_TYPES.NO_ACTION
    • SQL_ACTION_TYPES.INSERT_ACTION
    • SQL_ACTION_TYPES.DELETE_ACTION
  • New security.isUserMemberOfGroup(...)
  • New JSTable.getDataSource(...)
  • New JSRecord.getDataSource(...)
  • New JSDataSet.sort(Function)
  • Wiki Markup
    New JSFoundSet.sort(Function, \[defer\])
  • New setRollOverImageURL(...) on Labels and Buttons
  • New getImageURL() on Labels
  • Made Date.setYear deprecated (is deprecated in ECMAScript)
  • Made relation parameter optional for setLeft/RightForm(...) functions for Splitpane instances
  • Added support for multiple fallback filter values in i18n.setI18NMessagefilter, by supplying an Array of Strings for the value parameter
  • Newi18n.getCountries()
  • New i18n.setDefaulttimeZone()
  • Add support to utils.stringReplaceTags() to accept as input not only a JSFoundset or JSRecord but a RuntimeForm as well
  • Wiki Markup
    Added support for multiple values in application.getStartupArguments():
    For the following deeplink "http://localhost:8080/servoy-webclient/ss/s/bug_formBuilder/a/bla/a/bla1/a/bla2" application.getStartupArguments will not return \[\['bla', 'bla1', 'bla2'\], {a: \['bla', 'bla1', 'bla2'\]\]
  • New application.removeClientInfo()
  • Support for IN operator support in scripted Find/Search. The advantage over the OR ('||') option are:
    • Unlimited size: the Or statement is limited to what the database supports
    • The values don't need to concatenated into a String value, making it easier to work with values containing '||' or working with Dates
  • Code Block
    if (foundset.find()) {
       foundset.name = ['John', 'Paul', 'Ringo', 'George'];
       foundset.search();
    }

...

  • The method showWarningDialog(...) can now be used in combination with the Web Client and present the user with the native browser "alert" dialog. Note that the dialog will only be show to the user after the method is finished.the dialog will only be show to the user after the method is finished.
  • In Smart Clients running under Java 6 all dialogs popped up through the plugin only block their parent window hierargy: In Java 5 a dialog popped up through this plugin locks all existing windows

DBTree(Table)View beans

  • Drag 'n' Drop support
  • CSS Styling Support
  • Support for HTML as text for nodes of the tree in Web Client
  •  

...

  • The PDF output plugin is now registered as Printer, to allow printing to PDF from the Print Preview in the Smart Client

Window plugin

  • Deprecated .validate() on Toolbar and MenuBar class, as they are no longer required

Misc.

  • The preferred size of Beans is now honored when placing beans onto a form in the Form Editor 
  • Added anchoring support for non-servoy-aware beans in the Web Client
  • Added setting on the Admin page to store the StyleClass name set on an element as a UIProperty on the element. The setting on the Admin page, "servoy.smartclient.componentStyleClassDelegatePropertyKey" allows to specify the name for the UIProperty. This information can then be read and used by, for example, Look and Feels.
  • For Beans that supply an Icon through a BeanInfo class, the Icon is now used in the display of the bean in the Form Editor Palette
  • Wiki Markup
    Support for multi-value property editors on beans (see Servoy 6 Public Java API for more details:&nbsp;<span style="color: #d3620d">[</span><span style="color: #d3620d"><a href="http://www.servoy.com/docs/public-api/6xx/com/servoy/j2db/dataui/PropertyEditorHint.html">http://www.servoy.com/docs/public-api/6xx/com/servoy/j2db/dataui/PropertyEditorHint.html</a></span>\|http://www.servoy.com/docs/public-api/6xx/com/servoy/j2db/dataui/PropertyEditorHint.html\]&nbsp;and&nbsp;\[http://www.servoy.com/docs/public-api/6xx/com/servoy/j2db/dataui/PropertyEditorOption.html\|http://www.servoy.com/docs/public-api/6xx/com/servoy/j2db/dataui/PropertyEditorOption.html\]

...

  • When installing Servoy with the database option unchecked, the installation will now contain the previously missing servoy.properties file
  • Added the PostgreSQL upgrade module to the bundled PostgreSQL
  • Compression is enabled by default on the Servoy Application Server for serving HTML, CSS and JavaScript files, which improves the performance of the Web Client
  • Lazy loading of the datamodel of database server clones, resulting in faster Servoy Application Server startup and no unneeded overhead for database server clones that aren't going to be used
  • Enhanced Security is now the default mode, can only be disabled by manually setting the relevant property in the servoy.properties file: "servoy.application_server.enhancedSecurity=false"_server.enhancedSecurity=false"
  • The default value for the MaxHeapSize memory setting (-Xmx) for the Application Server has been changes to 1Gb (both in servoy_server.bat as well as in the wrapper.conf for the Service component)
  • Display Community Edition splash screen content over HTTPS, to prevent mixed content warnings when running the community edition over HTTPS

Admin page

  • Ability to alter the max. allowed idle connections on the Servoy Application Server without restarting
  • Added ability to specify the user directory for Smart Clients on the Admin page
  • Ability on the Admin page to set on Solution level if the the solution is to use Anchors in the Web Client or not 
  • Ability to "compact" a Solution: this removes all but the latest release of the solution
  • Added Styles node, to allow the deletion of StyleSheets from the Repository
  • Added a grid-like Database Server overview on the Servoy Admin page for better overview of the status of all Database Server connections, with links to get to the details of a specific Database Server. Database Server clones will be grouped under their master.
  • Added Solution import option to auto update Servoy Sequences after import 
  • Added Database Server name to the Performance Data page of the Admin page
  • Added log entry when clearing the log on the Server Log page of the Admin page
  • Moved the link to import Solutions to the top of the Solutions page on the Admin page
  • Improved type tagging of queries in the Performance Data page on the Admin page. For example, FoundSet queries are now properly tagged as FoundSet queries.
  • Added option to push a Font to clients as well (To complement the already existing Look & Feel and Theme push options)
  • Removed SocketFactory.useTwoWaySocket and SocketFactory.rmiServerFactory on the Network section of the Admin page and replaced them with a SocketFactory.tunnelConnectionMode property that is displayed as a dropdown with the available options.
  • Added option to disable SSL encryption when using the HTTP Tunnel if the HTTP Tunnel runs over HTTPS (to prevent double encryption)

Service component

  • Config has been added to automatically restart the Application Server when OutOfMemory exception occur: the rationale behind the automated restart is that an OutOfMemory exception can severely compromize the stability of the Application Server and the clients it hosts.
  • The default value for the MaxHeapSize has been set to 1Gb
  • On Windows the .bat files to install and uninstall the service have been added 
  • Added Install as a service support in OSX and Unix

Public Java API

...