<LINK rel="stylesheet" type"text/css" href="print.css" media="print">
I don't know how the game might change with a gwt app, but I don't
suppose it would be too different.
> All,
>
> We've had a lot of ideas for new widgets and libraries banging
> around in our heads for a while, and I think it's about time we
> started really building out the UI library. To this end, I'd like
> to propose a set of potential Widgets and simple frameworks that
> will give GWT apps much more leverage in building good interfaces.
> The set below is really just a brainstorm, and I'd love to get
> everyone's feedback on which ones they think are most important,
> not important, missing, and so forth. This will probably end up
> being a really long thread, but I'm sure it'll be worth it.
>
> joel.
>
I've got working samples of some of this stuff already. Unfortunately
some of it is no where near pretty enough for inclusion in GWT as is,
but I would certainly not be too afraid of tossing it on the table
for discussion.
> ---Simple Widgets---
> These are relatively simple widgets that would be convenient for
> many developers. They all have minimal interaction with other
> widgets, and shouldn't be hard to implement.
>
> Inline Text Edit: For wont of a better name, anyway. Imagine a
> label that, when clicked on, becomes editable. I think that some
> apps could benefit from something like this, and it would save the
> trouble of building it by hand.e
Got one of these. but it could probably be redesigned, I should look
at it again.
>
> Decorated panels: A set of SimplePanels that provide some sort of
> styled decoration around an existing Widget. RoundedPanel is the
> most common example, but there may be others that would be useful
> as well.
Sure, RoundedPanel (using CSS rather than images). This one has been
posted to the list. I also use that panel along with some Effects
(see below) to create a "clamshell widget"
> Dueling Listboxes: I don't know what everyone else calls them, but
> I like this name. Basically, two list boxes that allow you to move
> a set of items between them using add/remove buttons (usually
> placed between the list boxes).
Got one of these! not only does it work with the typical add remove
buttons, but it also supports multiple selection, Drag N Drop(see
below), Double Click moving. the one thing it doesn't really support
yet is Drag reorder. This guy works (on all platforms), but is pretty
ugly, and could use a bit of clean up.
And if I remember correctly, this guy doesn't use the listbox
element, it uses divs so it supports arbitrary widgets as list items.
> ---General Frameworks---
>
> Effects: GWT needs a native 'effects' library in the spirit of
> scriptaculous (preferably one whose name is easier to spell). The
> existing wrappers are pretty cool, but they force you to include a
> large amount of unnecessary javascript that slows your page load,
> and can't take advantage of Java optimizations and deadstripping.
> Much like scriptaculous, however, it should be orthogonal to
> widgets, and not require direct support from widgets themselves.
I've begun some work on one of these.
It has some base interfaces:
Effect
EffectListener
SourcesEffectEvents
then there is an AbstractEffect that handles some of the timing
issues for an effect.
a WidgetEffect that extends AbstractEffect as a base class for
effects that manipulate widgets.
Then of course some implementations:
ScaleEffect
BlindEffect
MoveEffect
ShakeEffect
and some support classes:
EffectListenerAdapter
EffectCommandListener (for chaining effects)
etc.
I could pretty easily get this packaged up and placed somewhere so we
can compare notes with for instance kelly's effect implementation or
any other ones that are available. I've already run into some nasty
little gotchas here, so would be happy to take part in this discussion.
probably best to start a new thread for this one.
> Drag & Drop: It shouldn't be too difficult to build a library that
> simplifies the process of allowing users to 'drag' stuff from one
> widget to another. It'll take some time to hash out what this
> actually means on the group, which we should probably do in another
> thread.
Got one of these too:
Same sort of deal, it has base interfaces:
DragEvent
Draggable
DragListener
Droppable
And some implementation classes. This one has some really ugly
implementation details that could sure use some vetting in a
different thread.
Again, I'm not too afraid of tossing my existing implementations out
for discussion or for comparison with others who may have started
some of the same things.
-jason
>
> Color Palette:
I have a prototype picker at the URL below that embodies what I would
like to see in a picker. It uses buttons, so there is no external
image requirement. If you have seen the FF ColorZilla plugin, it
looks pretty similar. When it is complete it will also support the
same custom palettes that Gimp does loaded via external palette files.
[ColorPicker prototype]
http://gwt-widget.sourceforge.net/prototype/colorpicker/index.html
[Gimp palette examples]
http://www.iosart.com/firefox/colorzilla/palettes.html
> Inline Text Edit
The GWT-WL has this. Adam Tacy wrote it many months ago. I believe
that it supports both TextBox and TextArea editing. It was built to
look like the editable labels on the Flickr site. I can't think of
what features you might want for this.
> Progress bar & busy indicators
The GWT-WL has a progress bar written by Bjarne Matzen. It allows for
flexible styling with CSS, which I think is a must-have feature for
this widget. It also supports displaying time remaining and some
arbitrary text. The constructor lets you specify the number of bars
in the widget. Over time you alter the percent complete and it colors
the appropriate number of bars.
ProgressBar progressBar = new ProgressBar(20 ,ProgressBar.SHOW_TIME_REMAINING);
progressBar.setProgress(50);
I am not sure if this is the perfect progress bar, but I think it
would be a good reference. I think there are also a few other ones
out there, but none come to mind.
> Date & Time Pickers
The GWT-WL has what I think is a pretty good start for a calendar.
There is a cal panel and cal engine. On top of that it should be easy
to build any sort of date picker. Allows for altering the day
abbreviations, first day of the week, month names, supports date
clicks, can hold event data, and highlights days with events. It
should also be pretty easy to build a date range picker, like the one
in Google Analytics.
What seemed to work well was separating the cal engine and panel from
any buttons or other controls.
> Good default CSS
Yes, yes, yes!
> Vector Graphics: This is a thorny problem.
This one would also require that namespace support be added to GWT. I
have a small SVG implementation that I put together over the summer,
and I remember having to build an alternate DOM object. I think that
this is a crazy big project to get it right, but definately worth it.
> Tag clouds
Where does the data come from? Do you envision that it would support
the popular services, or would you have to roll your own servlet
implementation to feed it?
> Slideshow: This might be a bit frivolous
I am not a big fan of this one, but if it gets built, I am sure that
it will be used.
Rob
Image Strip (Optimization): This one's a little weird, but bear with me here. Loading lots of little images takes a long time -- all those HTTP requests.
This should be able to interact with the Toolbar and ImageButton widgets.
Thought I'd mention my recently uploaded drag-and-drop implementation:
http://code.google.com/p/gwt-dnd/
There's a link to working examples so you can play with the
implementation in your browser. The library has classic drag-and-drop
support, but also the ability to move (drag) within an AbsolutePanel,
either freely or constrained by a grid. This functionality is
controlled by different `DropContoller`s associated with the different
drop targets.
Feedback is welcome and appreciated.
Fred
Seems to work fine in firefox though.
-jason
Really cool tho!
If the gwt-dnd code is up to snuff and the team is interested, I'd like
to eventually contribute this to the GWT code base. I realize there's a
lot that needs to happen before it's ready for that step. So, any
specific feedback on the API, especially from google-web-toolkit
project owners/members would be appreciated.
As for Safari, anyone know a way I can test in that environment without
obtaining an actual Mac? Applers should be able to drag-and-drop too!
Thanks
Fred
I believe Konqueror is based off the same HTML rendering and JS
implementation as Safari, so if you develop on a linux box give that a
shot. Or if you have a spare computer laying around throw Kubuntu on it
and give it a whirl....
bg
I tried the latest Kubuntu release. However, it looks like not even the
GWT Ktichen Sink will run in Konqueror at this time :-(
Thanks for the suggestion, though.
Fred
On Jan 25, 10:50 am, "bg" <bgour...@gmail.com> wrote:
> Fred,
>
> I believeKonqueroris based off the same HTML rendering and JS
Sorry to go off topic for a moment but could this be because GWT does
not use Safari specific code when it identifies Konqueror as the
browser?
On Jan 2, 11:19 am, "Emily Crutcher" <e...@google.com> wrote:
> Events are going to be interesting to retrofit. We've known we've boxed
> ourselves in a corner with our event model for a while, fixing it is a
> harder problem. One solution we have explored is to introduce "Handler"
> event classes to supersede the listener classes, check out FormHandler as an
> example. The handler model creates a event object to submit to the user,
> which allows us to add more fields to an event without breaking the
> currently existing code.
While revamping the event handling, what are the thoughts on allowing
more than one EventListener to be registered with an element? Are the
problems this would pose? The idea would be that where today we have:
DOM.setEventListener(Element elem, EventListener listener)
we would instead have (deprecating the old method):
DOM.addEventListener(Element elem, EventListener listener)
DOM.removeEventListener(Element elem, EventListener listener)
I'd like to have the multiple EventListener capability so I can for
example add drag-and-drop functionality to arbitrary existing widgets,
without requiring that the draggable widgets implement
SourcesMouseEvents. I also don't want to replace (steal) the widget's
own EventListener in case the widget wants to sink its own events.
Event previews aren't a good fit either for performance reasons and
because I'd have to try to manually figure out which widget should be
affected based on the mouse coordinates. That's the browser's job.
Thanks
Fred
On Jan 24, 1:43 pm, "Fred" <fre...@gmail.com> wrote:
> On Jan 8, 12:16 pm, "Joel Webber" <j...@google.com> wrote:
>
> > Drag & Drop: It shouldn't be too difficult to build a library that
> > simplifies the process of allowing users to 'drag' stuff from one widget to
> > another. It'll take some time to hash out what this actually means on the
> > group, which we should probably do in another thread.Thought I'd mention my recently uploaded drag-and-drop implementation:
Most important, if I had to vote:
Data Binding
Consistent Selectability
Image Strip
Toolbar
DnD
Effects
Progress-Busy
Date-Time
> easier to build printing support ...
>
> read more »
-- Bruce
On Jan 28, 4:01 am, "charlie.coll...@gmail.com"
> > Maybe this needs to be in code, or maybe default CSS...
>
> read more »
Overall the work/approach thus far looks great. I especially like how
in addition to performance issues this would also help address the
bouncy startup. And I think having the 1x1 clear.cache.gif file could
be good in many scenarios, not really a detriment at all.
> > > Good default CSS: Let's just...
>
> read more »