Nifty GUI Changelog

New in version 1.4.0

July 10th, 2014
  • jogamp.version: 2.1.5-01
  • fix: wrong nifty-lwjgl-renderer version
  • Merge pull request #241 from mkaring/1.4
  • Changed search for a droppable
  • jglfont-core-1.4 added
  • Stop the search for droppables in case a element that consumes (is visible to) mouse events is located covering any other droppable
  • use pgp-maven-plugin instead of gpg-maven-plugin for release signing
  • fix(jogl): missing shader files added and unused shaders removed (core)
  • fix(jogl): removed getGL2() for some GL calls
  • Merge pull request #240 from 3xp0n3nt/fix-broken-build
  • Fix broken build from JGLFontRenderer API change.
  • Fix broken build from JGLFontRenderer API change.

New in version 1.3 (June 27th, 2011)

  • Feature: Color handling improved: Invalid Colors are now reported in the
  • log and automatically set to #ffffffff instead of crashing :) and there
  • is now automatic extension of missing alpha values so a color like: "#123"
  • will not lead to an Exception anymore but is instead used with an automatic
  • alpha of "#f" so that the final color will be: "#123f" and this works for
  • long mode too ("#102030" -> "#102030ff")
  • Feature: cmd+x, cmd+c, cmd+v support on mac for instance for textfield
  • controls
  • Bugfix: #2948096: Change Text of ButtonControl
  • The following methods have been added to the ButtonControl: setText(),
  • getTextWidth(), getTextHeight(), getFont(), setFont(), setTextVAlign(),
  • setTextHAlign(), setColor(). This methods are for easy access to the
  • underlying elements so now you can change the Buttontext without
  • knowing the internal working of the Control. Just as one would expect.
  • Bugfix: #2956092: Dynamically Resize Buttons according to the text
  • The default behaviour of Buttoncontrols is to use the fixed width that
  • is definied in the style file. This hasn't been changed. If you simply
  • add a button control you will still get a button with a fixed width in
  • pixels that won't change if you change the text. You can specify a
  • different fixed size with the width property to override the default
  • width from the style when you use the button. What have been changed now
  • is, that when the button has no width set (from either the style or the
  • tag) then the button will always resize to
  • the text content. Because the style always comes with a default width
  • at the moment you'll need to manually override the width when you use
  • the button with an empty string. Example:
  • . This way the button does not have a
  • fixed width anymore and therefore it will be changed to the size of the
  • text. This will even work if you dynamically change the button text from
  • code. Remember that at the moment you still need to manually request a
  • relayout of the screen (screen.layoutLayers()).Note: To get the
  • automatic resizing working the CenterLayout layout type has been changed.
  • If you use a childLayout="center" for an element and this element does not
  • have a width constraint and the first child of this element (the actual
  • element that gets centered by the CenterLayout) has a fixed size than the
  • element you attached the "center" layout to it will be resized to the size
  • of the first element. If you don't want that to happen then you always
  • need to specify a width property to the element.
  • Bugfix: reset isCalculatedLineWrapping flag when TextRenderer text is
  • changed. this will trigger the relayout of the text element when text
  • wrapping is true and allows dynamically changing text with enabled text
  • wraping.
  • Bugfix: fixed rendering of unsupported characters (removed NPE)
  • Bugfix: unicode support fix for font rendering
  • Feature: allow popup creation with overriding style
  • Feature: additional smaller optimizations to the renderer
  • Feature: layout improvements: automatic text wrapping lead to a number of
  • changes in the layout algorithm to account for situations where nifty
  • automatically calculated the width of elements that had no width constraint
  • attached. layout is now a two pass mechanism to fix widths on the first
  • path and allow corrent line wrapping in the second pass.
  • Bugfix: delayed method invoke to end of frame for all callbacks. this should
  • resolve problems when a callback modifies existing elements.
  • Feature: setStyle() method to change styles will now not only affect
  • attributes of the element but it now does work for effects and interact
  • child attributes too
  • Feature: getVolume() method added to SoundHandle interface
  • Feature: getVolume() method added to SoundHandle interface
  • Bugfix: calling of onEndScreen() method on ScreenController fixed
  • Feature: fadeMusic effect added
  • Bugfix: made the padding attribute actual work with vertical and horizontal
  • layout managers
  • Feature: added "volume" attribute to playSound effect to adjust volume of
  • played sound. volume is a SizeValue so it is specified in percent,
  • example: volume="75%"
  • Feature: public extended SoundHandle interface with isPlaying() method
  • Bugfix: fixed SinusRaisedPulsator start value to 0 instead of 0.5
  • Bugfix: work in progress bugfix: if you combine an alpha changing effect
  • for instance fade with some element that changes the alpha too your changed
  • alpha by the element did overwrite the effect alpha. this caused some ugly
  • issues where the element was rendered with the original alpha values for
  • instance from #0 to #f and then jumped back to the actual alpha value,
  • say: #a when the effect ended. in this case the alpha value of the element
  • will win now. It's not sure if a) this fixes all issues and b) this might
  • cause other issues we'll watch this and correct if necessary
  • Feature: extended SoundHandle interface with isPlaying() method
  • Bugfix: work in progress fixing the padding feature for all layout managers
  • Feature: made the "pulsate" effect aware of the time, especially enabled
  • "startDelay" attribute and the pulsate is being reset to the beginning
  • when the effect actually starts
  • Feature: added "repeat" boolean attribute to the PlaySound effect to
  • autorepeat the played sound/music when repeat is set to "true"
  • Feature: made gradient effect aware of the time (this allows the gradient
  • effect work together with the startDelay attribute)
  • Bugfix: fixed border effect rendering
  • Bugfix: Textrendering: Fixed problems with changed alpha values and
  • colored text (Fade Effect) and fixed bug where changing colored inline
  • in text rendered unwanted characters
  • Feature: added "gradient" to the NiftyDefaults so that it is available
  • as a standard effect made the new renderQuad methods in the RenderEngine
  • aware of the current position so that for instance gradients can be
  • manipulated by the move or shake effects too
  • Bugfix: let mouse events travel down the element graph even when in
  • onStartScreen or onEndScreen "mode". this prevents events from being
  • lost. still interaction is not allowed while these two effects are active
  • but this is now prevented at element level when onStartScreen/onEndScreen
  • is active and not at screen/layer level anymore. additionally this commit
  • fixes a problem using alternate mode together with dynamically created
  • events. newly created elements did not take the alternate key into account
  • until now.
  • Feature: use instead of now.
  • the name attribute will be available but is deprecated.
  • Bugfix: fixed mouse clicked bug
  • Feature: added changeColorOnly="true|false" parameter to the pulsate effect.
  • when set to "true" the effect will only change the current color and when
  • set to false (which is the default) it will draw a colored an additional quad.
  • Feature: added callback to elementremove (internal) so that you can start
  • something when the element is really removed. element.remove() will be delayed
  • normally to the end of the render of the current frame
  • Feature: gradient now supports effectValues instead of fixed color values
  • Feature: text rendering with automatic line wrapping added: wrap="true"
  • together with a fixed width will automatically wrap text
  • Bugfix: fixed CenterLayout bug in right align mode
  • Feature: getAsColor helper added to Attributes
  • Feature: added special SinusRaisedPulsator that creates sinus values between
  • 0 and 1
  • Feature: gradient quad rendering with respect to current color alpha
  • Bugfix: fixed CenterLayout bug in right align mode
  • Feature: #2907132: Create Checkbox in unchecked State added attribute
  • checked="true|false" to checkbox control and refactored layout mechanism to
  • allow text wrapping
  • Feature: #2903207: Effects on TextField The TextColor effect will now use the
  • changed alpha value of the NiftyRenderEngine. This means that the TextColor
  • effect can be affected by other effects that change the current alpha value.
  • Feature: added a new method to the RenderDevice to render a quad with different
  • colors at the vertices for gradient effect support made linearInterpolator for
  • effect values a special case if there are effect values available with the
  • attribute "time". effect values are now always available to the effect implementations.
  • this allows for effect specific interpretation of the effect values and does not
  • force the usage of linearInterpolator.
  • Feature: LinearInterpolation KeyFrames for ImageSize and Fade effects. This
  • means you can now add: to the effects. applying a
  • style to any xml element and changing attributes in that element will now overwrite
  • the attributes from the style with the ones from the element. in the past the
  • style attributes always won. this might or might not change existing guis. but
  • it is now much more obvious IMHO
  • Bugfix: #2868002: TextRenderer always used the initial font for alignment calc
  • fixed! now the changed font is used for alignment calculation too
  • Feature: #2855595: Relax sequence of xml elements especially tags the
  • order of nifty main elements can now freely decided and are not constraint to a
  • certain order anymore final methods make sometimes sense but not really at the
  • element class ...
  • Bugfix: #2859600: ScreenController methods are called twice Ok, not sure if this
  • really fixes all issues BUT I've now changed it like this:
  • a) NiftyGameState.loadXml() will now only load the xml and not automatically
  • call onStartScreen() b) NiftyGameState.enter() does now check if there is a
  • "current" Screen and if so, it starts it with onStartScreen() is there no current
  • Screen it starts a screen with the name "start" (as loadXml() did before)
  • c) there is now a new method NiftyGameState.gotoScreen() that let's you goto a
  • different screen if you want (for instance after you've load a new xml with
  • loadXml() you can now select another screen to goto)d) not really related:
  • NiftyGameState now gives you the Nifty instance with getNifty() so that you can
  • easily do all sorts of things
  • Bugfix: #2855590: lastMouseDown flag not cleared when screen ends (Slick)
  • pending mouse events and especially the lastMouseDown flag are now automatically
  • cleared in onStartScreen and onEndScreen events. if necessary you can call
  • nifty.resetEvents() if you need to reset the events in special cases.
  • Bugfix: onStartScreen() of a ScreenController will now allow changing of the
  • current screen independently of any onStart effects (in former version this
  • was for some odd reason only possibly if you have any onStart effects on
  • any element of your screen. if you had none changing the current screen in
  • onStartScreen() was simply ignored. not it works for both cases)

New in version 0.0.5 (May 15th, 2009)

  • changed GL_CLIP_PLANES into glScissor() for better compatibilty in clipping
  • changed font loading to ResouceLoader from slick (no need to add local resources to the classpath when testing)
  • added property passwordChar="$passwordChar" to the TextFieldControl so you can create password fields now too :)
  • moved resources and xml styles into separate nifty-default-styles.jar
  • all effects now allow the length attribute to be set to "infinite" to create "endless" effects. this was possible before with using timeType="infinite" (and still is) but the new method might be a bit more appropriate
  • added support to save the "clip" RenderState. Changing the clipping region can now be used be effects too.
  • supports a "onRelease" event for mouse buttons too
  • introduced MouseOverEvent do not only add mouse over effects but also to react to them
  • New Effects: "border", "clip", "hideElement" and "remote" (see upcoming blog posts for details)
  • hover effects can now handle deactivate (kinda lost hover event) too
  • make sure to render hover effects before static effects
  • Standard Drop Down Control added
  • more dynamic popups added (popups created on the fly in code)
  • password protected text fields won't cut or copy any values out
  • maxLength() attribute added to the Textfield control
  • correct handling of $ parameter attributes in controls
  • setCursorPosition() method added to the TextFieldControl to change the cursor position
  • helper method "screen.findControl" added to make accessing controls easier