Tulip: Custom Player Proof Of Concept

Published on December 26, 2022.

Here's an update regarding this project.

In April of this year, Tulip added support for plugins. With plugins, developers can extend Tulip's core functionality, by creating Widgets (custom components / controls that can be used in Tulip apps) and custom Connectors (which can be used to integrate Tulip with external systems). In previous posts, I wrote about some of the Widgets that I've developed, including the popular DataTable Custom Widget, the Handlebars Custom Widget, and the jsExecute Custom Widget.

Recently, I wondered if it might be possible to extend the Tulip Player itself. Or better yet, if it would be possible to develop a custom Tulip player. If so, then we would be able to add functionality to our Tulip apps in an entirely new way.

So I started experimenting, and as a proof of concept, I developed something that I'm calling "Petal."

Petal

Petal is a desktop application that I've developed using Xojo. It essentially embeds Tulip's browser-based player.

Here's an animation showing a very basic proof of concept version of Petal.

Click the image to view a larger version.

To embed the Tulip browser-based player, I'm using an instance of Xojo's DesktopHTMLViewer class. Petal sends messages to the embedded Web app using a combination of DesktopHTMLViewer's ExecuteJavaScript and ExecuteJavaScriptSync methods. The Tulip app sends messages to Petal using the executeInXojo and executeInXojoSync JavaScript functions, and the DesktopHTMLViewer instance receives the messages via its JavaScriptRequest event handler.

In the example above, the Tulip app is very basic. Here's a screen shot showing the app in Tulip's App Editor.

Click the image to view a larger version.

The Xojo app is also very basic. It consists of a single Window, a couple of buttons, and an instance of the DesktopHTMLViewer class. One of the buttons ("Set TextArea Value") uses ExecuteJavaScript to set the textarea value in the Tulip app. The other button injects the "Send Message to Xojo" button into the Tulip app. I plan to replace the second button with a custom Widget, which will execute the "executeInXojo" JavaScipt function when it's clicked.

Here's a screen shot of the Xojo project.

Click the image to view a larger version.

Next Steps

As I mentioned earlier, Petal is still very much a proof of concept. But I'm excited to experiment with it more and see what I can really do with it.

For example, I'm planning to test the app to see if it can run properly on Raspberry Pi devices. I'm also curious to see what additional functionality can be added to Tulip apps. I'm planning to connect Petal to IIoT devices and to sensors such as Phidgets. (In an earlier post, I wrote about Phidgets and how you we tap into them using Xojo-based apps.)

If you're interested, look for updates here on my blog or on LinkedIn.

About Me

Hello, I'm Tim Dietrich. I develop custom software for businesses that are running on NetSuite, including mobile apps, Web portals, Web APIs, and more.

I'm the developer of several popular NetSuite open source solutions, including the SuiteQL Query Tool, SuiteAPI, and more.

I founded SuiteStep, a NetSuite development studio, to provide custom software and AI solutions - and continue pushing the boundaries of what's possible on the NetSuite platform.

Copyright © 2025 Tim Dietrich.