Open Source & Free ❤️

Using Component Placeholders While Loading Data

In my last post I introduced the new CN.invokeWithoutBlocking() method as a means of ensuring that your UI construction code doesn’t run into any “blocking” that could negatively affect user experience. In cases where you need to perform a network request to help build your UI, I offered some recommendations for moving blocking code out

When You Cannot Afford to Block the EDT

We recently added support for disabling invokeAndBlock() for certain sections of code. The syntax is: CN.invokeWithoutBlocking(()->{ // This code is not allowed to call invokeAndBlock() }); If any attempt is made to execute invokeAndBlock() inside that block of code, it will throw a BlockingDisallowedException. This can be useful for ensuring that your UI will be

Updates and Expansion

I haven’t blogged in a while. I’ve been busy working with a couple of startups, some enterprise customers and bringing new people on-board. Steve has been great in picking up some of the slack but his plate is too full to blog with the same frequency I had so the blog slowed down a bit

Runtime Debugging with Groovy Console

We recently added a new tool to the Codename One simulator that will allow you to run arbitrary code snippets in your app’s runtime environment.   You can access it from “File” > “Groovy Console”, while your app is running in the simulator. This will open the following dialog that will allow you to execute

WKWebView and PRs

We still have features to cover from our summer vacation but we need to make a short de-tour through newer things that landed recently. One of the big highlights is the switch to WKWebView. We effectively changed the default iOS browser component to WKWebView instead of UIWebView. This resolved warnings Apple started sending out to

Push Cheatsheet

Push support is one of the most complicated features to set up, due to all of the red tape you have to cut through on each platform. Each platform has its own series of hurdles you have to jump through. Apple (iOS) requires you to generate push certificates. Google (Android) requries you to set up

Terse Table, Radar Chart and Networking Enhancements

This is the 3rd installment of the updates we did over the summer and so far it isn’t the last one. We have at least one more part coming in next week…​ Terse Table Layout TableLayout is pretty darn verbose e.g. this snippet from the TableLayout JavaDoc: cnt.add(tl.createConstraint(). horizontalSpan(2). heightPercentage(80). verticalAlign(Component.CENTER). horizontalAlign(Component.CENTER), new Label(“Span H”)).

Icon Fonts, Popups and Infinite Scroll

As I mentioned in the last post there are a lot of new features we need to go over and it will take time to cover everything. In fact this is still a partial list and there’s a lot more on the way…​ Easier Icon Font Integration First off Thomas submitted a PR for a

We're Back from Vacation

Summer is finally over and the kids are going back to school/kindergarten so it’s time to go back to our regularly scheduled posts. I won’t be posting as often as before as I’ll dedicate more time for support/development activities but still there’s a lot to write about…​ During our time off we had a lot

Summer Vacation

You might have noticed we’ve been a bit slow with updates over the past couple of weeks as we’re dealing with a bit of a backlog. With the kids on holiday from school it’s harder to keep up not to mention our travel plans for the summer. As such we’re officially in summer vacation until

Post Message

BrowserComponent is a pretty powerful tool when you just want to integrate HTML into your application. We use it a lot in native apps, but surprisingly it’s just as useful when we compile an app as a web application. It lets us embed HTML into the web application. But there’s a big caveat known as

Flamingo SVG Transcoder Revisited

A couple of years ago I wrote about our support for Flamingo which translates static SVG files to Java source files that you can treat as images within Codename One while getting pixel perfect resolution independent results. There were a few minor changes since until a month ago when Steve committed some work to address