Skip to content

Releases: jMonkeyEngine-Contributions/Lemur

LemurProps version 1.1.0

14 Feb 09:27
Compare
Choose a tag to compare

I guess this is the first 'official' release of this utility package that makes it simple to create debug-style property panels to control various settings using bean properties.

This version is a minor update over the 1.0 release.

Change log:

  • Added Double property support.

Lemur version 1.11.0

20 Nov 01:03
Compare
Choose a tag to compare

This is a long overdue release containing many community patches, bug fixes, and some new features.

Full change log:

  • Added IconComponent.setIconSize() to force the size of the icon before
    scaling.
  • Added additional PopupState.showModalPopup() convenience methods that take
    a background color.
  • Modified PopupState to automatically call runEffect("open") and runEffect("close")
    if the popup is a Panel (or subclass).
  • Added SpatialTweens.focusOn() to set the focus to a particular spatial as part of
    animation.
  • Fixed PopupState to take the current guiNode's scaling into account when calculating
    screen size for the blocker quad.
  • Worked around an NPE in PopupState caused be a JME bug on Node.getWorldBound() when the node
    is empty.
  • Added PickState methods for better managing "cursor interest" in the form of a
    request/release API.
  • Modified GuiGlobals to have methods for calling the new PickState request/release API
    for cursor enabling.
  • Modified GuiGlobals.setCursorEnabled(boolean) to internally call the new PickState.request/release
    calls. A new GuiGlobals.setCursorEnabled(boolean, force:boolean) method was added
    in case it is necessary to force the old behavior.
  • Modified PopupState to automatically call GuiGlobals.requestCursorEnabled() and
    releaseCursorEnabled() when opening/closing popups. This may be a breaking
    change for some applications.
  • Added a GuiGlobals.srgbaColor() method for conditionally creating linear colors from
    SRGB colors based on whether gamma is enabled or not.
  • Modified the groovy style API to (by default) use srgbaColor() internally. A flag
    can be specified to turn this off.
  • Fixed a bug in TextEntryComponent where the font wasn't being kept when changed. This caused
    issues like cursor positions being wrong, etc..
  • Deprecated Lemur's BaseAppState so apps know to prefer JME's built in version.
  • Fixed issue #53 where Panel.runEffect() would incorrectly return false for effects
    with no channel.
  • Fixed issue #54 where texture scaling was not being reapplied to cloned
    QuadBackgroundComponents.
  • Modified the GUI bucket picking code to dynamically say the Ray min/max Z values
    based on the world bounds of the root spatial. This should fix issue #55 as
    well as several other problems caused by GUI elements above z=1000. Also,
    negative Z GUI values are properly supported now, also.
  • Fixed an issue with key repeats in TextEntryComponent and lwjgl3 which seems to
    separate 'pressed' events from 'repeating' events for some reason.
    See PR 65.
  • Fixed the toString() of KeyAction to add the closing bracket ']'.
  • Modified TabbedPanel to expose a tab selection model, support get/set of selected
    tab, expose the list of tabs, and added insert/remove functionality. This
    meets and exceeds feature request #59
  • Fixed a bug in DragHandler where ortho dragging wasn't properly translating child
    spatials.
  • Enhanced DragHandler to allow indirect manipulation of a spatial by specifying
    a draggable locator Function. Useful for things like titlebar based dragging.
  • Set sourceCompatibility to 1.7 and turned on detailed warnings.
  • Fixed a bunch of deprecation and 'unchecked' warnings.
  • Part of that was a conversion from extending the internal BaseAppState to JME's
    BaseAppState which is a potentially breaking change for any application code
    that extends Lemur app states but expects enable()/disable() instead of
    onEnable()/onDisable().
  • Added a Button.click() method to allow calling code to manually trigger a button
    click.
  • Added Button.ButtonAction.Hover for notifying listeners about when the mouse is
    hovering over a button. This is useful for implementing things like repeating
    actions, etc.
  • Updated the built-in glass style to add repeat to slider +/- buttons.

LemurProto version 1.10.0

20 Nov 01:01
Compare
Choose a tag to compare
Pre-release

Minor update.

Change log:

  • Modified OptionPanelState and OptionPanel to automatically request/release
    the cursor using the new GuiGlobals.request/releaseCursorEnabled().
    This may be irrelevant if OptionPanelState is converted to use PopupState
    as it should be.
  • Set sourceCompatibility to 1.7 and turned on warnings.
  • Fixed some issues related to deprecation warnings and 'unchecked' generics
    warnings.
  • Part of that was a conversion from extending the internal BaseAppState to JME's
    BaseAppState which is a potentially breaking change for any application code
    that extends Lemur app states but expects enable()/disable() instead of
    onEnable()/onDisable(). In this case, just OptionPanelState.

Lemur version 1.10.1

18 Feb 06:43
Compare
Choose a tag to compare

A feature update that also includes several bug fixes. Highlights include refactoring DocumentModel usage, mouse wheel support, and a PasswordField.

Full change list for this release:

  • Added a proper toString() method to the LayerComparator.
  • Added a 'debug mode' to the PickEventSession which lets a caller selectively
    raise the logging level for a particular instance.
  • Removed a leftover unused 'index' field in GuiControl.
  • Added support for GuiUpdateListeners to GuiControl so that things like
    child GuiComponents can hook into the controlUpdate() without having
    to create another full control themselves.
  • Modified GuiControl to lazily instantiate its listener lists.
  • Added a TextField(DocumentModel) convenience constructor.
  • Added a DocumentModel.createCaratReference() method that returns a versioned
    reference for the carat position.
  • Fixed TextEntryComponent to be more reactive to external DocumentModel changes
    and it now uses that even for its own internal changes to the document.
  • Breaking change: DocumentModel has been moved to the com.simsilica.lemur.text
    package and is now an interface. Make sure any of your classes that use
    DocumentModel directly import it from the new location. If you instantiate
    a DocumentModel directly then now you will instantiate DefaultDocumentModel
    instead. Sorry. It needed to be done and was only going to get worse
    the longer I waited.
  • Added a DocumentModelFilter class that is a DocumentModel that wraps other
    DocumentModels to provide filtering and transformation. Callers can do simple
    filtering with Guava Functions and Subclasses can override the methods to
    provide more advanced transformation and input filtering.
  • Added a TextFilters class with a bunch of default input and output implementations
    for commonly used things.
  • Refactored TextField a bit to make it easier to subclass and override the model
    or TextEntryComponent.
  • Added a PasswordField that is auto-wired with some useful DocumentModelFilter
    behavior suitable for password fields. Includes stylable attributes for
    setting the output character and allowed input characters.
  • Fixed a bug where focus wasn't cleared for objects removed from the scene
    graph. The fix is a bit of a hack but there really isn't any other way.
    This fixes issues #42 and #28.
  • Modified the MouseAppState to pass along the scroll wheel information to the
    PickEventSessions. PickEventSession was modified to then pass on the appropriate
    scroll values and deltas to the MouseMotionEvents and CursorMotionEvents.
    CursorMotionEvent was enhanced to have getScrollValue() and getScrollDelta()
    methods.
  • Added an insert(String) method to DocumentModel and its implementations that
    allows bulk-insertion of text instead of just one character at a time
  • Fixed GuiGlobals to not crash under certain circumstances if the build info isn't
    available. Fixes issue #38
  • Fixed the human-readable names for some of the joystick-related input.Button constants.
  • Fixed an issue with mouse button events sending the wrong mouse wheel delta to cursor
    event listeners. Fixes issue #49

LemurProto version 1.9.1

18 Feb 06:39
Compare
Choose a tag to compare
Pre-release

A minor patch release that includes mouse wheel scrolling for ListBox and some more appropriate effect/list action triggering.

Changes in this release:

  • Added mouse wheel support to ListBox based on the new scroll support
    in Lemur 1.10.1.
  • Fixed some handling of ListAction events and the related effect triggers.
    Down and Up should be properly delivered as well as considering the whole
    list box in entered/exited/activate/deactivated states. Currently, moving
    over the scroll bar will still 'deactivate'.

Lemur version 1.9.1

19 Nov 10:36
Compare
Choose a tag to compare

A feature update release including several bug fixes. The highlights include basic key/joystick based focus navigation and a new PopupState useful for popping up temporary UI dialogs, popup-menus, etc..

Full change list for this release:

  • Fixed a bug in RollupPanel.setContents(null) where removing the existing
    contents was causing problems if the rollup panel was closed.
  • Fixed a code-spotted bug where setting a null layout would have caused an
    NPE.
  • Added basic focus navigation support including simple default implementations
    in the standard GUI elements.
  • Modified KeyAction to support SHIFT_DOWN in addition to CONTROL_DOWN.
  • Upated TextEntryComponent to hook up some standard keys to focus actions for
    single line text fields.
    Tab = Next, Shift+Tab = Previous, Enter = Next, Up = Up, Down = Down.
  • Added a ModifiedKeyInputEvent that extends JME's normal KeyInputEvent to
    provide modifier flags for alt, ctrl, shift, etc.. Modified the KeyInterceptorState
    to wrap KeyInputEvents in this event for delivery to the listeners. Listeners
    that want the modifiers (unfortunately) must cast to the more specific
    event class.
  • Added a KeyModifiers class and moved the key modifier bit constants to it.
  • Modified SpringGridLayout to keep its children in a LinkedHashMap so that the
    initial ordering is still available.
  • Made buttons "focusable" so that they can participate in focus navigation.
  • Added a focusColor and focusShadowColor to Button to indicate focus.
  • Added support for ButtonAction.FocusGained and ButtonAction.FocusLost button actions.
  • Added Button.EFFECT_FOCUS, Button.EFFECT_UNFOCUS effect triggers.
  • Fixed Button to update the active highlight color if it changes while the button
    has highlighting on.
  • Consolidated pressed/released/click handling into the main Button class and
    hooked up the focus activation event to pressed/released/click handling.
  • Added trace logging to InputMapper that logs the raw events received from JME.
  • Fixed a bug where Label's shadow text component wasn't picking up the max width
    if set.
  • Added method an AbstractCursorEvent.getLocation() convenience method for getting
    the event location as a Vector2f.
  • Added a general PopupState for managing modal and non-modal popups that can be
    closed by simply clicking outside of the popped up panel (or optionally block
    those events).
  • Added PopupState as a built-in state in GuiGlobals.

LemurProto version 1.8.1

19 Nov 10:33
Compare
Choose a tag to compare
Pre-release

Mostly a bug fix release and to support some of the newer Lemur features like proper focus management.

The big update is a prototype for a DragAndDropControl and related framework. This can be used to add drag-and-drop container support to any JME Spatial.

Changes in this release:

  • Fixed a missing body of the default constructor for ColorChooser.
  • OptionPanelState now requests focus for the option panel when shown.
  • Added additional information to the exception rethrown when CallMethodAction
    catches an IllegalArgumentException.
  • Fixed a bug in CallMethodAction where the wrong method could be selected if
    it had the same name but invalid argument types.
  • Added additional trace logging to CallMethodAction
  • Initial drag-and-drop support. See the new com.simsilica.lemur.dnd package.

Lemur version 1.8.2

15 Aug 06:16
Compare
Choose a tag to compare

A bug fix release over version 1.8.1 that includes:

  • Fixed a typo in the MathApi used by the style loader language.
    Now properly supports vec2().
  • Fixed a bug in Button where the highlight off state wasn't triggered
    if the button was disabled but highlight was on.
  • Fixed a bug in Tweens to support primitive arguments in the callMethods()
    tween.
  • Fixed a bug where the cursor of a text field would be invisible if the
    alpha value had never been set.
  • Fixed a bug in QuadBackgroundComponent and TbtQuadBackgroundComponent
    where the cached collision data wasn't being cleared on resize causing
    mouse picking to fail if the objects increased in size.

LemurProto version 1.7.1

15 Aug 06:14
Compare
Choose a tag to compare
Pre-release

Incremental release over 1.6.1.

Includes:

  • Added ListAction command support to ListBox along with default effect
    triggering. Currently includes actions similar to for buttons:
    Down, Up, Click, Entered, Exited
  • Fixed a bug in CallMethodAction where it wasn't searching for methods
    in the superclasses. Also added another trace() logging call.

Lemur version 1.8.1

28 Mar 07:02
Compare
Choose a tag to compare

This release is identical to 1.7.1 except that it has been recompiled to work with jMonkeyEngine 3.1.0 alpha4 or better. jME has refactored the Application class into an interface so all app states or anything else referencing the Application class need to be recompiled.

All future releases of Lemur will be alpha4 compatible or better. 1.7.1 is planned to be the last pre-alpha4 compatible release.

For reference, the 1.7.1 changes:

  • Added InputMapper.hasMappings() method to return true if a FunctionId
    has inputs associated with it.
  • Added InputMapper.getMappings(FunctionId) to return all of the input
    mappings currently associated with a particular function.
  • Added InputMapper.getFunctionIds() to return all FunctionIds that
    are registered with the InputMapper, either associated with inputs
    or with function listeners. (Useful for displaying configuration screens.)
  • Added InputMapper support for InputConfigListener so that applications can
    choose to be notified about changes to input mappings.
  • Added Label.setMaxWidth() which is a stylable attribute that constrains
    the width of the lable, forcing text to wrap and grow vertically if it
    exceeds that width. This helps with setting up layouts that include
    Labels that might wrap anyway because of other layout constraints.
    Because of the single-shot nature of preferred size calculation, it
    can't deal with components that change height because their width
    was constrained later.
  • Refactored MouseAppState and TouchAppState to share a common base class
    that contains the duplicate code.
  • Added a PickState interface that can be used to grab either the MouseAppState
    or TouchAppState depending on which is being used. This insulates applications
    from having to care.
  • Modified the pick states and pick session to support a 'pick layers' concept to
    provide better control over the order in which the layers are checked for collisions.
    By default, the GUI layer is checked and then the SCENE layer but the applications
    can now add their own layers by changing this ordering with PickState.setPickLayerOrder()
  • Pegged the JME dependency at alpha3 since the next version will be alpha4+ specific.