Hi everyone,

First, let me introduce myself: I'm a french software engineer working
in a small IT consulting company. I'm working with GWT for 3 years now
and contributing patches on a regular basis (BTW, I'm the only
non-googler listed as a project member on the code.google.com site).

On our current project (whose UI is made with GWT), we're in need of a
rich-text editor with "semantic markup" (marking up "people",
"locations", etc. and possibly linking them to other items in our data
repository) and constrained content (sometimes we don't want
titles/subsections or tables, and sometimes even limit editing to a
single paragraph with "semantic markup" only). We only target Firefox
4 (or whichever stable version will be current by the time we ship,
lucky us!). In search of the "perfect editor" for the task (or rather,
the challenge!) it became obvious to me that Wave's editor would be
the perfect fit: model-based, entirely "emulated" (no
contentEditable=true, meaning we have full control on which user
actions produce which content), built with GWT, etc.

So, I'm in the process of integrating the Editor component in our app
(prototyping in a test-bed app for the time being) and I'm facing a
"major issue" (well, not that much given our specific environment, see
below) and seeing a few possible enhancements; both of them being
related to how Wave uses GWT and "integrates" with it.

First, Wave overrides the "user.agent" deferred-binding property (and
property provider) to add new "iphone" and "android" values and remove
Opera support. While this is not a showstopper for us (given that we
only support Firefox 4 –and Chrome, as we're almost all using Chrome
in the dev team–) it might cause issues to others (e.g. someone having
to support Opera, even if it means disabling the Editor for them).
Proposal: GWT has had "conditional properties" for this exact use case
for a few releases.
http://code.google.com/p/google-web-toolkit/wiki/ConditionalProperties

Wave also inspired new features of GWT, and the codebase hasn't been
migrated to the "gwt-user" APIs once they were integrated, which
results in almost-duplicated code once you start integrating Wave code
within another application. The most notable (and maybe only) such
feature is SafeHtml.

There are of course many other possible enhancements, some of them
already listed as TODOs in the code, but I'm first interested in those
that will have a direct impact on the size of the compiled JS output.

If everyone's OK with these changes, I'm ready to work on a patch in
the upcoming days.

-- 
Thomas Broyer
/tɔ.ma.bʁwa.je/

Reply via email to