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
    • @return {Type}
    • @see
    • @since
    • @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. 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\[\]&nbsp;
    • @type Array<String>
  • 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 parameters as Objects with certain properties:
  • Code Block
    /**
     * @param {Object} person
     * @param {String} person.name
     * @param {String} person.email
     * @param {Number} person.age
     */
    function processPerson(person) {
      application.output(person.name);
      application.output(person.email);
    }
  • Support for rest parameters: Allows to indicate through JSDoc that a function can take unlimited trailing arguments of the specified type:
    Code Block
    /**
      * @param {...String} someExtraStrings One or more additional String can be send into this function
      */
    function methodWithRestParams(someExtraString){}
    
    
    function test() {
       methodWithRestParams('one', 'two', 'three', 'four');
    }
  • Support for @AllowToRunInFind on functions to indicate that the the function should be executed on event handlers while in FindMode:
    Eliminates the //controller.search() workaround. Note that that running JavaScript while in FindMode has it's limitations and not all behavior is 100% defined. More details will follow.
  • Support for @constructor tag, to indicate that a function declaration is to be used as a Constructor. Functions marked as Constructor also display differently in the Script Outline view 
  • Automatic JSDoc @type setting on global and Form variables
  • Ability to update the type of a variable by updating the JSdoc @type tag value AND the default value
  • Added specific JSDoc context for Templates (Window > Preferences > JavaScript > Editor > Templates), besides the already existing JavaScript context.

Code completion

  • Overall much better context aware code-completion, due to improved type inference and extended JSDoc support
  • Support for code-completion on inline Java: The support is on Class level, not Package level:
    • Packages.java. //Code-completion here won't yield anything
    • Packages.java.lang.System. //Code-completion here works
  • Deprecation decorator on deprecated objects:
  • Type Icons in code-completion popup
  • Method return type info in code-completion popup
  • Originating Scope info in in code-completion popup 
  • Scripting overloading support 

...

  • 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

Still to be done

  • Investigate if Removed the "Paste to JavaScript console" option in the Context menu of the Script Editor can be removed or made to work

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
  • Full support in JSDoc for typing as a specific type of Form: "@type Form<myformName>". Current support does not include Form variables and Form methods  
  • Introduce the option to suppress individual markers
  • Properly enable/disable the Refactor options based on the context and selection  
  • Extend the tags yielded by code-completion inside JSDoc

...

  • 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
Properties view
  • Color properties show the HEX value, instead of the RGB value
  • 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
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.  

...

  • New enabled & visible property on all JSComponent instances
  • New onRender event access on all objects that implement the onRender event
  • New solutionModel.wrapMethodWithArguments(...)
  • New solutionModel.newCalculation(...)
  • New solutionModel.getCalculations(...)
  • New solutionModel.getCalculation(...)
  • New solutionModel.createTitledBorder(...)
  • New solutionModel.createSpecialMatteBorder(...)
  • New solutionModel.createPageFormat(...)
  • New solutionModel.createMatteBorder(...)
  • New solutionModel.createLineBorder(...)
  • New solutionModel.createFont(...)
  • New solutionModel.createEtchedBorder(...)
  • New solutionModel.createEmptyBorder(...)
  • New solutionModel.createBevelBorder(...)
  • New solutionModel.newForm(String, JSForm)
  • New class JSCalculation(...)
  • New class JSBean(...)
  • New JSTabPanel.removeTab(...)
  • Deprecated JSTabPanel.onTabChange
  • New JSTabPanel.onChange
  • Deprecated JSPortal.resizeble
  • New JSPortal.resizable
  • New JSPortal.onDragEnd
  • New JSRelation.removeRelationItem(...)
  • New JSMethod.getArguments(...)
  • New JSForm.getBeans(...)
  • New JSForm.getBean(...)
  • New JSForm.removeBean(...)
  • New JSForm.newBean(...)
  • New JSForm.onDragEnd
  • New JSForm.encapsulation
  • JSFormgetBeans/getButtons/getComponents/getFields/getFormMethods/getFormVariables/getLabels/getParts/getPortals/getTabPanels: new optional parameter "returnInheritedElements"
  • New constant classes
    • UNITS
    • TITLEPOSITION
    • TITLEJUSTIFICATION
    • PAGEORIENTATION
    • FONTSTYLE
    • BEVELTYPE

...

  • 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
  • Made Date.setYear deprecated (is deprecated in ECMAScript)
  • Made relation parameter optional for setLeft/RightForm(...) functions for Splitpane instances
  • 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'\]\]
  • 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();
    }

...