On 10/19/2009 09:41 PM, Marius Dumitru Florea wrote:
Hi Sergiu,
Sergiu Dumitriu wrote:
On 10/19/2009 03:37 PM, Marius Dumitru Florea
wrote:
> Hi devs,
>
> I'd like to create a xwiki-gwt-user module in platform-web which will
> contain classes from the util and widget WYSIWYG packages. This module
> corresponds to the com.google.gwt.user package which contains utility
> and UI-related classed. The module will have this structure:
>
> org.xwiki.gwt.user.client.* (classes from the current util package)
> org.xwiki.gwt.user.client.widget.* (classes from the current widget package)
>
> Since I want this module to be generic (an extension of what GWT
> currently provides) I'd like to exclude the following class/packages
> which are XWiki specific:
>
> * util.Attachment
util.ResourceName too
*
widget.explorer.*
* widget.wizard.util.*
* widget.PageSelector
* widget.SpaceSelector
* widget.WikiSelector
These can remain in the WYSIWYG source tree for the moment but I'm
considering moving them to the gwt module which is XWiki specific.
You can see the current sources here
http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/wysiwyg/src/main/java…
Here's my +1. WDYT?
Why "user"? It doesn't look like a user
thing to me, perhaps I'm wrong.
Can you explain what this code does in more details?
GWT has 3 main jars:
gwt-servlet-1.7.0.jar
gwt-user-1.7.0.jar
gwt-dev-1.7.0-linux.jar
Some of the main packages from the user jar are:
com.google.gwt.dom
com.google.gwt.emul
com.google.gwt.user
The dom package exposes, obviously, the JavaScript DOM API in Java code.
We have extended what this package offers and created the xwiki-gwt-dom
module.
The user package contains utility classes like Timer, Random or
DeferredCommand and basic widgets (ui.* package) like CheckBox or
RichTextArea. We have extended what this package offers with other
useful utility classes like Console, ShortcutKeyManager or
DeferredUpdater and other widgets (widget.* package) like
VerticalResizePanel, improved RichTextArea, generic dialog wizard.
In order to be consistent I proposed a xwiki-gwt-user module. I'm open
to your suggestions regarding the name.
Anyway, this module will be generic (reusable in any GWT application)
without any XWiki specific code.
Hope it's clear now,
Marius
OK, so the "user" name comes from GWT. I agree with the consistency
reason, but my problem is that for those that don't know GWT (like me),
this name is misleading, since it doesn't suggest utility classes and
user interface elements. OK, maybe it could suggest *user* interface a
little, but only if you're searching for this connection. So, should we
stick with the "user" name for consistency, which would make users of
the editor coming from the GWT world happy, but which is misleading for
those that aren't familiar with GWT. or should we choose something more
meaningful?
I'm fine with both options. Let's see what others think.
How about org.xwiki.gwt.utils and org.xwiki.gwt.widgets as two distinct
modules? Can this work from a dependency PoV, or are the two modules
tightly connected?
Right now there are only a few cross dependencies and I can fix them.
But in general we can have:
1) a utility class used by two or more widgets (e.g. StringUtils)
2) a utility class that uses one or more widgets (e.g. TextBoxNumberFilter)
In other words, if I write a widget and I discover that I need a generic
utility class that might be useful for other widgets too then I'm going
to place that utility class in the utility package. On the other hand,
if I write an application and I discover that I need a generic utility
class that makes my life easier while working with a specific widget
then I'm going to place that utility class also in the utility package.
I could move it in the widgets module under that specific widget but
then the widgets module will become widgets&widgetUtilities and I'm
going to ask myself why I have these two separate modules.
If we agree to fix 2) by moving those utility classes in the widgets
module then I'm fine with having two modules: utils and widgets.
Otherwise I'm more for having a single module.
Thanks,
Marius