This document is referring to a past Scout release. Please click here for the recent version. Looking for something else? Visit https://eclipsescout.github.io for all Scout related documentation. |
!!! WORK IN PROGRESS !!!
Release Notes for Scout 6.0
Here are the release notes for the Scout Release 6.0
TODO: a lot is still missing!
What’s New
HTML
Use the class org.eclipse.scout.rt.platform.html.HTML
to build HTML content instead of concatenate the strings manually.
API Changes
Table
-
Behavior change of
Table
inAbstractTableField
: Do not executeAbstractTable.execContentChanged()
whenvalueChangeTriggers
flag onIFormField
isfalse
. -
Returned collection of
ITableColumnFilterManager.getFilters()
is now unmodifiable. -
New method
ITableColumnFilterManager.removeFilter(IColumn col)
.
Tree
-
ITree.getConfiguredDefaultIconId()
in addition toITree.getConfiguredIconId
. The difference is as follows: DefaultIconId is used as default for all tree nodes that don’t have an icon on their own. IconId may be used in the same way as the title, e.g as outline icon. -
Nodes may now be expanded in a lazy way. This means only those child nodes are visible which are expanded as well and the parent gets a '+' symbol. If the user clicks on this symbol all child nodes gets visible. The model can define whether child pages of a page should be added immediately to the outline tree or lazily. If nodes are added lazily, a dummy "show all" node is shown instead.
Node pages never add child pages lazily. Table pages add child nodes lazily when they have more than a specific number of child pages (default 1).
The behavior may be controlled using:
-
boolean getConfiguredLazyAddChildPagesToOutline()
-→ defaultfalse
, forAbstractPageWithTable
the default istrue
. -
int getConfiguredLazyAddChildPagesToOutlineThreshold()
-→ setting forAbstractPageWithTable
, after how many child pages the lazy setting should be active (default 1)
-
File Chooser (File Upload)
File upload size is always limited now (otherwise server might run out of memory if too large files are sent). Default size is 50 MB, but every field might specify lower/higher sizes:
-
org.eclipse.scout.rt.client.ui.IDNDSupport.setDropMaximumSize(long)
-
org.eclipse.scout.rt.client.ui.IDNDSupport.getDropMaximumSize()
-
org.eclipse.scout.rt.client.ui.basic.filechooser.IFileChooser.setMaximumUploadSize(long)
-
org.eclipse.scout.rt.client.ui.basic.filechooser.IFileChooser.getMaximumUploadSize()
-
org.eclipse.scout.rt.client.ui.form.fields.filechooserfield.IFileChooserField.setMaximumUploadSize(long)
-
org.eclipse.scout.rt.client.ui.form.fields.filechooserfield.IFileChooserField.getMaximumUploadSize()
-
Also added
getConfigured…()
methods were applicable for properties above.
Group Box
AbstractGroupBox.setBorderVisible(false)
does not change visibility of label anymore. Label of group-box must be made invisible by calling setLabelVisible(false)
.
Smart Field
-
AbstractContentAssistField
andIProposalChooser
implementations now have the ability to provide an inner class which extendAbstractTree
orAbstractTable
to provide a custom implementation used in the proposal chooser. -
Added
cssClass
property to formField, column and cell for custom css styling. See also interfaceIStyleable
and classCssClasses
.
Date Field
The date field no longer inherits from BasicField. Instead it inherits directly from ValueField. This means that the PROP_UPDATE_DISPLAY_TEXT_ON_MODIFY
is no longer supported on date fields. The reason for this change was the separation of UI (Browser) and UI-Server (Java). To get a good performance, fast date predictions and offline capability, the parsing must be done in the UI and not on the server. Because the "update on modify" flag had no effect anyway, it was completely removed from the UI. (More details in the Migration Guide).
Split Box
-
AbstractSplitBox
now returnsIFormField.FULL_SIZE
ingetConfiguredGridW()
by default. Reason: The split box widget does not really have a representation of its own, but is more like a container for other fields. It can never have label, mandatory indicator etc. Its layout should behave like a group box or a tab box, therefore the default gridW value was adjusted accordingly. -
Split boxes now support absolute splitter positions. The old relative position is the default, which uses a value between 0 and 1 for the
splitterPosition
. By changing the propertysplitterPositionType
, the interpretation of thesplitterPosition
value can be changed to pixels (either fixed for the first or the second inner box).
Desktop / Outline
-
Menus of a page are now added to the detail form. This was necessary because the outline tree does not show any menus anymore. See also method
AbstractPageWithNodes.enhanceDetailFormWithPageMenus
. -
Added
AbstractDesktop.getConfiguredAutoTabKeyStrokesEnabled
: It should be possible to change view Tabs with modifier+number. The number should be generated by the ui. 9 is reserved to jump to the last tab, 0 to jump to the first tab. If this property is set to false there is no Keystroke for tab change on the ui.-
getConfiguredAutoTabKeyStrokeModifier
: if the property is set totrue
the modifier specified by this property is used in combination with a number to change to the specific tab.
-
-
Added
ISearchOutline
: The intention of the search outline is to provide a search over several table pages. TheAbstractSearchOutline
provides a frame, the search itself has to be implemented by the project. In order to use it add theSearchOutline
to the desktop usinggetConfiguredOutlines
(don’t create an outlineViewButton). -
Added default detail form on outline: It is now possible to configure a default detail form for outlines. The default detail form gets shown when no page is selected. API added
getConfiguredDefaultDetailForm
,execInitDefaultDetailForm
,createDefaultDetailForm
,startDefaultDetailForm
. -
Added
getConfiguredTableStatusVisible
onIPageWithTable
: It is now possible to configure whether the table status should be visible for a table page. Until now table status was set visible by theOutlineTableForm
. -
API added to
AbstractTable
andITable
:-
List<ITableControl> getTableControls()
-
<T extends ITableControl> T getTableControl(Class<T> controlClass)
-
boolean isTableStatusVisible()
-
void setTableStatusVisible(boolean visible)
-
String getMenuBarPosition()
-
void setMenuBarPosition(String position)
-
-
API added to ITableUIFacade
-
void fireTableReloadFromUI()
-
`void fireSortColumnRemovedFromUI(IColumn<?> column)
-
-
Improved page search form disposal: Search form is now closed when the page gets disposed.
-
AbstractDesktop.isOutlineChanging
added. -
The methods
traverseFocusNext()
andtraverseFocusPrevious
were removed from IDesktop because traversing is not supported by the HTML UI. (Neither was it supported by the former RAP UI). The corresponding DesktopEvent types (TYPE_TRAVERSE_FOCUS_NEXT
,TYPE_TRAVERSE_FOCUS_PREVIOUS
) were removed as well.
Form
Added IForm.start()
: Mainly useful for forms with just one handler. (detail forms, tool forms etc.). May be implemented by the concrete form. The default implementation at AbstractForm uses getHandler() to start the form.
Bean Field / Bean Column [New]
Added bean field and bean column. See AbstractBeanField
, AbstractBeanColumn
for details.
Wizard Progress Field [New]
A new widget has been added: WizardProgressField
. It is normally visualized as a list of steps with some indication which step is the current step etc. It replaces the old "HTML status" field on the default wizard container form.
HTMLUtility
org.eclipse.scout.rt.platform.html.HTMLUtility
and org.eclipse.scout.rt.platform.html.CSSPatch
were deprecated because they contained only legacy code of doubtful quality. Do not use them anymore — they will be removed in the next Scout release. The support for most of the contained methods was dropped, because they are not required anymore with the new UI. A slightly improved version of the getPlainText()
method is available on the new bean org.eclipse.scout.rt.platform.html.HtmlHelper
.
Various Changes
-
ILabelField
,IHtmlField
andIStringField
are nowIHtmlCapable
. -
UiLayer
: Removed valuesJSP
,JSF
,RAP
,SWING
and added valueHTML
. -
UserAgentUtility
: API removedisRapUi()
,isSwingUi()
-
AbstractFormField.set/isStatusVisible
added. -
org.eclipse.scout.commons
reorganized, classes moved toorg.eclipse.scout.rt.platform
and other projects -
The unused, obsolete classes
org.eclipse.scout.rt.client.ui.form.fields.ValueFieldEvent
andorg.eclipse.scout.rt.client.ui.form.fields.ValueFieldListener
were removed.
Known Bugs and Limitations
Selection in disabled text fields
Firefox (tested with v 35.0.1): it’s not possible to select text in a disabled text field. There is no workaround. An often suggested workaround is to use the readonly attribute instead of disabled, but this leads to a completely different behavior when it comes to event handling. When a field is disabled it doesn’t fire any events (for instance: click), but when it’s set to readonly event handling is still enabled. In other words: we’d have to implement browser/widget default behavior to work around this problem — additionally the workaround should only affect Firefox but none of the other browsers (where this is not an issue at all).
Drag and drop support
IE9 does not support dropping files. Therefore, drag and drop in file chooser is not supported for that browser.
Input placeholders
On-field labels are not visible in IE9 because it lacks support for the "placeholder" attribute.
Security: MalwareScanner [New]
Facility used to scan files and resources for malware. The new @Bean MalwareScanner assumes that an appropriate malware scanner is in place on the webapp deployment machine and is configured to scan the TEMP folder (as used by File#createTempFile) using a realtime filesystem scan strategy. Malware should therefore immediately be removed or blocked by the malware implementation when placed in that folder. The new MalwareScanner is used in the ui.html file upload handler and thus checks every uploaded file.
IMimeTypeDetector [New]
The new interface IMimeTypeDetector provides multiple ordered implementations that can detect mime types PrimaryMimeTypeDetector with order 0 defines important webapp mime types ServletContextMimeTypeDetector with order 10 uses ServletContext.getMimeType JavaNioMimeTypeDetector uses java.nio Files.probeContentType
UploadRequestHandler [Added features]
The UploadRequestHandler checks for malware and limits the file types that can be uploaded.
Session Cookie (JSESSIONID Cookie) configuration validation
The HTML UI checks if the application is configured safe by validating some flags set on the session cookie. For more details on how to configure your session cookie please refer to the Scout Documentation chapter "Session Cookie (JSESSIONID Cookie) Configuration".
UserIdAccessControlService [Removed]
org.eclipse.scout.rt.shared.services.common.security.UserIdAccessControlService
was removed in M7. When creating a new Scout project via SDK, an own implementation of AbstractAccessControlService is now explicitly created in shared, named AccessControlService
(as replacement for the removed UserIdAccessControlService
). The class generated at the server side now replaces (@Replace) the new one generated in shared (class name of server side changed from AccessControlService
to ServerAccessControlService
).
Do you want to improve this document? Have a look at the sources on GitHub. |