JMonkeyEngine Contributions Lemur Versions Save

Lemur is a jMonkeyEngine-based UI toolkit.

v1.16.0

2 years ago

Small maintenance release with some potentially breaking changes. See full change log below. Also upgraded to support gradle 7.4.2 and publishing to maven central.

Change log:

  • Added QuadBackgroundComponent.set/getAlphaDiscard(). Breaking change: QuadBackgroundComponent now defaults to 0 alpha discard instead of the previous hard-coded 0.1 discard threshold. Discard should be unnecessary for 2D UIs and may only be rarely necessary for 3D UIs.
  • Added IconComponent.set/getAlphaDiscard(). Breaking change: IconComponent now defaults to 0 alpha discard instead of the previous hard-coded 0.1 discard threshold. Discard should be unnecessary for 2D UIs and may only be rarely necessary for 3D UIs.
  • Migrated the build to gradle 7.4.2
  • Moved distribution to maven central.

lemur-proto-v1.13.0

2 years ago

Small maintenance release.
Also upgraded to support gradle 7.4.2 and publishing to maven central.

Change log:

  • Added DefaultCellRenderer.getElementId() and deprecated DefaultCellRenderer.getElement() since it was a typo that made it into a release.
  • Fixed the cell renderer configureStyle() behavior to pass the original element ID instead of the ListBox.getElementId() which will have already been a container child of the original. This fixes a bug where the list style would drastically change when swapping in a new renderer.
  • Fixed Spinner to disable/enable the previous/next buttons when the spinner is disabled/enabled.
  • Fixed Selector to reset its selected item reference when setSelectedItem() is called instead of delaying it until next frame.
  • Migrated the build to gradle 7.4.2
  • Moved distribution to maven central.

lemur-props-v1.2.0

2 years ago

This is a non-code release that just upgrades the build and sets up publishing to maven central instead of jcenter.

Change log:

  • Migrated the build to gradle 7.4.2
  • Moved distribution to maven central.

v1.15.0

3 years ago

Incremental release with mostly bug fixes and javadocs. A few new convenience methods.

Change log:

  • Fixed a bug where moving a GuiComponent from one GUI element to another caused lingering state issues. This most prominently manifested when using icons in ListBox labels.
  • Added PopupState.clampToGui() for conveniently moving a GUI element so that it is fully on screen.
  • Added additional convenience constructors to DocumentModelFilter that allow passing filters directly instead of setting them post-construction.
  • Added PopupState.centerInGui() for conveniently centering a GUI element in the popup space.
  • Added CommandMap.addCommands() and Button.addClickCommands() that take a single argument instead of var-args. This is the most common case and prevents a bunch of extra 'unchecked' warnings because of the var-args arrays.
  • Fixed a subtle bug in the FocusManagerState where changing the focus during a focus change event may cause parts of the focus hierarchy to be left in an indeterminate state.
  • FocusNavigationState.requestChangeFocus() now checks for null parameters and throws an IllegalArgumentException instead of an NPE further down in the stack.
  • Added a TextField(model, elementId, style) constructor.
  • Fixed TextEntryComponent to skip navigating focus if there is no current focus.
  • Add some focusGained/focusLost trace logging to GuiControl.
  • Added VersionedReference, VersionedObject, and VersionedHolder method javadocs.
  • Fixed GuiControl.getPreferredSize() to return a clone of the preferred size override so that it's 'sharing' behvior matches that of when there is no preferred size override. (ie: you no longer have to defensively clone getPreferredSize() results even when there is an override in place.)
  • Fixed an assertion error in PickEventSession.getPickRay() caused by 'bad' camera setups.

lemur-proto-v1.12.0

3 years ago

Usability improvements and the new Selector and Spinner controls.

Change log:

  • Added SelectionModel.createSelectionReference() for obtaining a VersionedReference of just the single-selection state.
  • Fixed DefaultCellRenderer to use 'null' as the default style instead of "root". This fits the overall API better and was probably a hold over from before there were default styles. It still might be a breaking change for someone.
  • Fixed a bug where ListBox click listeners weren't getting executed.
  • Added a Selector GUI element for selecting options for a list of values. Basically it's a single value field that pops up a list box when clicked.
  • Added ColorChooser.set/getColor() that can be used to more conveniently access the edited color.
  • Added ValueRender and a default implemenation DefaultValueRenderer that are more general non-list-specific value renderers similar to ListBox's cell renderer.
  • Added ValueRenders which provides convenience factories for common value renderer use-cases.
  • Updated CellRenderer to extend ValueRenderer.
  • Modified ListBox to take a ValueRender to be more general. Since method signatures have changes this will be a breaking change for any ListBox-using code that cannot be recompiled.
  • Added a SequenceModel interface and some default implementations to represent a potentially unbounded sequence of values that can be navigated forwards or backwards.
  • Added a Spinner GUI element that allows next/previous through a SequenceModel as well as (optionally) direct entering a value.
  • Added a ListBox.getSelectedItem() convenience method for retrieving the single-selection item in the list box.

v1.14.0

3 years ago

Bug fixes and some usability improvements

Change log:

  • Added a default getId() implementation to BaseAppState so that it is compatible with the AppState interface in JME 3.3+.
  • Updated the style layer to clone cloneable values before applyting them to style targets. It will also deep clone lists and maps if necessary to allow for cloning child values. (Especially important for clonable action handlers in action maps.)
  • Fixed an NPE related to calling PasswordField.setOutputChar(null). Thanks, syluna.
  • Fixed GuiGlobals to add the LayerComparator to the Translucent bucket.
  • Modified GuiGlobals to support JME's headless mode for writing Lemur-using command line tools.
  • Modified InputMapper to check for null listeners in the add/remove listener methods. Throws IllegalArgumentException if null.
  • Added Texture-based constructor to IconComponent;
  • Added IconComponent.setMargin(Vector2f)
  • Added QuadBackgroundComponent.setMargin(Vector2f)
  • Added TbtQuadBackgroundComponent..setMargin(Vector2f)

lemur-props-v1.1.1

3 years ago

Just one tweak to the build file to no longer use wild-card versions for JME.

v1.13.0

5 years ago

Multi-gamepad support, tweaks to Popup effect management, other minor updates.

Change log:

  • Added constants EFFECT_OPEN and EFFECT_CLOSE to Panel to make it easier to standardize open/close effects.
  • Modified PopupState to use the new Panel.EFFECT_OPEN and Panel.EFFECT_CLOSE instead of string literals.
  • Added PopupState.getGuiSize() that returns the (potentially scaled) screen size based on the PopupState's guiNode.
  • Modified PopupState to properly request focus of the things it is popping up. Without this, keyboard navigation was trickier.
  • Modified InputMapper to map all gamepad buttons and axes, even if they don't match up with predefined constants.
  • Modified Axis to include constants for JOYSTICK_LEFT_TRIGGER and JOYSTICK_RIGHT_TRIGGER along with support in InputMapper.
  • Added support for multiple gamepads/joysticks. There is now a new InputDevice class that provides gamepad-specific versions of the regular Button/Axis constants. Support for non-joystick-specific mappings still works like before.
  • Modified DragHandler to have set/getConsumeDrags() and set/getConsumeDrops() for tweaking the internal boolean settings.
  • Added GuiGlobals.releaseFocus() and the corresponding FocusManagerState.releaseFocus() which are safe ways to clear the focus for a currently focused element if it is still focused. Useful for conditionally clearing focus when tearing down a window.
  • Modified PopupState to call releaseFocus() for the popup when it is closing.

lemur-proto-v1.11.0

5 years ago

Changes to OptionPanelState to use the standard PopupState instead of its own pop-up management.

Change log:

  • Modified OptionPanelState to delegate all popup stuff to PopupState. Breaking change: OptionPanelState will use PopupState's guiNode and will ignore the setting of any other local guiNode.
  • OptionPanel no longer releases cursor enabling because it was not the thing that requested cursor enabling. That's up to the caller now. Breaking change: any caller that was manually managing OptionPanels and expecting them to clean this up will now need to clean it up themselves.
  • OptionPanelState no longer calls OptionPanel.close() and instead delegates to PopupState.closePopup() to avoid double-running close effects, etc. and also to properly handle cursor/focus release.
    Breaking change: any user application relying on OptionPanel.close() to be called in an OptionPanel subclass will have to hook things a different way.

v1.12.0

5 years ago

Bug fixes and small feature updates.

Change log:

  • Fixed a bug in the new getPickRay() code where incorrect Rays were being created if the Gui Bucket didn't have a spatial at z=0.
  • Modified how TextEntryComponent calculates its cursor width to avoid cases where cursors weren't being drawn because of sub-pixel widths at certain screen locations.
  • Added a TextField.setPreferredCursorWidth() styleable attribute that can be used to change the default cursor width for text fields.
  • Modified DynamicInsetsComponent to treat the insets values as percentages instead of always making them sum to 1. (That behavior still happens if the total of min+max is more than 1.) This modification lets dynamic insets support dynamic stretching instead of just positioning. This is potentially a breaking change for code relying on the old normalization. (though that was kind of weird)
  • Fixed pick session bug caused by empty GUI nodes. (added a null check)
  • Added Button.EFFECT_ENABLE and Button.EFFECT_DISABLE constants and modified Button to call the appropriate effect chain during setEnabled(true/false).
  • Added Button.ButtonAction.Enabled and Button.ButtonAction.Disabled and modified Button to call the appropriate command chain during setEnabled(true/false).