The topic of User Interfaces has come up, and while I'm prepared to yield to the expertise of the JBossians (as they call themselves), I think that this is one of the keys to our success here.
Because we are dealing with various hardware protocols and various devices, and potentially various display types, I think we need to come up with an approach that separates the presentation from the meta-language used to describe the presentation, from the OpenRemote controller server, to the various hardware interfaces.
So it might look something like this:
(Presentation Layer)
|
(? GUI Engine/Presentation Meta-Language ?)
|
(Communications Layer)
|
(OpenRemote Server/JVM)
|
(Various Hardware interfaces, C daemons, child JVMs)
Now my concern here is that I can't quite grasp whether or not the GUI Engine/Presentation Meta-Language layer needs to be split between widget definitions and control definitions. Logically it seems that a lightswitch widget is a lightswitch widget is a lightswitch widget regardless of what protocol it hooks into. So we need the Presentation Meta-Language to somehow map an instance of a lightswitch widget to an address:
<Lightswitch>
<UI_Label>Living Room A</UI_Label>
<OR_Address>LvRmA</OR_Address>
</Lightswitch>
And then we have a GUI engine that can render this XML into a GUI. Then when the user interacts with the widget, it sends whatever to the OpenRemote server, then on the OpenRemote Server, it's almost as if we need another mapping file:
<Device>
<Protocol>x10</Protocol>
<GUI_Address>LvRmA</GUI_Address>
<HW_Address>A5</HW_Address>
</Device>
Then, as Christian is wanting to do, we provide a GUI utility that can be used to generate the GUI metadata. But I think we also provide a utility to generate the device metatdata as well. Should this be all wrapped up in one utility, or should there be separate utilities? Or am I just plain off my rocker?
It seems if we create these layers of metadata, then this thing becomes a whole lot more extensible, and more agile to change as our breadth of devices expands.
Personally, I have no interest in purchasing an iPhone until the device and subscription prices come waaayy down, so for me, in place of an IPhone, maybe I use an iPod Touch, or some other hand-held device, so I need the GUI to be done in such a way that I can port
it to whatever device I decide to use.
Likewise, even though I bring X10 stuff to the table here, I'm pretty down on the fact that the stuff hasn't made any strides to improve and become less buggy, and there haven't been any new killer devices released. So X10 has me disappointed, so I want this to be flexible to other hardware down the road.
