2.0.12
-
cxbox/intellij-plugin 1.7.9 Jetbrains Marketplace, cxbox-intellij-plugin.zip
Key updates February, March 2025
CXBOX (Demo)
Added: Push Notifications - new display modes
We have introduced three display modes for WebSocket Push Notifications: single
, stack
, and column
.
Notifications appear separately, stacking on top of each other.
Notifications appear separately, aligned vertically in a column.
Each new notification replaces the previous one in a single area.
You can configure timeout
for all three modes. For stack
and column
, you can also set the maximum number of visible notifications and the display direction (upward
/downward
).
Added: Line2D widget - New widget type!
We have introduced a new widget type Line2D
to display data using X and Y axes in a linear format.
Key features include:
- Axis scale/ step control
- Grouped display
- Tooltip display
Functionality includes:
- Drilldown - click on xAxis values to drilldown to the filtered data displayed in a table.
- Switch mode - switch from column mode to table mode to view data in a tabular format.
- Segment interaction - click on legend values to add or remove lines from the plot.
Added: DualAxes2D widget - New widget type!
We have introduced a new widget type DualAxes2D
to display data from different types of charts in a single area. The charts share the same X axis, but can have separate Y axes.
Note! DualAxes2D can only display 2D types of widgets (e.g. Line2D, Column2D). The features (tooltip and axis scale/step) for 2D widgets will apply to DualAxes2D automatically.
Functionality includes:
- Drilldown - click on yAxis values to drilldown to the filtered data displayed in a table.
- Switch mode - switch from column mode to table mode to view data in a tabular format.
- Segment interaction - click on legend values to add or remove lines/bars from the plot.
Added: UI panel - display of application version and environment type
We have added the ability to display the environment type and current application version in the UI panel for convenience. The text adapts depending on the menu state (collapsed
/expanded
) and shows a tooltip with more details. Background color customization for this section is also supported.
Added: Push Notifications - long links support
We have enhanced the display of long link labels for Push Notifications. Now, if the link label exceeds the width of the notification, the text automatically wraps to the next line, ensuring the full label is displayed correctly without being truncated. In addition, the "and (N) more..." text (in case there are several links) is also displayed correctly within the notification area.
Added: suggestionPickList field - scrollbar and empty value support
We have improved the suggestionPickList field by adding scrollbar support - you can now navigate long lists more easily using the scrollbar.
In addition, we have improved empty value display logic. If backend returns null
, frontend will display an empty value instead of showing null
.
Added: suggestionPickList field - changes in filtering method
We have refined the filtering method for the suggestionPickList field. Previously, it required an exact match with the typed characters (equals
). Now, the filtering logic is less strict, and displays all the results that contain the entered text (contains
).
Added: dictionary field - improved layout for mode:icon
We have removed the minimum width restriction for Dictionary field with mode: icon
. This allows the field to shrink dynamically while keeping the icon and value closer together, resulting in a more compact layout.
Added: GroupingHierarchy widget - validation for aggregate fields
We have introduced a validation rule for aggregate fields in the GroupingHierarchy widget. Now, a field cannot be used both as a grouping field and as an aggregate field at the same time. If the same field is used both for grouping and aggregation, the widget will prioritize grouping, and the aggregation function will be ignored.
Fixed: FormPopup widget - forceActive update
We have enhanced the forceActive feature for FormPopup widget to ensure that only a POST row-meta request is executed. This guarantees the most up-to-date information even when the entity is being edited, preventing data loss.
Fixed: AssocListPopup - ignored scope for action buttons
We have updated AssocListPopup to ignore scope
for action buttons, which prevents unnecessary duplication. Previously, actions from the three-dot menu were duplicated as separate buttons at the top.
Added: Draft Builder for Drilldowns with field filtration
A new Java Builder for generating drillDowns with filter by fields has been introduced:
drillDownExt.filterBcByFields(
CxboxRestController.sale, SaleDTO.class, fb -> fb
.input(SaleDTO_.clientName, fields.getCurrentValue(DashboardSalesProductDTO_.clientName).orElse(null))
.dictionary(SaleDTO_.product, fields.getCurrentValue(DashboardSalesProductDTO_.productName).orElse(null))
.multiValue(SaleDTO_.fieldOfActivity, activity)
);
"?filters={\""
+ CxboxRestController.sale + "\":\""
+ URLEncoder.encode(SaleDTO_.clientName + "." + SearchOperation.CONTAINS.getOperationName()
+ "=" + fields.getCurrentValue(DashboardSalesProductDTO_.clientName).orElse(null), StandardCharsets.UTF_8)
+ "&"
+ URLEncoder.encode(SaleDTO_.product + "." + SearchOperation.EQUALS_ONE_OF.getOperationName()
+ "=[\\\"" + fields.getCurrentValue(DashboardSalesProductDTO_.productName).orElse(null) + "\\\"]", StandardCharsets.UTF_8)
+ "&"
+ URLEncoder.encode(SaleDTO_.fieldOfActivity + "." + SearchOperation.EQUALS_ONE_OF.getOperationName()
+ "=[\\\"" + FieldOfActivity.IT.getValue() + "\\\",\\\"" + FieldOfActivity.MEDIA.getValue() + "\\\"]", StandardCharsets.UTF_8)
+ "\"}";
//And lots of logic to skip field filter if its value is null...
Info
This is a draft Java API — we will improve it but also make breaking changes in it very likely in next releases. So, please, do not use it in you production code for now, but your feedback is essential!
Other Changes
CXBOX (Core Ui)
We have released a new 2.5.2 CORE UI version.
Other Changes
CXBOX 4.0.0-M16 (Core)
We have released a new 4.0.0-M16 CORE version.
Added: NEW! Java API for confirm preActions
New Java API for confirm preActions in the CORE now provides with a standardized and unified behavior for both confirm
and confirmWithWidget
preActions.
1)confirm
preAction
title
or text
set explicitly
PreAction.confirm(cf -> cf
.title("Approve?")
.text("Changes will be saved")
.yesText("Approve and Save")
.noText("Cancel"))

If you call .title(null)
or don't call title(..)
at all, the default title is displayed (actually its translation).
PreAction.confirm(cf -> cf
.text("Changes will be saved")
.yesText("Approve and Save")
.noText("Cancel"))

If you call .text(null)
or don't call text(..)
at all, the auto-generated text is displayed.

2)confirmWithWidget
preAction (replacement for old confirmWithCustomWidget
in demo)
If title
contains a value, it is displayed.
PreAction.confirmWithWidget("meetingResultFormPopup", cf -> cf
.title("Approve?")
.yesText("Approve and Save")
.noText("Cancel")
)

Added: MultivalueField & MultivalueFieldSingleValue - Implemented Serializable
We have implemented Serializable for MultivalueField
and MultivalueFieldSingleValue
to ensure compatibility with springSessionJDBC. This change allows the backend to serialize bcState using the JDK serializer (instead of Jackson) by default, resolving issues with inconsistent behavior when attempting to serialize these objects.
Added: Spring Boot upgraded up to 3.3.8
In response to security requirements, we have upgraded Spring Boot from 3.3.4 to 3.3.8. This update also automatically upgraded transitive dependencies, resolving most security-related issues.
Other Changes
See cxbox 4.0.0-M16 changelog.
CXBOX plugin
We've updated the plugin to version 1.7.9
Added: Run Inspections Button
We have added a Run Inspections button to the IntelliJ IDEA sidebar, enabling one-click execution of inspections across the entire project. The functionality automates the manual steps required to run inspections, eliminating the need to configure profiles or adjust settings.
Added: AdditionalInfo widget - fieldKey validation in *.widget.json
Added inspections for AdditionalInfo widget, following the same logic as Info widget. Now, if a fieldKey
in layout
is missing or does not reference a field from fields
, an inspection warning is triggered.
Added: Inspection for options -> create/edit -> widget in *.widget.json
Added an inspection to ensure that widgets referenced in create
and edit
parameters are present on the same view as the main widget. Missing widgets are automatically added to the view.
Added: postAction drillDownAndWaitUntil - validation for successCondition_bcName
We have added a validation check to verify that the field specified in the successCondition_bcName parameter is present on the indicated bc in the drillDownAndWaitUntil postAction.
Added: multipleSelect field - updated method for field auto-generation in *.widget.json
Now, when adding a multipleSelect field via the + button, the plugin automatically generates the necessary code. If the project's core version supports it, the generated code will use setConcreteValues()
instead of setDictionaryTypeWithCustomValues()
marked as @deprecated since 4.0.0-M12.
Fixed: inlinePicklist field - parent bc check in *.widget.json
Fixed the inspection for popupBcName
in *.widget.json, ensuring that it correctly checks that the referenced business component (bc) is a child to the parent widget's bc.
Added: @SearchParam – enhanced inspection algorithm
We've improved the validation of the path to the filtered field, ensuring better compatibility with microservices (Anysource services). Additionally, we resolved an issue affecting the inspection process in cases where the initial annotated field lacked an explicitly specified path.