[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Hi all,
In general I'm positive to combining technologies, if they can add value 
to each other. But before doing that, we got to understand how they fit 
(or don't) together. And in this case, I think we need to look at the 
essential characteristics that are important. Let me try, and then I'll 
comment on Yves description and vision below.
We all seem to agree that we need declarative UI, which in this context 
means an explicit representation of the UI that can be edited, stored 
and turned into a real UI. There are at least three important aspects 
that can make technologies differ and that we must be aware of (BTW, 
this is a short version of an email I sent to the list 22/8-2008):
(Yves, please correct me if I'm wrong about XWT, in the description below).
The language (models of what):
The representation can be more or less specific to a particular toolkit 
(meaning that idiosyncrasies of the toolkit's API are visible). Abstract 
formats usually give less control, and some support toolkit-specific 
extensions to give extra control. Some toolkit-specific formats are 
(slightly) procedural, by depending on the toolkit-specific process of 
constructing the UI. E.g. XSWT included a special style attribute to 
handle SWT's style constructor argument, and tags that essentially 
encode general method calls. I think XAML has support for this through.
XWT is SWT-specific, but I believe XAML is not (as it's a general 
serialization format for object graphs). I believe XWT inherits supports 
for a procedural style from XAML. TM is independent of toolkit (but not 
particularly abstract), but supports toolkit-specific extensions.
Liveness of the representation:
All representations can be loaded from resource and rendered to create a 
running UI. If the representation is live you may change the in-memory 
representation and see the effect in the running UI. Hence, the 
representation can be considered an alternative API (for some or all 
purposes). You needn't use this feature, though, so you can still just 
render and throw the representation away, if you want.
XWT is not live (although I believe it could be, since many XML DOMs are 
observable), TM is.
In-memory representation:
The in-memory representation matters for tools that create the UI 
representation and for application that operate on a live model, but is 
of no concern in a render-only mode of usage. XML has many DOMs, one of 
which is EMF-based, and although many support schema-based validation, 
you can generally construct invalid models. EMF has a static and a 
reflective API, and both are type-safe.
XWT is based on XML, so would use an XML DOM. TM is EMF-based. The 
benefit of each depends on the application that manages the in-memory 
representation.
yves (yingmin) yang wrote:
From my point of view, declarative UI of e4 should be capable do everything
with existing frameworks in declarative way. XWT and TM address this issues
with different technology: one is XAML and another is EMF. XWT is designed
to map every programming class without re-implement them. TM needs to
develop the renderer for each.
Not completely correct. TM (like XWT) utilizes reflection, and the 
default renderer covers the typical conventions (Java-beans, public 
fields, etc.). But you are correct that XWT is more flexible (that's 
what XAML was designed for).
As I said, XWT's direct users are mainly SWT developers. TM are EMF
developers.
Not correct. If used in a render-only mode ala XWT, EMF is hidden in the 
same way XML is hidden by XWT. You just load a resource and render, 
without looking into the serialization format. Proper tooling, like a 
WYSIWYG editor or a tree-based editor with preview, will also hide EMF. 
But you are correct that if you want to use more advanced TM features, 
like liveness, you will need some EMF knowledge.
> So the architecture I image should be:
>
                      ---------
                      |  TM   |
                      ---------
                          |
                          V
  -------------------------------------
  |                XWT                | 
  ------------------------------------- 
If this means that you want to translate TM files to XWT, you of course 
can. But you would gain nothing, since you could just as well render TM. 
 The only advantage I see is if you want to process XML further, e.g. 
using XSLT instead of using a model-based transformation.
If this is the runtime architecture, it currently won't work, since 
liveness isn't supported by XWT. If XWT did provide liveness, it could 
be done, in case TM would have to be rewritten to operate on an XML DOM 
instead of SWT.
I'll be willing to do that, but Yves would have to make XWT live for it 
to make sense. Then we would get the best of both worlds! (BTW, it would 
be preferable to use an EMF-based XML DOM, which I think Yves is working 
on?).
Hallvard