Open Source & Free  

TIP: Don't Put Text Fields in Dialogs

Text input is a very special case. Besides mixing the native and Java code we also need to deal with the appearance of the virtual keyboard which doesn’t act consistently across platforms. This creates many complex edge cases that are just as problematic on native OS platforms as they are in Codename One. When we TIP: Don't Put Text Fields in Dialogs

Kotlin WORA for iOS (iPhone), Windows & Android

We received some interest related to Kotlin over the past couple of years and this has risen noticeably in the past month or so. Up until now we tried to be very focused on Java which is why we didn’t add support to other JVM languages even though this shouldn’t be too hard. But Kotlins Kotlin WORA for iOS (iPhone), Windows & Android

Tutorial: Storage, File System and SQL

Storage is one of the big subjects we can delve into and never come out. Even without going into offshoots such as parsing, networking etc. it’s still a pretty huge subject. We tried to simplify a lot of these problems by splitting file system from storage in Codename One but this often caused a different Tutorial: Storage, File System and SQL

New Online Courses – Coming Soon

You might have noticed that I haven’t been committing as much code recently. It’s because I’ve been working on 3 new online Codename One courses. One of my main goals with the bootcamp was to improve my video skills and modernize course materials. I’m well on my way with both and created pretty exhaustive materials New Online Courses – Coming Soon

Clearable Text Field

A common request over the past couple of years has been to add a text field that supports a clear button in the end, we used to have a common answer on how this can be implemented but we didn’t have an actual implementation builtin despite this being a relatively common request. At first I Clearable Text Field

TIP: Don't Ask Again

One of my favorite things about Mac OS is something subtle that took me a while to notice: it doesn’t ask stupid questions. If you delete a file on a Mac it goes to the trashcan immediately, no question. Even though other OS’s copied the trashcan concept they didn’t embrace it in the same way, TIP: Don't Ask Again

Tutorial – Properties

I’ve discussed properties a couple of times before but never in a condensed video tutorial like the one we have here. In this video we review the value proposition behind properties as a step by step process. I hope to create more elaborate properties demos that would show off the full capabilities of this API.

Flamingo SVG Transcoder

SVG (Scalable Vector Graphics) is an XML based image format that represents an image as vectors instead of pixels (raster). An SVG file is represented by the set of lines & shapes that make it and can thus be rendered at any resolution without quality degradation due to scaling. It has some other neat tricks Flamingo SVG Transcoder

Static Global Context

A developer recently asked me why Display is called Display when it has such a broad purpose? The reason is historic with roots in Codename One’s origin back in 2007, when we formed the company Chen advocated for a rename of that class and I disagreed. In retrospect I was wrong, the name doesn’t work. Static Global Context

TIP: Understand Image Masking Performance

Image masking allows us to adapt an image which we acquired from an external source to fit our design e.g. if we want to show an image cropped to a circle we could apply a mask to it in order to get an intelligent crop. This is a very powerful tool as a designer can TIP: Understand Image Masking Performance

Tutorial – Theming Basics

Theming allows us to adapt the look of an application in a similar way to CSS while styling allows us to do so within the code. In this tutorial I cover only a small fraction of the subject matter but after going thru it you should have a decent understanding of the forces at play Tutorial – Theming Basics

SplitPane, Cursors and Push Registration

Until this weeks release push notification was registered using Display.registerPush(Hashtable, boolean) the thing is that both of these arguments to that method are no longer used or not the best way to implement registration. So we deprecated that method and introduced a new version of the method Display.registerPush(). Since push fallback hasn’t been supported since SplitPane, Cursors and Push Registration