v0.0.1-rc.10 Customize frame click behavior and customizable frame renderer
Pre-releaseRelease Notes - v0.0.1-rc.10 (since v0.0.1-rc.9)
✨ New Features
-
Horizontal-only frame expansion - New
EXPAND_FRAMEclick action that expands frames horizontally while keeping vertical position (165c3ad)FOCUS_FRAME: Single click highlights, double click zoomsvar flamegraphView = new FlamegraphView<MyNode>(); // This is the default, no need to set explicitly flamegraphView.setFrameClickAction(FlamegraphView.FrameClickAction.FOCUS_FRAME);
EXPAND_FRAME(new): Single click expands frame horizontally (keeps vertical position)var flamegraphView = new FlamegraphView<MyNode>(); flamegraphView.setFrameClickAction(FlamegraphView.FrameClickAction.EXPAND_FRAME);
-
Exposed
FrameRendererinterface - Allows custom frame rendering implementations (214151d)
Set the renderer viaflamegraphView.setFrameRender(renderer).- Support for rounded rectangle frame shapes -
DefaultFrameRenderer(cbe574f)var renderer = new DefaultFrameRenderer<>( frameTextsProvider, frameColorProvider, frameFontProvider ); renderer.setRoundedFrame(true);
- For fully custom shapes, implement
FrameRendererand overridereusableFrameShape():public class CustomShapeRenderer<T> implements FrameRenderer<T> { @Override public RectangularShape reusableFrameShape() { return new RoundRectangle2D.Double(0, 0, 0, 0, 10, 10); // custom arc } // ... other methods }
- Support for rounded rectangle frame shapes -
🐛 Bug Fixes
- Fixed void space when focusing on edge frames - Added proper clamping to prevent scrolling beyond canvas bounds (a21d51c)
- Fixed EDT violation when zooming (538759b)
- Fixed choppy scrolling - Debounced sibling frame computation for smoother performance (2cd292c)
- Fixed frame alignment in mode switch & expand/shrink (9e878f9)
- Fixed horizontal scrollbar visibility on zoom (ed91e3a)
- Fixed expand reset behavior for frames having viewport width (e298544)
- Fixed zoom animation anchor in expand mode (241c3fa)
- Fixed resize loop - Rare case in Flamegraph mode when resizing (81751af)
- Fixed reset zoom when clicking on same zoomed frame (eee6360)
📝 Deprecations
-
setRenderConfigurationis deprecated - UsesetFrameRender(new DefaultFrameRenderer<>(...))instead (8922190)-
Before (deprecated):
var flamegraphView = new FlamegraphView<MyNode>(); flamegraphView.setRenderConfiguration( FrameTextsProvider.of(frame -> frame.actualNode.toString()), FrameColorProvider.defaultColorProvider(f -> Color.BLUE), FrameFontProvider.defaultFontProvider() );
-
After (new):
var flamegraphView = new FlamegraphView<MyNode>(); flamegraphView.setFrameRender( new DefaultFrameRenderer<>( FrameTextsProvider.of(frame -> frame.actualNode.toString()), FrameColorProvider.defaultColorProvider(f -> Color.BLUE), FrameFontProvider.defaultFontProvider() ) );
-
The new API exposes the
FrameRendererinterface, allowing custom frame rendering implementations beyondDefaultFrameRenderer. -
Related deprecated methods on
FlamegraphView:setFrameColorProvider,setFrameFontProvider,setFrameTextsProvider,setFrameGapEnabledand their getters. These now live onDefaultFrameRendererdirectly.
-
🎨 UI Improvements
- Minimap now positioned at top in flamegraph mode (4b9dd76)
- Disabled dimming of non-focused flames by default (825b652)
🏗️ Infrastructure
- Upgraded to Gradle 9.2.1
- Migrated to nmcp plugin for Maven Central publishing (jreleaser was leaking too many libs)
- Snapshots now published to new Maven Central Portal: https://central.sonatype.com/repository/maven-snapshots/
- Many dependency updates
Full Changelog: v0.0.1-rc.9...v0.0.1-rc.10