We have released 2026.R2 version of MindFusion Java Swing Pack. It contains the following new features and improvements:
MindFusion.DiagrammingAuto-routing improvements- Set the WhileModifying flag in TriggerRerouting to reroute links while users drag their end points.
- Enable the MinimizeCrossings property of PatternRouter to make it select routes with fewer crossings. Note that this adds an additional loop to the algorithm, which may affect performance for large diagrams.
- New EvaluateFarPoints property of RoutingOptions, considered by PatternRouter and GridRouter, selects the best route from the possible start/end point combinations of the link's incident nodes. Note that this adds an additional loop to the algorithms, which may affect performance for large diagrams.
- Set the MinLinkSpacing property of CompositeRouter to specify the padding between nearby links.
- This screenshot demonstrates the effects of EvaluateFarPoints and MinimizeCrossings properties:
Custom lasso toolsIf you set the Behavior property of DiagramView to DrawLasso, the control lets users draw selection lasso without changing actual Selection. You could use that in conjunction with initializeLasso and lassoDrawn events to implement custom tools or selection logic, such as:
- Opening a custom context menu or UI panel styled for bulk operations.
- Creating a visual screenshot / export of only the selected region.
- Implementing custom selection logic or filters (e.g. select nodes of a specific type, or select only links).
- Bookmarking the selected area (adding it to Bookmarks).
Serialization improvements- Json element added to SaveToStringFormat enumeration, and can be used with saveToString and loadFromString methods.
- For naming consistency with XML serialization methods, JSON methods (saveToJsonFile, saveToJsonObject, etc) have been renamed to saveToJson and loadFromJson.
- JSON serialization methods extended to provide full set of OutputStream / InputStream overloads.
- XML serialization methods extended to provide full set of OutputStream / InputStream overloads (previously missing from DiagramDocument).
- AutoDeleteItems now saved in JSON format.
- Custom dash styles of DiagramItem's Pen property are now saved in JSON format.
- LaneGrid cell border styling now saved in JSON format.
- LaneGrid header fonts now saved in JSON format.
- The order of OutgoingLinks and IncomingLinks is now preserved in JSON format.
Miscellaneous- nodeModified event is now also raised when users adjust the shape of a FreeFormNode by moving a FreeFormHandle. The AdjustmentHandle property of NodeEvent now reports the AdjustmentHandle instance used to modify a node. Previous move/resize/rotate enumeration value is now returned by getNodeHandleType method.
- NodeElement property of LinkValidationEvent returns the TreeViewItem or TableNode cell related to the event.
- Fixed bitmap deserialization exception when loading pre-v4.1.4 XML files.
API changes- Attention: loadFromJson(string) parameter now specifies file name. Call loadFromString to load from JSON data string instead. Replace saveToJson -> String calls with saveToString(SaveToStringFormat.Json);
- saveToJsonFile and saveToJsonObject replaced by saveToJson overloads.
- loadFromJsonFile and loadFromJsonObject replaced by loadFromJson overloads.
- The type of AdjustmentHandle property of NodeEvent changed from NodeHandleType enum to AdjustmentHandle reference. Previous move/resize/rotate enumeration value is now returned by getNodeHandleType method.
- ZoomBehavior class renamed to LassoBehavior (it now implements both DrawLasso and Zoom behaviors).
MindFusion.SpreadsheetWhole-column and whole-row referencesFormulas can now reference entire columns, such as =SUM(A:B), or entire rows, such as =SUM(1:5).
- Relative, absolute, and mixed references are supported (A:C, $A:$C, 1:5, $1:$5).
- Cross-sheet whole-range references are supported, e.g. =SUM(Sheet2!A:B).
- The calculation engine and lookup functions (VLOOKUP, HLOOKUP, LOOKUP, XLOOKUP) have been optimized to leverage sparse cell storage, efficiently evaluating whole-range references without iterating over empty cells.
- In-place formula editing and the formula bar now highlight whole-column and whole-row ranges in matching colors on both the text editor and grid view.
- Relative whole-range references are automatically refactored during cell copy, paste, and insert / delete operations.
New chart typesThe ChartType enumeration and spreadsheet drawing layer have been expanded with several new chart types (demonstrated in SpecialtyCharts sample project):
- Heatmap: Displays 2D data intensity maps using a grid layout, supporting 3 or 4 values per data element (X, Y, intensity, and optional radius) as well as data labels.
- Funnel: Visualizes progressive process stages, showing proportional segment sizes and inner stage labels.
- Tower: Displays event sequences and comparisons side by side using stacked rectangular segments with inner data label support.
Miscellaneous- Improved text rendering quality inside charts.
- The built-in ChartForm dialog now uses a selection list for chart categories, providing support for all newly introduced chart types and subtypes.
- SourceProvider property added to Picture lets you implement on-demand image loading via a Supplier callback, to reduce initial load times and memory footprint in image-heavy workbooks.
MindFusion.ChartingHeat mapsThe HeatmapChart control and respective HeatmapRenderer can be used to draw heatmaps. A heatmap accumulates intensity values of data points and maps them (scaled to MaxIntensity) to the colors and positions listed in Colors gradient object. This control expects a series of at least three dimensions, where first and second values specify coordinates, and third one specifies intensity. Optional fourth dimension can return radius value per data point; if not provided, the control applies the DefaultRadius property value. The convenience HeatmapSeries class implements such 4-dimensional series by storing values in HeatmapPoint objects.
The color of each grid cell is calculated by interpolating series data using the algorithm specified by Interpolation:
- Accumulative - samples radial falloff intensities at cell centers based on data point coordinates and radius.
- InverseDistance - applies Inverse Distance Weighting (IDW) spatial interpolation from surrounding points.
- NearestNeighbor - assigns the intensity value of the closest data point to each cell.
Grid cell borders can be customized using the ShowGridLines and GridLineColor properties.
Axis interval alignmentThe Axis class now features an automatic "nice number" interval calculation algorithm that snaps auto-calculated intervals to clear, human-readable increments (powers of 10 scaled by 1, 2, or 5) rather than arbitrary decimal fractions:
- The AlignIntervals property (default true) controls whether calculated intervals are rounded to the nearest nice numbers.
- The TargetDivisions property specifies the preferred number of subdivisions across the visible axis span (defaults to 10).
- The read-only EffectiveInterval property exposes the active step size used by AxisRenderer.
Miscellaneous- BubbleRenderer and ScatterRenderer now dynamically adjust the measured axis data range to include bubble and scatter shapes, preventing them from clipping at plot edges.
- Added the OuterLabelOffset property to PieChart, allowing you to customize the distance between outer labels and the pie circle.
Virtual KeyboardAutomatic keyboard popupThe new KeyboardPopup utility provides declarative virtual keyboard auto-show capabilities for Java Swing applications. Using Swing's attached client properties, it enables the on-screen keyboard to automatically pop up when an input field receives focus and hide when focus leaves, with zero focus-listener boilerplate:
- AutoShow - enables or disables automatic popup display for the target component (or for all child components when set on a container).
- LayoutMode - specifies the keyboard layout (Default, Extended, Compact, Numeric3x4, or Numeric4x4) associated with the focused control.
- PopupPlacement - defines the popup position relative to the field (Bottom, Top, Left, Right, FormBottom, or ScreenBottom).
- CustomLayout - allows assigning a custom KeyboardLayout template to specific fields.
The popup uses a non-activating window architecture, ensuring that clicks on the virtual keyboard never steal focus or carets from the active text field.
// Enable automatic popup with Compact layout for all fields in the window
VirtualKeyboard.setAutoShow(this, true);
VirtualKeyboard.setLayoutMode(this, KeyboardMode.Compact);
// Assign specialized numeric layouts to specific input fields
VirtualKeyboard.setLayoutMode(txtUserID, KeyboardMode.Numeric3x4);
VirtualKeyboard.setLayoutMode(txtPhone, KeyboardMode.Numeric4x4);
New standard layoutsThree new built-in keyboard layouts have been added to the KeyboardMode enumeration and can be activated via the Mode property or retrieved as reusable KeyboardLayout templates:
- Compact – a streamlined layout without function keys (F1–F12) or redundant modifiers, ideal for mobile, touch, and compact popup windows.
- Numeric3x4 – a 3×4 telephone-style numeric keypad with 0–9 digits, Backspace, and Clear (C).
- Numeric4x4 – a 4×4 numeric keypad including 0–9, decimal point, minus sign, Backspace, Clear, Tab, and Enter.
// Select a layout mode directly
virtualKeyboard.setMode(KeyboardMode.Compact);
// Or use static factory methods for LayoutRing or TemplateLayout
KeyboardLayout layout = KeyboardLayout.compactLayout();
...
Miscellaneous- Added ClearKey class and static Key.CLEAR property to clear the contents of currently focused input controls.
- Automatic password detection: the auto-show popup automatically enables PasswordMode when the target field is a password box.
Distribution for the latest version can be downloaded here, or from the
clients area on our site:
https://mindfusion.dev/JPack.zipUpdated JAR is also available at the Maven Central Repository:
https://search.maven.org/artifact/eu.mindfusion/packEnjoy!