Hi Angelo,
XAML is a XML serialization language. It
depends on which model you apply. MS uses it for WPF with .Net framework, for
Silverlight for Web. Now, I’m developing a POC of XAML for SWT. Please
take a look at this page:
http://wiki.eclipse.org/E4/DeclarativeUI/XAML_Roundup
It maps directly to SWT.
So XAML can be used in both Abstract
Model and Real Model:
Regards
Yves YANG
Soyatec - Eclipse OutSourcing & XAML
for java
http://www.soyatec.com
Tel: +33 1 60 13 06 67
Mobile: +33 6 20 74 39 45
Fax: +33 9 58 07 06 67
From:
e4-dev-bounces@xxxxxxxxxxx [mailto:e4-dev-bounces@xxxxxxxxxxx] On Behalf Of Angelo zerr
Sent: Wednesday, November 12, 2008
6:26 PM
To: E4 Project developer mailing
list
Subject: Re: [e4-dev] Declarative
UI
Hi Kevin,
If I understand your comment, you say "Abstract Model or Real Model?"
When I say Abstract Model I mean XAML, XUL like and when I say Real Model I
mean XSWT
which use if I understood reflection to use native SWT widget.
Here my IMHO about that :
Pro Real Model (XSWT)
* It use the same XML Markup name that SWT (Text, Label...).
* When SWT API is improved, we can use the new feature (if we use reflection).
* Extensible widget seems more easy to implement I think.
Pro Abstract Model (XAML, XUL..)
* Can extends to any XML Markup. So we can use XAML, XHTML, XUL. I'm J2EE
developer
and I find it's helpfull to decribe UI with XML Markup that I know (like
XHTML, XUL...)
(Akrogen where you can describe UI with XUL please to people,
because you can write XUL UI,
test it into Firefox and use it into Akrogen which interpret the XUL to
SWT).
* Is not linked to renderer. Kevin I know that your goal is SWT but if we have
another renderer like VE, Java2d
I think it will be very cool to use the same Declarative UI and render
it into Java2d, SWT, SWT Forms...
If you want use SWT Forms, how can you take the difference between SWT
and SWT Forms widgets creation?
I think that extensibility is very important too :
* Add your own XML Markup to manage another thing that render widgets. For
instance I have done that into Akrogen
where you can add XML Markup <template> to XUL description to add
template (Freemarker, to use) to generate code
when Finish button of wizard is clicked.
* Add your own XML Markup to manage another widgets.
Regards Angelo
2008/11/12 Markus Kohler <markus.kohler@xxxxxxxxx>
Hi,
See my comments below ...
On Wed, Nov 12, 2008 at 11:49 AM, Tom Schindl <tom.schindl@xxxxxxxxxxxxxxx>
wrote:
Hi,
Well I envision a design for client-server with a declarative model like
this.
---------------------------------------------
Client
[1] Client-Device (Browser, ...)
[2] Client-Renderer (Widget-DOM)
-----action--
[3] Client-DOM (EMF-DOM)
|
---------------------------------------------
|
Network /\
|
|| Model-To-Model (e.g. CDO,
JSON, ...) |
---------------------------------------------
|
Server
|
[4] EMF-DOM
|
[5] BusinessLogic
<--------------------------|
Do you have a RAP like design in mind when you talk about server side
rendering?
Yes. As far as I know other frameworks do the same. JFace for example.
They maintain an in-memory representation of the tree of UI components.
Because RAP supports the SWT API I think it needs to do it as well,
except if RAP would translate Java to _javascript_ in the same way as GWT
does.
GWT is what I would call a "client side rendering
framework", because it does not have a representation of the UI component
tree on the server. In fact GWT applications are _javascript_ applications that
happen to use RCP calls to get and change data on the server.
I can see how a declarative ui description could be more easily
translated into code that runs on the client, but you still will need code to
handle events, construct and add new UI elements dynamically at runtime,
validate user input and soon ... If you don't translate Java to _javascript_ (or
whatever your client side language is), you will need to run that code on the
server. Because of that you probably also need a representation of the tree of
UI components on the server as well.
This is really not what you want for a highly interactive Web 2.0 style
application. You will end up with more roundtrips and more state on
the server, which will limit your performance.
I don't know enough about RAP but as far as I have understood
it they have 2 representations of a widget (ServerSide,ClientSide) maybe
they could change their (under the assumption noone is directly
accessing widgets but instead is going through the DOM) design so that
they don't need the server side representation.
EMF's object representation is by the way not as bloated as an XML-DOM
and can be optimized further (Ed recently blogged about it). Naturally
if you have to restore [2] also on the server you are doubling memory
but I don't think this is needed (always under the assumption noone is
directly accessing widgets but instead is going through the DOM).
Tom
Markus Kohler schrieb:
> Hi all,
> Maybe I don't fully understand everything here, but what does it mean
> for memory usage if only the DOM API is available?
> Something like an XML DOM Tree typically has a big overhead compared to
> a dedicated statically typed UI Component Tree.
>
> As long as the the DOM is stored client side (like it's done with
> browser based applications), I don't see a big problem with this
> approach. But if e4 is going to support server side rendering, where the
> DOM would be in memory for each user, this could create scalability
> problems, because of high memory usage per user.
>
> I wonder whether saving some memory for the code does help, if using a
> DOM representation requires more memory.
>
>
> Just my 2 cents,
> Markus
>
> On Wed, Nov 12, 2008 at 9:03 AM, Tom Schindl
> <tom.schindl@xxxxxxxxxxxxxxx
<mailto:tom.schindl@xxxxxxxxxxxxxxx>>
wrote:
>
> Hi Kevin,
>
> Can you clarify this? I don't see a problem with going
through the DOM.
> I'd argue that someone is not even getting access anymore to
the REALLY
> widget when he/she is using declarative UI.
>
> You may ask why does one not have access to the widget:
> a) Did you ever see a WebDeveloper trying to access the real
> Native-Gecko-Button? SWT is just a renderer of the
widget
> like Gecko, ... is in a browser.
>
> b) The DOM you are seeing and the Widget-Hierarchy don't
necessary have
> a one-to-one mapping. E.g. let's say I want to have
fancy border
> drawing in SWT then my DOM looks like this:
>
> <composite border="black 2px"
layout="grid">
> <label text="BlaBla 1" />
> <label text="BlaBla 2" />
> </composite>
>
> whereas the widget structure is like this:
>
> Composite (FillLayout=margin=2,
backgroundColor=black)
> Composite(GridLayout)
> Label
> Label
>
> c) What do you script against? The real widget is not right
IMHO because
> of 2 and 3
>
> The above example of a border is the reason I'm not a friend
anymore of
> a low-level dialect like XSWT but favor some higher level of
Declarative
> UI. As long as I programm against the high-level DOM it
doesn't bother
> me how a feature gets implemented at the widget-level
> (widget-composition, gc-drawing, ....). Naturally the above
border could
> get implemented also by subclassing Composite +
PaintListener but I
> guess you'll get the point, right? By the way how is such a
problem
> solved when the border definition is coming from an
CSS-Stylesheet?
>
> When we talk about modeling the workbench it even gets worse
because
> e.g. a StackedPart can get rendered by a completely
different
> widget-type for example:
> - CTabFolder
> - TabFolder
> - Nebula-PShelf
> - ...
>
>
> Tom
>
> Kevin McGuire schrieb:
> >
> > Actually this approach concerns me: if I go through the
model, or go
> > directly against SWT, I get different notification.
It could easily
> > lead to bugs in application code. I would also
argue that the
> model is
> > then no longer a model of SWT, but rather, a model of
an enhanced SWT
> > which doesn't exist.
> >
> > Regards,
> > Kevin
> >
> >
> >
> >
> > *Tom Schindl <tom.schindl@xxxxxxxxxxxxxxx
> <mailto:tom.schindl@xxxxxxxxxxxxxxx>>*
> <mailto:e4-dev-bounces@xxxxxxxxxxx>
> >
> > 11/11/2008 04:29 AM
> > Please respond to
> > E4 Project developer mailing list <e4-dev@xxxxxxxxxxx
> <mailto:e4-dev@xxxxxxxxxxx>>
> >
> >
> >
> > To
> > e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
> > cc
> >
> > Subject
> > Re: [e4-dev] Declarative UI
> >
> >
> >
> >
> >
> >
> >
> >
> > Angelo zerr schrieb:
> >> Hi,
> >>
> >> I would like speak about UFace <http://code.google.com/p/uface/>
that
> >> I'm using into TK-UI <http://tk-ui.sourceforge.net/index.html>
and I
> >> find very helfull to manage Declarative UI.
With TK-UI you can
> describe
> >> UI with any XML Markup (XUL, XHTML,...) and render
it into any
> renderer
> >> (SWT, SWT Forms, Swing...) Today I'm using UFace
which is UI facade
> >> which provide a lot of think like Databinding
(based on JFace
> >> Databinding). I like UFace because anything can be
bounded :
> >>
> >> * UI widgets : any properties of (visible,
text... properties if UI
> >> widgets). For instance if you call setVisible, it
fire event so it's
> >> possible after to observe this property (with SWT
we cannot catch
> this
> >> visble event for instance).
> >
> > This is a very interesting point Angelo is raising
here. I think
> when we
> > describe our UI and directly interface with SWT people
HAVE TO program
> > against the DOM (whether it is EMF or anything else)
and not directly
> > against the widget because changes in the UI like
setVisible(),
> > setEnabled(), ... can't be synced back live to the
declarative model
> > simply because SWT is not informing us about these
changes with
> events.
> >
> > I don't see this as a problem though. By the way in
"Modeling the
> > Workbench" we identified only a hand full of
things where we need to
> > sync back from the Widget (e.g. Resize, Iconify, ...)
to the model. We
> > assume that *all* other operations are happening on
model and are then
> > reflected in the UI.
> >
> > Tom
> >
> > --
> > B e s t S o l u t i o n . a t
EDV
> Systemhaus GmbH
> >
>
------------------------------------------------------------------------
> > tom schindl
leiter
> softwareentwicklung/CSO
> >
>
------------------------------------------------------------------------
> > eduard-bodem-gasse 8/3 A-6020 innsbruck
phone ++43 512
> 935834
> > _______________________________________________
> > e4-dev mailing list
> > e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
> > e4-dev@xxxxxxxxxxx <mailto:e4-dev@xxxxxxxxxxx>
> > https://dev.eclipse.org/mailman/listinfo/e4-dev
>
>
> --
> B e s t S o l u t i o n . a t
EDV Systemhaus GmbH
>
------------------------------------------------------------------------
> tom schindl
leiter
softwareentwicklung/CSO
> ------------------------------------------------------------------------
> eduard-bodem-gasse 8/3 A-6020 innsbruck phone
++43 512 935834
> _______________________________________________
> e4-dev mailing list
> e4-dev@xxxxxxxxxxx
<mailto:e4-dev@xxxxxxxxxxx>
_______________________________________________
e4-dev mailing list
e4-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/e4-dev
|