Having worked on similar projects, I am very enthusiastic about the idea of
creating a full gwt forms module,  as apart from it being a true pain in the
neck to create them by hand, improving the overall quality of such forms
will, in the long term, save lives, so I'm looking forward to this work.

-------------------

The same widgets might be used to get/set different data types and it
separates the presentation logic from the data model, so separating the two
seems to make some sense. On the other hand, it means that there is no
simple interface that can be used when you actually do have data model
objects:

So what if we combined the two:

public interface HasData<T> {
       public T getData();
       public void setData(T data);
}

then:

public interface DataManager<T, S extends HasData>   {
     public HasData getData(T widget);
     public void setData(T widget, S data);
}



On Fri, Oct 3, 2008 at 11:06 AM, Isaac Truett <[EMAIL PROTECTED]> wrote:

>
> Why wrappers? Why not have the widgets simply implement a HasData
> interface?
>
> public interface HasData<T> {
>        public T getData();
>        public void setData(T data);
> }
>
> Maybe I'm just not seeing your use case.
>
>
>
> On Fri, Oct 3, 2008 at 10:55 AM, Arthur Kalmenson <[EMAIL PROTECTED]>
> wrote:
> >
> > Hello every,
> >
> > Just a little backgrounder for this RR. For some time now, a coworker
> > and I have been working on and off on a library/framework to simplify
> > creation of GWT applications, specifically those that cover most of
> > our use cases. For the most part, the applications we build involve
> > filling out rather large forms, retrieving data, generating reports,
> > etc. Building these large forms by hand is very tedious, so we created
> > an open source project called Mount Sinai Hospital Application Builder
> > (mshab) which you can find here: http://code.google.com/p/mshab/.
> >
> > I started to overhaul the project to make it easier to use and easier
> > to extend. As I started the overhaul, I noticed that the incubator
> > started to get populated with a lot of similar widgets and libraries
> > that I was redeveloping. I contacted Emily Crutcher about the
> > Validation aspect and we ended up talking a bit about the incubator. I
> > decided that it'll be best to try to commit back to the incubator so
> > we could avoid having to throw away our code after the incubator
> > implemented the same ideas. I'll start making RRs about the various
> > parts that we were working on to get feedback and hopefully
> > incorporate it into the incubator.
> >
> > Now, to the meat of the post. Right now, extracting data from widgets
> > is very different depending on the widget. From a TextBox, you call
> > textBox.getText(). For a ListBox you call
> > listBox.getValue(listBox.getSelectedItem()). Setting the data is
> > different too, and sometimes pretty "complex" (ListBox involves a
> > loop, etc). Therefore, I'm proposing a common interface that wraps
> > around core GWT widgets and provides one way to extract and set data
> > to widgets. There are a number of use cases where this can be applied.
> > Some good examples are validation and simple data binding.
> >
> > The interface is a straight forward generic interface that works with
> > a generic widget and a generic data type (comments removed):
> >
> > public interface DataManager<T, S> {
> >
> >        public S getData(T widget);
> >
> >        public void setData(T widget, S data);
> > }
> >
> > Here's an example of how it would be used to manage TextBoxBase
> > widgets.
> >
> > public class TextBoxBaseDataManager implements
> > DataManager<TextBoxBase, String> {
> >
> >        public String getData(TextBoxBase widget) {
> >                return widget.getText();
> >        }
> >
> >        public void setData(TextBoxBase widget, String data) {
> >                widget.setText(data);
> >        }
> > }
> >
> > To help developers easily get the appropriate DataManager for a
> > specific widget, I created a DataManagerCollection interface where you
> > can get the specific DataManager for a given widget and then start
> > working with it. The developer can either use existing
> > DataManagerCollection implementations or wire their own.
> >
> > public interface DataManagerCollection {
> >
> >        public boolean hasDataManager(Widget widget);
> >
> >        public DataManager<?, ?> getDataManager(Widget widget);
> >
> >        public void setDataManager(Widget widget, DataManager<?, ?>
> > dataManager);
> > }
> >
> > We're currently working on creating wrappers for all the core GWT
> > widgets and the incubator ones. Feedback would be much appreciated.
> > Thank you for your time.
> >
> > Best regards,
> > Arthur Kalmenson
> > >
> >
>
> >
>


-- 
"There are only 10 types of people in the world: Those who understand
binary, and those who don't"

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to