Form UI

Form UI

In older versions of IO Ninja (version 5.2.x and earlier), plugins could only have user interface (UI) elements in the toolbar and status bar — plus, of course, the property grid on the modal "Settings" dialog. This worked OK in most cases, but it was quite a limitation — imagine trying to fit all the necessary controls into a single line of the session toolbar!

Now, every plugin can use fully-fledged interactive forms without any restrictions. Buttons, labels, line editors, combo boxes, lists — every UI tool in the book is now at your disposal.


Buttons are used to trigger actions (command buttons), represent ON/OFF switches (checkboxes), and select one of several mutually exclusive options (radio buttons).

There are two visual styles for buttons — the standard "system" look and the more compact toolbar style.


Input controls allow users to enter a specific value — with or without validation.

IO Ninja offers line editors, number spinners, and combo boxes consisting of a line editor with a drop-down list of predefined options.


Container widgets are used to represent collections of uniform items.

List widgets display planar lists of elements (e.g., clients connected to a TCP server) — optionally with a selector checkbox column for selecting a subset of elements.

Dictionary widgets show and allow convenient in-place editing of key-value stores (e.g., HTTP headers).


UI widgets are organized and aligned using a simple, yet powerful layout system.

The vbox layout automatically aligns UI items into a vertical column (top-to-bottom), the hbox layout puts them into a horizontal row (left-to-right), and the form layout creates a two-column (label-field) grid. There are also group boxes to put logically adjacent items together.

IO Ninja's form UI engine allows for the creation and organization of any form imaginable. We also plan to gradually expand the list of available widgets for more domain-specific tasks.

All this makes IO Ninja's already slick interface even more convenient and easy to use!