-
Notifications
You must be signed in to change notification settings - Fork 0
Vision
What we want to achieve:
-
Full integration of a widget toolkit with the actor model without the need for developers to implement wrappers.
With increasing usage of actor toolkits there still remains some effort for developers to integrate their actor systems with widget toolkits, mostly to honor the concurrency model inherent to the widget toolkit. Integration in this context means providing a controller API that allows to send messages directly from outside of the widget toolkit to parts of the widget toolkit with the assurance that the message gets processed honoring the concurrency model inherent to the toolkit.
-
The user of the actor-based widget toolkit should be prevented as much as possible from misuse of the concurrency model inherent to the toolkit.
Some widget toolkits, e.g. Java's Swing, have a single thread dedicated to perform the UI related tasks. Honoring that concurrency model, using Swing, i.e. dispatching tasks to Swing's Event-Dispatch-Thread (EDT), has to be explicitly set up. Dishonoring it may result in a freezed UI or induce race conditions. One goal of the actor-based widget toolkit is to reduce this risk.
-
The actor-based widget toolkit should have no significant usability overhead compared to the usual ones.
The following example illustrates the minimum effort required to set up a simple UI with Scala's Swing wrappers:
import scala.swing._ object SwingUI extends SimpleSwingApplication { def top = new MainFrame { title = "Some Title" contents = new Label("Some Content") } }One goal of the actor-based widget toolkit is to mimic this in both simplicity and expressiveness, thus not reducing the productivity of developers.