Eclipse Scout Release Notes

This document is referring to a past Scout release. Please click here for the recent version.

About This Release

The latest version of this release is: 23.2.15.

You can see the detailed change log on GitHub.

Coming from an older Scout version? Check out the Migration Guide for instructions on how to obtain the new version and upgrade existing applications.

Demo Applications

The demo applications for this version can be found on the features/version/23.2.15 branch of our docs repository on GitHub.

If you just want to play around with them without looking at the source code, you can always use the deployed versions:

Scout JS

Multi Dimension Support

Similar to Scout Classic, Scout JS now also supports multidimensional properties.

A multidimensional property is a property that will be computed based on its dimensions.

For example: Widget.visible is now multidimensional and computed based on the default and the granted dimension. Both dimensions need to be true to make the widget visible. This means, if a widget is made invisible using widget.setVisibleGranted(false), calling widget.setVisible(true) (which will modify the default dimension) won’t have any effect.

This feature makes it easy to really hide a widget that the user is not allowed to see without fearing that it could be made visible accidentally.

To learn more about this, see Multiple Dimensions Support.

Form

Until now, the default value for modal was true. This has been changed so that the default now depends on the displayStyle: It is still true for Form.DisplayStyle.Dialog, but false for Form.DisplayStyle.View.

This means if you require your view to be modal, set it to true. Otherwise, you can remove the setting.

The reason why this was changed is, because it is less common to have modal views, which also aligns it with the behavior of Scout Classic.

SaveNeeded State Updated Automatically

The property saveNeededVisible now correctly visualizes if the form needs to be saved. The default for this property is true for Scout JS forms. For Scout Classic forms the default has not been changed and is still false.

For this, the form now has a property called saveNeeded that will be updated automatically if the saveNeeded state on any child field changes (please note that the property on the form field was renamed from requiresSave to saveNeeded, see Migration Guide).

New Property 'checkSaveNeeded' on Form Fields

Sometimes the saveNeeded state is not of interest and should not affect the saveNeeded state of the form. This may be the case for fields that contain data that doesn’t need to be saved. For this kind of fields, the saveNeeded computation can now be disabled by setting checkSaveNeeded to false.

VisitFields Across Field Trees

The method FormField.visitFields now also visits form fields that are not directly connected to a parent form field. Example: a form field inside a menu. This was necessary to properly detect saveNeeded changes of such fields and validate them when a form is stored. If you need the old behavior, consult the Migration Guide).

Open Exclusive Support

A form can now be opened exclusively. This means, you can define an exclusive key for a form, and if another form should be opened with the same key, the first form will be activated instead of opening the second one.

To open a form exclusively, use createFormExclusive on the Desktop and open the form as usual using form.open().

Error handling for save and load

The load, postLoad and save operations of a Scout JS form include automatic error handling now. Custom logic to handle errors (e.g. from REST calls) are in most cases no longer necessary and can therefore be removed.

Refer to the Migration Guide on how to customize the new default error handling in case you need some special behavior.

Default menuTypes

Default menuTypes have been added to several widgets. This means that e.g. the Table treats a menu without a menuType as if it had set Table.MenuType.EmptySpace. For more information about the default menuTypes see MenuTypes.

SmartFields: Error-Handling for Key-Lookups

Before this change: If a key-lookup inside a SmartField didn’t return a result, the SmartField was presented to the user like no value has been chosen. Internally, however, the (most likely invalid) value was still set on the SmartField. Hence, the user couldn’t see that the current value is invalid and a new value should be set.

This change puts a warning status on the SmartField if a key-lookup doesn’t return a value.

Because of the potential consequences, this change was implemented for ScoutJS only (not for Scout Classic).

Busy handling

The busy handling has been simplified for Scout JS. A new class BusySupport has been introduced which should be used instead of directly creating a BusyIndicator. Features:

  • multiple nested busy calls possible

  • cancellation callbacks

  • delayed rendering support

It can be accessed using Desktop.setBusy (the Desktop is available on the Session) or Form.setBusy. Typically, it should not be necessary to create own BusySupport instances.

In case you created custom busy handling, refer to the Migration Guide on how to migrate.

Access Control

Scout JS now supports permissions. It provides the possibility and convenience of checking permissions using the access utility. For more information about the access utility see Authorization (Scout JS).

SDK

The Scout IntelliJ plugins have been improved to better support Scout JS development and working with Data Objects.

Code Completion for TypeScript Based UI Models

To get the code completion for UI models, just start writing or press Ctrl+Space.

Creating new Fields

Easily create a new FormField, Menu, Column and more Scout objects.

create new fields
Figure 1. Create a new field

Select ObjectType

Change the object type of an existing object.

objecttype completion
Figure 2. ObjectType completion

Property Completion

Get a complete list of available properties in the current context.

property completion
Figure 3. Select a property

Value Completion

If a property expects a value from a predefined list, you’ll get the available values.

value completion
Figure 4. Select a value

WidgetMap Generation

Widget Maps have been introduced with Scout 23.1. Now, you can use the SDK to create the maps. Just use the menu entry or press the keystroke Ctrl+Alt+Shift+W to create the maps for the current model file. You can also create all maps in a certain scope or for the whole project.

widget map menu
Figure 5. WidgetMap creation

DO Templates

The SDK now contains templates to easily modify Data Objects. Just start writing do or use Ctrl+J for a complete list of all templates.

do template
Figure 6. DO templates