Starting with the new version of the NetBeans plugin we will have the new settings/preferences UI which we introduced in the IntelliJ/IDEA plugin. Currently this will be in addition to the main preferences but as we move forward we will only add features to the new settings UI.
You will be able to open the new project preferences UI by right clicking the project and selecting it in the Codename One section:
Figure 1. Launching the new preferences UI
Notice that the UX while similar has some distinct differences:
We use the mobile style of scrolling as it was built with Codename One
You can see global settings by clicking the "Globe" button on the top left
You can save/cancel using the X or save buttons on the top right.
We will probably make quite a few changes to this UI in the coming months to refine it further based on feedback from you guys.
The main motivation for doing this change is the new Windows UWP port which needed changes to the windows section of the preferences. Doing this 3 times over is silly, changing one single global preferences tool is always the right thing to do.
| || This isn’t yet implemented in the Eclipse plugin but it might be done before the next update |
Command Icon States
In a previous post we mentioned the ability to handle states in buttons and how that fits well with icon fonts.
A question in the post raised the issue of commands which support such states but the API isn’t there.
To solve this we added a version of
setMaterialIcon to FontImage that accepts a Command as its argument. This effectively makes commands work with such icon fonts.
To support that further we also added to Toolbar the methods:
These accept one of the
MATERIAL_* char constants from the
FontImage class to create the icon for a command relatively easily.
By default strings in Codename One are implicitly localized which is unique. Most frameworks require some level of intervention to implement localization but since Codename One was developed by people whose native language isn’t English we felt compelled to fix that…
Localization should be the default and Codename One does the right thing here, however sometimes you want to turn it off e.g. if you have a user submitted string that might be identical to an application resource bundle value.
Label we have the setShouldLocalize method which works great for disabling the implicit localization. However, as issue 1744 pointed out this needs to be done for other components too…
So we added the same method to
MultiButton. You can now control localization specifically in all of those components.
Image locking is an esoteric performance implementation detail that most of you can and should be unaware of.
In the coming update we fixed issue #1746 to also lock other button states (this was very visible with things like toggle buttons). But the main change was also changing the locking behavior to act more like a smartpointer and less as a boolean flag which should reduce the cases of memory thrashing when using the same encoded image, over and over…