Re: [gwt-contrib] Re: Comment on SoftPermutations in google-web-toolkit

2011-09-15 Thread Isaac Truett
I know it's early in the work day, but these spam comments are starting to
get annoying. Could someone please ban/enable moderation/etc. after they get
their coffee? :)

Thanks!


On Thu, Sep 15, 2011 at 9:44 AM, codesite-nore...@google.com wrote:

 Comment by pclog...@gmail.com:

 The best poker blog  
 http://poker-blogs-see.**blogspot.comhttp://poker-blogs-see.blogspot.com

 Best PokerStars blog 
 http://pokerstars-blogs.**blogspot.comhttp://pokerstars-blogs.blogspot.com

 Sexy, hot girls image
 http://china-sexy-girl-images.**blogspot.com/http://china-sexy-girl-images.blogspot.com/


 For more information:
 http://code.google.com/p/**google-web-toolkit/wiki/**SoftPermutationshttp://code.google.com/p/google-web-toolkit/wiki/SoftPermutations

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


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

Re: [gwt-contrib] Earn $1000-$2500 per month

2011-06-07 Thread Isaac Truett
And I, for one, appreciate the effort that goes into moderation!

On that slightly off-topic note, I interact with the group via GMail 99.999%
of the time, rather than the Groups UI. Does reporting spam messages in
GMail translate to Groups at all? Or to put another way, GMail is smart
enough to recognize that this is a mailing list when I mark something as
spam and asks me if I want to unsubscribe. But is it smart enough to
recognize that it is a Google Groups mailing list and send my spam flag to
the Group moderation queue as well? There's no direct link from the message
in GMail back to the Groups thread, so finding a message in Groups to spam
flag it over there too is a relatively tedious manual task. I always sort of
hoped the thought was being communicated for me.



On Tue, Jun 7, 2011 at 12:32 PM, David Chandler drfibona...@google.comwrote:

 Nope, and I reject several spammers daily. On the GWT group, some have
 gotten smarter and are now posting legit-sounding messages in advance.

 /dmc

 On Tue, Jun 7, 2011 at 4:49 AM, roseanje...@rediffmail.com 
 roseanje...@rediffmail.com wrote:

 Earn $1000-$2500 per month
 If you Register your name
 You Get Sign-up bonus $5
   AND
 Get $.20 cent for each referral.
 Further details
 
 http://www.earnbyforex.com/index.php?id=35678365
 

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




 --
 David Chandler
 Developer Programs Engineer, Google Web Toolkit
 w: http://code.google.com/
 b: http://googlewebtoolkit.blogspot.com/
 t: @googledevtools

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

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

Re: [gwt-contrib] Re: Use glass panel isntead of alert() when displaying dev mode connection failures, (issue1449802)

2011-05-17 Thread Isaac Truett
Fred,

I can't tell you how obnoxious this has been for me. When this change makes
it into a release, I will owe you a beer or comparable gratuity.

Thank you.


On Tue, May 17, 2011 at 3:09 PM, fre...@google.com wrote:

 http://gwt-code-reviews.appspot.com/1449802/

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


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

[gwt-contrib] Activities and Places documentation

2011-05-13 Thread Isaac Truett
GWT MVP Development with Activities and
Placeshttp://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html
does
not, as far as I can see, contain any reference to the fact that you need to
inherit com.google.gwt.activity.Activity and com.google.gwt.place.Place.
Shouldn't it? Did I miss that being called out somewhere else?

- Isaac

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

Re: [gwt-contrib] Re: [RFC] GWT Widgets that ROCK!

2011-02-25 Thread Isaac Truett
Thomas Broyer wrote:

 Finally, I don't really like the Widget suffix naming convention, that's
 what namespaces (packages in Java) are for (tell a Button from another
 Buton), but I sure could live with it.
 I already have those naming conflicts using Guava and gwt-dev –which
 includes a rebased, olderguava–, and some other library that transitively
 depends on a rebased Apache Commons, in the same project (so I have many
 Lists classes to choose from; not to mention java.util.List vs.
 jaa.awt.List, and java.util.Date vs. java.sql.Date). When I'm angry that
 eclipse always pick the wrong one by default, I configure it so it ignores
 the others when suggesting completions. Or maybe the GPE could plug into
 Eclipse to make it prefer the new Button so it's always displayed before
 the old one in such autocomplete or organize imports lists?


+1 for right name, different package (and aggressive deprecation, please).


On Thu, Feb 24, 2011 at 7:30 PM, Thomas Broyer t.bro...@gmail.com wrote:
 I support the overall idea.
 A few notes though:
 I'm worried about the events in the ButtonCell example. If they're just
 there to provide hooks to inject styles, then:

 you probably don't need them if you use a native button appearance; which
 means you're listening to events but doing nothing in response to them; and
 we now too many registered events are bad for performance (that's what lead
 to the event delegation pattern, taking advantage of event bubbling,
 right?)
 why couldn't you just use :hover, :active and similar pseudo-classes?

 OK, maybe the ButtonCell is not the best example, as its appearance
 and behavior are quite… limited, but still.
 Or could, in this case, the Appearance have hasHoverBehavior or similar that
 the Cell would use to decide which events it's interested in? (so if you
 want your onHover method to be called, you'd first have to override
 hasHoverBehavior to return true). As an alternative, a few such behaviours
 could come in mixin interfaces, and the Cell would advertise (in the
 javadoc) which ones it supports (the ButtonCell would then only say it
 handles mouseover events if the Appearance is an instanceof HasHover).


 You wrote:

 Finally, note that Appearance is an abstract class. This allows us to add
 more state logic in the future without breaking existing Appearances. For
 example, we could add new methods setRightFlush() and setLeftFlush()
 which would make the right and left edges of the button flat, such that they
 could be lined up next to each other. Existing appearances may not support
 the new feature, but they would still work.

 This is not exactly true:

 Since the new method is probably something obvious I might already have
 implemented it. This is really evil because my code might still compile but
 not work any more.

 —
 Source: https://groups.google.com/d/msg/google-guice/rV21c_HQivk/NLUNASfhHq8J
 See also in the same thread:
 https://groups.google.com/d/msg/google-guice/rV21c_HQivk/mI6JP206-tsJ


 You wrote:

 Some Cells support methods to change how the Cell is rendered. For example,
 ButtonCell could provide a setTabIndex() method to set the tab index of the
 element. ButtonWidget would expose the same methods and forward through to
 the Cell.

 Does it mean there could finally be a Button interface (implemented by
 both ButtonCell and ButtonWidget) as a few people have asked
 for: http://code.google.com/p/google-web-toolkit/issues/detail?id=5275

 Finally, I don't really like the Widget suffix naming convention, that's
 what namespaces (packages in Java) are for (tell a Button from another
 Buton), but I sure could live with it.
 I already have those naming conflicts using Guava and gwt-dev –which
 includes a rebased, olderguava–, and some other library that transitively
 depends on a rebased Apache Commons, in the same project (so I have many
 Lists classes to choose from; not to mention java.util.List vs.
 jaa.awt.List, and java.util.Date vs. java.sql.Date). When I'm angry that
 eclipse always pick the wrong one by default, I configure it so it ignores
 the others when suggesting completions. Or maybe the GPE could plug into
 Eclipse to make it prefer the new Button so it's always displayed before
 the old one in such autocomplete or organize imports lists?

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

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


Re: [gwt-contrib] incubator and compatability with gwt 2.1

2010-09-09 Thread Isaac Truett
There isn't one. Incubator is dead.


On Thu, Sep 9, 2010 at 7:10 AM, Cameron Braid came...@braid.com.au wrote:

 What is the plan to bring incubator into compatability with gwt 2.1 ?

 Cheers

 Cameron

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

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

Re: [gwt-contrib] Re: Add the ability to change the default HandlerManager of a Widget

2010-02-11 Thread Isaac Truett
I think that violates the spirit, if not the letter, of the
addHandler() contract. I add a handler and I get back a
HandlerRegistration. I can use that registration to remove the handler
later, if I choose to do so. If I expose that registration to other
code, then the other code can also remove the handler. But if I guard
my registration jealously, I expect that nobody else will have the
ability to remove my handler. It seems to me that canceling all of the
old handlers when the manager changes is a recipe for hard to find
bugs, especially if changing HandlerManagers is not a common use case.
You're going to have handlers suddenly stop receiving events and not
be able to find an explicit removal.


On Thu, Feb 11, 2010 at 11:36 AM, Arthur Kalmenson
arthur.k...@gmail.com wrote:
 But what if you have the case where you're setting the HandlerManager
 specifically because you want to stop listening to all the events from
 the previous HandlerManager. The idea of a stack of HandlerManagers
 makes some sense if you want to have different HandlerManagers
 handling events for different parts of a system.

 I understand the idea of making your own HandlerManager, but from a
 design perspective, doesn't it make sense to just have a singleton
 HandlerManager? Are there performance implications of having
 everything go through one HandlerManager?

 All the best,
 --
 Arthur Kalmenson



 On Wed, Feb 10, 2010 at 11:34 AM, Isaac Truett itru...@gmail.com wrote:
 The argument seems to revolve around changing HandlerManagers
 resulting in the loss of registered handlers. Is it possible that the
 HandlerManager and the set of registered handlers aren't really the
 same thing and need to be separated? Would everyone be happy if you
 could call setHandlerManager() and the new manager would still service
 the same set of handlers that existed previously?


 On Wed, Feb 10, 2010 at 10:59 AM, Ray Ryan rj...@google.com wrote:
 I forgot about that nuance of your proposal. I like.
 @jat: the stack idea is nifty, but expanding the scope of the patch even
 worse than I am. And JL's proposal would let one implement that.

 On Wed, Feb 10, 2010 at 7:56 AM, John LaBanca jlaba...@google.com wrote:

 I still think my proposal solves this for both cases.  We add a protected
 createHandlerManager, which is more restrictive because it is only called
 once per widget.
 We also make getHandlerManager() protected, which allows users to replace
 the HandlerManager if they really want to by overriding getHandlerManager 
 to
 return one of many.  It would be up to the developer to add a
 setHandlerManager() method in their own widgets that would change the 
 return
 value of getHandlerManager(), so its intentionally more difficult and
 therefore forces the developer to think about it a little more.
 Thanks,
 John LaBanca
 jlaba...@google.com


 On Wed, Feb 10, 2010 at 10:44 AM, Sven Brunken
 sven.brun...@googlemail.com wrote:


 On 10 Feb., 16:28, Ray Ryan rj...@google.com wrote:
  Sven, you're arguing both sides here. You want things to be more
  customizable in general, but with your specific patch you're trying to
  be as
  restrictive as you can to achieve your personal goal.

 Both patches have the same restriction, once a handlermanager is set
 or the default one created, there is no way back to change it. I am
 also ok with a setHandlerManager without restrictions. But than people
 will have the problem that they will loose handlerregistrations, if
 they dont know what they are doing (and yes, there are these people).
 I wanted to make this patch as much fool proof as possible. It should
 be customaziable, but in a way, that you cannot brake it.

 I dont think that you really need to change the handlermanager during
 runtime after you set the first one. You also cannot change the
 element of a widget once you set the first one.

 
  I'm assuming that if we provide an unrestricted setHandlerManager we
  would
  also provide a getHandlerManager. It doesn't seem like rocket science
  to
  expect someone to check for an existing one if before clobbering it.
  I'm
  also assuming that these methods are protected, not part of every
  widget's
  public api.
 Yes sure, protected. They should not be public.

 
  I also would argue against providing both createHM and setHM. Redundant
  API
  is confusing API, another unfortunate trait of our widget set. Lazy
  creation
  can happen in the default implementation of getHM. A custom widget
  author
  could override that method to maintain laziness, or call setHM from
  their
  constructor to keep ours from ever seeing the light of day.

 I dont want to add boths. There is no need for it. One approach is
 more than sufficient. With both ways you would be able to change the
 default handlermanager (which is the goal in the end).
 
  On Tue, Feb 9, 2010 at 9:11 AM, Sven Brunken
  sven.brun...@googlemail.comwrote:
 
 
 
   The danger is that if you add handlers, and than later in your code
   call

Re: [gwt-contrib] Re: Add the ability to change the default HandlerManager of a Widget

2010-02-11 Thread Isaac Truett
 Am I trying to provide flexibility that no one is asking for?

In my opinion, this is providing flexibility that is not necessary and
is not a net positive change to the API. I'm not convinced that it's
the right thing to do. However if you were to provide that
flexibility, I would agree that get/createHM() is probably a better
way to go about it than setHM(). But I think that introducing
volatility to the HandlerManager exposes a flaw in the relationship
between Widgets, HandlerManagers, and Handlers.



On Thu, Feb 11, 2010 at 1:05 PM, Ray Ryan rj...@google.com wrote:
 This conversation keeps getting complicated by discussions of policy. I'm
 just trying to make it possible for widgets we haven't thought of yet to
 define policies of their own.
 E.g., to temporarily switch between modes that change the set of events they
 source, copying some handlers or not if that's appropriate (perhaps in mode
 B I simply am not a source of the events that would happen in mode A.
 Perhaps I am. Let me choose). E.g., to implement an HM stack. E.g., to try
 out a singleton HM (I wouldn't, but why should I stop you from trying it
 out).
 I think JohnL has hit the sweet spot with:
 /**
  * Called by default implementation of {...@link #getHM}
  * to lazily instantiate the HM for this widget.
  */
 protected HM createHM();
 /**
  * All access to the widget's HM must be made through this method.
  * It is an error to cache the object returned. The default implementation
  * returns the result of {...@link #createHM} the first time it is called.
  */
 protected HM getHM();
 If I override getHM(), I have the option to call the normal createHM() to
 get whatever HM the widget normally uses. Or not. If I override createHM() I
 can provide a custom implementation, or wrap the normal one, without having
 to re-implement the lazy instantiation mechanism.
 Am I trying to provide flexibility that no one is asking for?

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

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


Re: [gwt-contrib] Re: Add the ability to change the default HandlerManager of a Widget

2010-02-11 Thread Isaac Truett
I don't get why it would be necessary. What would you be able to do by
putting an HM on ice that you can't do with the existing API? Why
complicate things? Where's the use case that requires this new API?

Is this just a philosophical argument over narrowly defined, tightly
controlled APIs vs. more abundant, unrestricted APIs?




On Thu, Feb 11, 2010 at 1:34 PM, Ray Ryan rj...@google.com wrote:
 I don't get that. If I (widget) have nothing to say to you for a while (am
 not going to be generating the kinds of events that you are registered for),
 why do you care if my mechanism for achieving that involves putting my usual
 HM on ice? So long as I don't cause an error if you de-register in the
 meantime, what's the problem?

 On Thu, Feb 11, 2010 at 10:23 AM, Isaac Truett itru...@gmail.com wrote:

  Am I trying to provide flexibility that no one is asking for?

 In my opinion, this is providing flexibility that is not necessary and
 is not a net positive change to the API. I'm not convinced that it's
 the right thing to do. However if you were to provide that
 flexibility, I would agree that get/createHM() is probably a better
 way to go about it than setHM(). But I think that introducing
 volatility to the HandlerManager exposes a flaw in the relationship
 between Widgets, HandlerManagers, and Handlers.



 On Thu, Feb 11, 2010 at 1:05 PM, Ray Ryan rj...@google.com wrote:
  This conversation keeps getting complicated by discussions of policy.
  I'm
  just trying to make it possible for widgets we haven't thought of yet to
  define policies of their own.
  E.g., to temporarily switch between modes that change the set of events
  they
  source, copying some handlers or not if that's appropriate (perhaps in
  mode
  B I simply am not a source of the events that would happen in mode A.
  Perhaps I am. Let me choose). E.g., to implement an HM stack. E.g., to
  try
  out a singleton HM (I wouldn't, but why should I stop you from trying it
  out).
  I think JohnL has hit the sweet spot with:
  /**
   * Called by default implementation of {...@link #getHM}
   * to lazily instantiate the HM for this widget.
   */
  protected HM createHM();
  /**
   * All access to the widget's HM must be made through this method.
   * It is an error to cache the object returned. The default
  implementation
   * returns the result of {...@link #createHM} the first time it is called.
   */
  protected HM getHM();
  If I override getHM(), I have the option to call the normal createHM()
  to
  get whatever HM the widget normally uses. Or not. If I override
  createHM() I
  can provide a custom implementation, or wrap the normal one, without
  having
  to re-implement the lazy instantiation mechanism.
  Am I trying to provide flexibility that no one is asking for?
 
  --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors

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



 --
 I wish this were a Wave

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

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


Re: [gwt-contrib] Re: Add the ability to change the default HandlerManager of a Widget

2010-02-11 Thread Isaac Truett
I was actually thinking it would involve overriding onBrowserEvent().
Maybe I need to have another look at how HandlerManager fits into
things. I thought of it more as a dispatcher directing traffic than
the actual source of event firing. But yes, essentially, it looks like
all of the tools are there already to turn off one type of event and
turn on another. The handlers for the off event don't fire because
their event simply doesn't happen. Then you don't have to worry about
which HM is active when a handler is added, making sure they get
removed properly, etc. Simpler, as you said.



On Thu, Feb 11, 2010 at 3:30 PM, Ray Ryan rj...@google.com wrote:
 Your point being that I could just implement a custom handler manager that
 can do any of these things, and so should keep Widgets that much simpler,
 yes? I don't have a good answer to that.

 On Thu, Feb 11, 2010 at 10:54 AM, Isaac Truett itru...@gmail.com wrote:

 I don't get why it would be necessary. What would you be able to do by
 putting an HM on ice that you can't do with the existing API? Why
 complicate things? Where's the use case that requires this new API?

 Is this just a philosophical argument over narrowly defined, tightly
 controlled APIs vs. more abundant, unrestricted APIs?




 On Thu, Feb 11, 2010 at 1:34 PM, Ray Ryan rj...@google.com wrote:
  I don't get that. If I (widget) have nothing to say to you for a while
  (am
  not going to be generating the kinds of events that you are registered
  for),
  why do you care if my mechanism for achieving that involves putting my
  usual
  HM on ice? So long as I don't cause an error if you de-register in the
  meantime, what's the problem?
 
  On Thu, Feb 11, 2010 at 10:23 AM, Isaac Truett itru...@gmail.com
  wrote:
 
   Am I trying to provide flexibility that no one is asking for?
 
  In my opinion, this is providing flexibility that is not necessary and
  is not a net positive change to the API. I'm not convinced that it's
  the right thing to do. However if you were to provide that
  flexibility, I would agree that get/createHM() is probably a better
  way to go about it than setHM(). But I think that introducing
  volatility to the HandlerManager exposes a flaw in the relationship
  between Widgets, HandlerManagers, and Handlers.
 
 
 
  On Thu, Feb 11, 2010 at 1:05 PM, Ray Ryan rj...@google.com wrote:
   This conversation keeps getting complicated by discussions of policy.
   I'm
   just trying to make it possible for widgets we haven't thought of yet
   to
   define policies of their own.
   E.g., to temporarily switch between modes that change the set of
   events
   they
   source, copying some handlers or not if that's appropriate (perhaps
   in
   mode
   B I simply am not a source of the events that would happen in mode A.
   Perhaps I am. Let me choose). E.g., to implement an HM stack. E.g.,
   to
   try
   out a singleton HM (I wouldn't, but why should I stop you from trying
   it
   out).
   I think JohnL has hit the sweet spot with:
   /**
    * Called by default implementation of {...@link #getHM}
    * to lazily instantiate the HM for this widget.
    */
   protected HM createHM();
   /**
    * All access to the widget's HM must be made through this method.
    * It is an error to cache the object returned. The default
   implementation
    * returns the result of {...@link #createHM} the first time it is
   called.
    */
   protected HM getHM();
   If I override getHM(), I have the option to call the normal
   createHM()
   to
   get whatever HM the widget normally uses. Or not. If I override
   createHM() I
   can provide a custom implementation, or wrap the normal one, without
   having
   to re-implement the lazy instantiation mechanism.
   Am I trying to provide flexibility that no one is asking for?
  
   --
   http://groups.google.com/group/Google-Web-Toolkit-Contributors
 
  --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors
 
 
 
  --
  I wish this were a Wave
 
  --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors

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



 --
 I wish this were a Wave

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

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


Re: [gwt-contrib] Re: Add the ability to change the default HandlerManager of a Widget

2010-02-11 Thread Isaac Truett
@John - No objection here.

@Ray squared - The idea of overriding HandlerManager still intrigues
me. I've never found myself wanting to do it and I don't recall seeing
it in practice elsewhere. I'm curious. If either of you knows of a
project where I could find an example, would you mind passing along a
link?



On Thu, Feb 11, 2010 at 4:52 PM, John LaBanca jlaba...@google.com wrote:
 Does anyone object to adding createHandlerManager now, and then adding
 getHandlerManager if it is needed later?
 Thanks,
 John LaBanca
 jlaba...@google.com


 On Thu, Feb 11, 2010 at 4:09 PM, Ray Ryan rj...@google.com wrote:

 But I could still override createHM to be a wrapper that is backed by two
 separate instances, for example. I'm running out of rationalizations for
 providing both methods. And if getHM is missed it could be added later.

 180 degrees,
 rjrjr

 On Feb 11, 2010 1:00 PM, Ray Cromwell cromwell...@gmail.com wrote:

 If you need to swap out two different complex event handling modes of
 a widget (where say, a half dozen different events are being
 monitored), I think it is too complex to remove all the old handlers
 and add new ones every time, I also think overriding onBrowserEvent is
 kind of tedious and limited, since every time you need to change the
 set being nullified or altered, you need to edit the method.

 Consider a paint program with a paint widget, where, depending on
 which tool is selected (clone, crop, airbrush, etc) a different set of
 event handlers will be active. On some, you may care about drag, or
 keyboard, or mouse wheel, or others, you don't.

 You could of course write an object that absorbs all the events and
 re-routes/broadcasts them as needed, but then all you've done is
 simply re-invent HandlerManager and called it 'EventRouter' or some
 subject.

 Ray * Ray = Ray ^2

 :)

 On Thu, Feb 11, 2010 at 12:43 PM, Isaac Truett itru...@gmail.com wrote:
  I was actually thinking...

 --

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

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

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

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


Re: [gwt-contrib] Re: Add the ability to change the default HandlerManager of a Widget

2010-02-10 Thread Isaac Truett
The argument seems to revolve around changing HandlerManagers
resulting in the loss of registered handlers. Is it possible that the
HandlerManager and the set of registered handlers aren't really the
same thing and need to be separated? Would everyone be happy if you
could call setHandlerManager() and the new manager would still service
the same set of handlers that existed previously?


On Wed, Feb 10, 2010 at 10:59 AM, Ray Ryan rj...@google.com wrote:
 I forgot about that nuance of your proposal. I like.
 @jat: the stack idea is nifty, but expanding the scope of the patch even
 worse than I am. And JL's proposal would let one implement that.

 On Wed, Feb 10, 2010 at 7:56 AM, John LaBanca jlaba...@google.com wrote:

 I still think my proposal solves this for both cases.  We add a protected
 createHandlerManager, which is more restrictive because it is only called
 once per widget.
 We also make getHandlerManager() protected, which allows users to replace
 the HandlerManager if they really want to by overriding getHandlerManager to
 return one of many.  It would be up to the developer to add a
 setHandlerManager() method in their own widgets that would change the return
 value of getHandlerManager(), so its intentionally more difficult and
 therefore forces the developer to think about it a little more.
 Thanks,
 John LaBanca
 jlaba...@google.com


 On Wed, Feb 10, 2010 at 10:44 AM, Sven Brunken
 sven.brun...@googlemail.com wrote:


 On 10 Feb., 16:28, Ray Ryan rj...@google.com wrote:
  Sven, you're arguing both sides here. You want things to be more
  customizable in general, but with your specific patch you're trying to
  be as
  restrictive as you can to achieve your personal goal.

 Both patches have the same restriction, once a handlermanager is set
 or the default one created, there is no way back to change it. I am
 also ok with a setHandlerManager without restrictions. But than people
 will have the problem that they will loose handlerregistrations, if
 they dont know what they are doing (and yes, there are these people).
 I wanted to make this patch as much fool proof as possible. It should
 be customaziable, but in a way, that you cannot brake it.

 I dont think that you really need to change the handlermanager during
 runtime after you set the first one. You also cannot change the
 element of a widget once you set the first one.

 
  I'm assuming that if we provide an unrestricted setHandlerManager we
  would
  also provide a getHandlerManager. It doesn't seem like rocket science
  to
  expect someone to check for an existing one if before clobbering it.
  I'm
  also assuming that these methods are protected, not part of every
  widget's
  public api.
 Yes sure, protected. They should not be public.

 
  I also would argue against providing both createHM and setHM. Redundant
  API
  is confusing API, another unfortunate trait of our widget set. Lazy
  creation
  can happen in the default implementation of getHM. A custom widget
  author
  could override that method to maintain laziness, or call setHM from
  their
  constructor to keep ours from ever seeing the light of day.

 I dont want to add boths. There is no need for it. One approach is
 more than sufficient. With both ways you would be able to change the
 default handlermanager (which is the goal in the end).
 
  On Tue, Feb 9, 2010 at 9:11 AM, Sven Brunken
  sven.brun...@googlemail.comwrote:
 
 
 
   The danger is that if you add handlers, and than later in your code
   call setHandlerManager with a new HandlerManager. If we dont check
   for
   a prior existing HandlerManager, all old HandlerRegistration's will
   be
   lost. If you dont know what happened, you will search forever why
   your
   old handlers are not working.
 
   You wont have the problem with a createHandlerManager method.
 
   On 9 Feb., 17:55, Ray Ryan rj...@google.com wrote:
If you're right that swapping HMs midstream is a bad idea, I think
you
   need
a better argument than it's a bad idea. What's the actual danger?
If
   I'm
making my own HM I'm already pretty savvy. Why tie my hands?
 
But yes, if you win that point, I agree with the change to replace
   setHM(HM)
with HM createHM()
 
   --
  http://groups.google.com/group/Google-Web-Toolkit-Contributors
 
  --
  I wish this were a Wave

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

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


 --
 I wish this were a Wave

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

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


Re: [gwt-contrib] Re: AutoHide PopupPanel on History Events

2010-01-13 Thread Isaac Truett
I like it except for one scenario:

Say I have a GWT-powered eBook reader. I hide some navigation controls
in the corner; mouse over and they pop up. I want them to disappear if
you click outside the popup, so auto-hide=true. But If you click next
page I want to set a history token (for the next page) and I want the
controls to stay visible so that you don't have to mouse back over the
trigger in the corner in order to flip the page again, or flip back.
If auto-hide-on-click implied auto-hide-on-history then you would have
to jump through some more hoops (keep track of the popup state and
re-show after history change if it was visible before).


On Wed, Jan 13, 2010 at 3:43 PM,  j...@google.com wrote:
 An idea: What if we just considered auto-hide on history to be
 equivalent to auto-hide? I definitely see that we can't hide *all*
 popups on history events, but ones mark auto-hide seem like fair game.
 What do you think?

 http://gwt-code-reviews.appspot.com/132804

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

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

Re: [gwt-contrib] Re: AutoHide PopupPanel on History Events

2010-01-13 Thread Isaac Truett
Take Ray's line of thinking one step further and have three methods?

setAutoHideOnClick()
setAutoHideOnHistory()
setAutoHide() //  Both of the above and any auto-hide-ish conditions
identified later

The constructor arg is passed to setAutoHide(). That makes sense in my
head. Is that more confusing to anyone else?


On Wed, Jan 13, 2010 at 4:08 PM, John LaBanca jlaba...@google.com wrote:
 So keep the new property, and set it true as a side effect of new

 Will it be confusing that it is a side effect of the constructor but not of
 setAutoHide()?  Also, is it worth breaking existing code if we are providing
 a separate method anyway?  I actually agree that its a good idea because its
 better for most users, but I'm just playing devil's advocate here.  Let me
 know what you think and I'll prepare a final patch.

 Also, I don't think you need enabled in that property name.

 I can remove it.
 Thanks,
 John LaBanca
 jlaba...@google.com


 On Wed, Jan 13, 2010 at 4:03 PM, rj...@google.com wrote:

 On Wed, Jan 13, 2010 at 12:55 PM, Isaac Truett itru...@gmail.com
 wrote:

 I like it except for one scenario:

 Say I have a GWT-powered eBook reader. I hide some navigation controls
 in the corner; mouse over and they pop up. I want them to disappear if
 you click outside the popup, so auto-hide=true. But If you click next
 page I want to set a history token (for the next page) and I want the
 controls to stay visible so that you don't have to mouse back over the
 trigger in the corner in order to flip the page again, or flip back.
 If auto-hide-on-click implied auto-hide-on-history then you would have
 to jump through some more hoops (keep track of the popup state and
 re-show after history change if it was visible before).

 So keep the new property, and set it true as a side effect of new
 PopupPanel(true). For Isaac's eReader:

 PopupPanel panel = new PopupPanel(true);
 panel.setAutoHideOnHistoryEventsEnabled(false);

 Also, I don't think you need enabled in that property name.

 http://gwt-code-reviews.appspot.com/132804


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

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

Re: [gwt-contrib] Re: now.. afetr GWT 2.0?

2009-12-18 Thread Isaac Truett
Has everyone responding in this thread been checking the issue
tracker, staring issues they want to see resolved, and entering new
issues where they don't yet exist in the tracker? I know several of
the requests mentioned in this thread are already in there.

http://code.google.com/p/google-web-toolkit/issues/list



On Fri, Dec 18, 2009 at 11:18 AM, Chris chrish...@gmail.com wrote:
 I would encourage any effort to get an instant compile feature in
 dev mode.  When designing the GUI and tweaking a widget here or there
 or css, a quick turn around would be a huge win.  Right now, tweaking
 the GUI is a cumbersome process.

 Chris

 On Dec 18, 10:16 am, Scott Blum sco...@google.com wrote:
 Thanks for the feedback Brad.  We've talked internally about an idea for
 instant compile where the workflow would be essentially like hosted mode,
 except it would very quickly translate your code into JavaScript with zero
 optimizations.  It sounds like there might be some interest in this.

 (Of course, we also want to make hosted mode much faster than it is even in
 2.0!)

 On Fri, Dec 18, 2009 at 9:50 AM, Brad Leupen qcomps...@gmail.com wrote:
  Arthur,

  No, we are not closing DevMode. Our client app is not small.
  Refreshing DevMode in 2.0 takes 20-30 seconds on a decent multi-core
  workstation. Often, we are only able to refresh a handful of times
  before we start running into out-of-memory exceptions and browser
  crashes (FF 3.5.6). I don't want to sound unappreciative - DevMode in
  2.0 is MUCH MUCH faster than before. We are very excited about this.
  However, I rarely need to use the debugger in the actual client. Most
  of the time I just want to refresh the layout or test the usability of
  a widget. For this, DevMode is overkill and, in fact, useless for
  testing real world UI latency.

  Draft Compile is a wonderful idea but even it takes over a minute to
  compile a single permutation of our app.

  At the end of the day, all i want to do is make a small change to a
  widget and refresh my browser to test the layout, look and feel, and
  usability. over and over and over. Sometimes i might need to debug my
  ui logic but not most of the time.

  Brad

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

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

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


Re: [gwt-contrib] now.. afetr GWT 2.0?

2009-12-16 Thread Isaac Truett
I'd like to see SuggestBox get a little love. For example:

http://code.google.com/p/google-web-toolkit/issues/detail?id=2311
http://code.google.com/p/google-web-toolkit/issues/detail?id=2739
http://code.google.com/p/google-web-toolkit/issues/detail?id=3409

And one of those issues links to this thread where I had some other
thoughts on SuggestBox improvements:

http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/83db777f0e0602d0

And if I could include a wish for future GPE development it would be
wizards, automated refactorings, and reusable code templates. Things
like:

http://code.google.com/p/google-web-toolkit/issues/detail?id=3914


I already have at least one SuggestBox patch floating around out
there. I'd be happy to update that and work on other SuggestBox
features, too, in my spare time. If somebody with commit privs cares
to buddy up for design and review, please feel free to contact me on
or off list. :)

Oh, and woohoo GWT 2.0! Go team!

- Isaac



On Wed, Dec 16, 2009 at 12:01 PM, Bruce Johnson br...@google.com wrote:
 Working on a draft one.
 What do folks here think is important?

 On Wed, Dec 16, 2009 at 7:42 AM, tfreitas tfrei...@gmail.com wrote:

 What about roadmap?

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

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

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


Re: [gwt-contrib] TypeOracle allTypes including types not in a source path

2009-11-23 Thread Isaac Truett
+1 deprecate and warn.

On Mon, Nov 23, 2009 at 2:24 PM, Ray Ryan rj...@google.com wrote:
 FWIW, this confusion is exactly why webAppCreator no longer generates
 projects that use the implicit include. I wonder if we shouldn't flat out
 deprecate it--in which case a warning would be the right thing.

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

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


Re: [gwt-contrib] Dev mode Swing UI horizontal scrolling

2009-11-21 Thread Isaac Truett
I agree that SwingLoggerPanel hasn't changed, but something related
must have changed. I've just fired up dev mode from trunk (updated
within the last 24 hours) and the upper panel scrolls while the lower
panel line wraps. Maybe an unintentional result of some other change
since MS2. Regardless, I'm quite happy with the way it works in trunk
and don't feel a need to investigate any further.

Thank you, Chris and John. Sorry for the false alarm!

- Isaac

On Fri, Nov 20, 2009 at 10:20 AM, John Tamplin j...@google.com wrote:
 On Fri, Nov 20, 2009 at 10:15 AM, Chris Ramsdale cramsd...@google.com
 wrote:

 I'll see if I can reproduce this using RC1 and get back to you shortly.

 There have been no changes in RC1 for that.

 On Fri, Nov 20, 2009 at 9:14 AM, Isaac Truett itru...@gmail.com wrote:

 I've noticed that the Swing UI for dev mode is missing horizontal
 scroll bars. That is, if you have an item in the log tree or details
 in the panel below that exceed the width of the window, there's no way
 to scroll over and read the text. I've tested this in MS2. Can anyone
 verify if this problem still exists in RC1? I probably won't have a
 chance to install RC1 and try it out until later this weekend.

 It has been a long time since I did that, but IIRC the code that does that
 is SwingLoggerPanel.java:373, and I couldn't find a way that allowed
 horizontal scrolling and auto-resized the details pane.  I haven't done much
 with Swing, so I am sure there is a better way to do this -- patches welcome
 :).

 --
 John A. Tamplin
 Software Engineer (GWT), Google

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

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


[gwt-contrib] Dev mode Swing UI horizontal scrolling

2009-11-20 Thread Isaac Truett
All,

I've noticed that the Swing UI for dev mode is missing horizontal
scroll bars. That is, if you have an item in the log tree or details
in the panel below that exceed the width of the window, there's no way
to scroll over and read the text. I've tested this in MS2. Can anyone
verify if this problem still exists in RC1? I probably won't have a
chance to install RC1 and try it out until later this weekend.

Thanks,
Isaac

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


Re: [gwt-contrib] Google Web Toolkit 2.0 RC1 Now Available

2009-11-17 Thread Isaac Truett
Woo! Go team!

I've been using MS2 on an old 1.4 app that I'm updating. Upgrade was
smooth. New dev mode is great. Looking forward to trying RC1 now with
the Eclipse plugin update.

Thanks!



On Tue, Nov 17, 2009 at 2:13 PM, Bruce Johnson br...@google.com wrote:
 Hi folks!
 GWT 2.0 RC1 is now ready for you to try. The full documentation is still
 very much a work in progress, but you can at least start trying out the GWT
 SDK distribution and the Google Plugin for Eclipse using the following
 instructions:
     http://code.google.com/p/google-web-toolkit/wiki/GWT_2_0_RC
 GWT 2.0 is going to be a big release, so don't be surprised if there are a
 few bumps and surprises as we continue to finalize everything. Similarly, we
 would caution you against using GWT 2.0 RC1 in production.
 We are eager to get your feedback, both good and bad, in the Google Web
 Toolkit Developer Forum:
     http://groups.google.com/group/google-web-toolkit
 If you find specific bugs to report, please do so in the GWT Issue Tracker:
     http://code.google.com/p/google-web-toolkit/issues
 See you online. Happy coding :-)
 -- Bruce, on behalf of the GWT team

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

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


[gwt-contrib] Re: Server side I18N

2009-10-20 Thread Isaac Truett

The idea of having some permutations resolved JIT and cached sounds
great! I would expect more differences than just directionality, but I
have no idea how many. What about John's plural example, for instance?
That's more than a localized string replacement.



On Tue, Oct 20, 2009 at 10:46 AM, Ray Ryan rj...@google.com wrote:
 The 40+ languages situation really is unpleasant, and has lead us to devote
 a lot of time to squeezing every last ounce of performance out of the
 compiler. We've pitted our desire to let the compiler spend time optimizing
 code against the need to get things built in a reasonable amount of time,
 and we're in a continual struggle on the reasonable amount of time side.
 How have we convinced ourselves that a tight binary requires a permutation
 per language? Wouldn't a permutation per direction (rtl v.ltr) plus load
 time stitching of locale resources work just as well in the browser? It's
 not like loading the resources would have to happen via a separate browser
 request, they could be blended with the rest of the code by the server at
 request time.
 I think I just suggested that the cache*html files become a template, with
 tokens swizzled for localized strings and data urls post compile, perhaps on
 demand. That sounds different than a linker to me--is it?
 rjrjr

 On Tue, Oct 20, 2009 at 6:59 AM, John Tamplin j...@google.com wrote:

 On Tue, Oct 20, 2009 at 4:24 AM, Thoka thobias.karls...@gmail.com wrote:

 The initial problem was due to compile time and permutations. We just
 launched a GWT application with 43 languages, which generates about
 43*6(?) permutations, and to get 43 languages (where each language has
 about 800 text and 300 configuration properties) entirely correct,
 this would generate a whole bunch of extra builds and server downtime
 each time a country wants to change even a very small thing as a
 misspelling. Perhaps this is not very useful when an application is
 perfectly in shape, configured and all texts are flawless, but while
 in developing/staging state it has saved us weeks of development since
 the customer is now able to internationalize their application live
 at staging/pre-prod state via an I18N-servlet, without the need to
 translate blindly and wait for the re-build and re-deploy for each
 batch.

 Perhaps this is not a feature for the common GWT developer, but as
 stated, it is very nice to have for larger applications.

 I agree the situation you describe is an issue.  A few points:

 Doing a release build, with all the localizations, should only need to be
 done when you are actually pushing a new build to production.  All your work
 can be done with a different module that limits the number of locales (and
 user agents, depending on what sort of work you are doing) during
 development.
 GWT is designed for parallel compilation.  If you have a compile cluster,
 you can build all the permutations in parallel so that the overall build
 time is the same as one permutation if you have enough machines.  Instead of
 calling the Compiler entry point, you run Precompile on the main node, then
 CompilePerms on each permutation (they can all be run in parallel), and then
 Link after all permutations have finished.  If the nodes don't share a
 common filesystem, you have to do the work to copy the precompilation.ser
 file to the permutation nodes and get all the artifacts back from them to
 the main node.  You also have to provide some glue for your cluster/build
 system to make this happen, but the basic support is there.  Eventually we
 will probably provide more assistance in this area.
 Lex is working on changes to the Link phase which should (in theory) allow
 incremental linking -- you could recompile just the permutation you need to
 change and link it with the results of a previous compile, so if all you did
 was to change the German translations you could just rebuild those
 permutations to get your compiled output.

 So, basically I agree that this is an issue but I think the best solution
 is not to throw out compile-time evaluation/optimization but instead to use
 the existing tools for parallel compilation, and for us to continue to
 improve those tools.
 --
 John A. Tamplin
 Software Engineer (GWT), Google




 


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



[gwt-contrib] Re: break up our too-large RPCSuite

2009-10-13 Thread Isaac Truett

 (@GWTC, even if successful, this is unlikely to help most external users,
 unless you happen to have an extra hundred machines available for a test
 run.  Sorry.  It should, however, let us break you less often, if only by
 shortening the build/test cycle of the robot builder.)

Now if only there were a huge server farm somewhere with a little
spare CPU time to act as a build/test robot for the rest of us. Say,
something that ran Python and Java web apps. Wouldn't that be awesome?
;D

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



[gwt-contrib] Re: Adds parsers for Dock Stack layout panels. Updates Mail sample to use UiBinder.

2009-09-22 Thread Isaac Truett

Hey guys,

 The autoformater will change this to

@UiField
Button closeButton;

 which sucks. I want to fix that for annoations with no arguments, but
 have no
 idea how to. You have any clue to share?

 Bugs the crap out of me too. I can't find any annotation-related
 settings in the code formatter, unfortunately.


Just in case you didn't see this: in Eclipse 3.5 (I haven't looked at
earlier versions) there's an Annotations section on the New Lines tab.
That will let you remove the new lines after annotations, but it
doesn't let you decide based on whether or not the annotation has
arguments.


- Isaac

On Tue, Sep 22, 2009 at 4:50 PM,  j...@google.com wrote:


 http://gwt-code-reviews.appspot.com/68805/diff/1/3
 File samples/mail/src/com/google/gwt/sample/mail/client/AboutDialog.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/3#newcode38
 Line 38: @UiField Button closeButton;
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 The autoformater will change this to

   �...@uifield
    Button closeButton;

 which sucks. I want to fix that for annoations with no arguments, but
 have no
 idea how to. You have any clue to share?

 Bugs the crap out of me too. I can't find any annotation-related
 settings in the code formatter, unfortunately.

 http://gwt-code-reviews.appspot.com/68805/diff/1/8
 File samples/mail/src/com/google/gwt/sample/mail/client/Mail.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/8#newcode68
 Line 68: // Add the outer panel to the RootPanel, so that it will be
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 RootLayoutPanel

 Done.

 http://gwt-code-reviews.appspot.com/68805/diff/1/10
 File samples/mail/src/com/google/gwt/sample/mail/client/MailDetail.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/10#newcode44
 Line 44: subject.setInnerHTML(item.subject);
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 Should put a comment here explaining how shockingly dangerous it would
 be to
 take user provided text as innerHTML in a production app for XSS
 reasons, and
 that we're assuming that our server has done the appropriate escaping.

 Done.

 http://gwt-code-reviews.appspot.com/68805/diff/1/13
 File samples/mail/src/com/google/gwt/sample/mail/client/MailList.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/13#newcode236
 Line 236: table.setHTML(i, 0, nbsp;);
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 ditto

 These are static strings, which are always safe.

 http://gwt-code-reviews.appspot.com/68805/diff/1/16
 File samples/mail/src/com/google/gwt/sample/mail/client/Shortcuts.ui.xml
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/16#newcode24
 Line 24: g:header size='4'g:Label styleName='{style.stackHeader}'
 text='Mailboxes'//g:header
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 g:header size='4'g:Label styleName='{style.stackHeader}'
    Mailboxes
 /g:Label//g:header

 and likewise below

 Done.

 http://gwt-code-reviews.appspot.com/68805/diff/1/24
 File user/src/com/google/gwt/uibinder/parsers/DockLayoutPanelParser.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/24#newcode82
 Line 82: writer.die(Child must be one of {north, south, east, west,
 center});
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 writer.die(In %s, child must be one of {north, south, east, west,
 center},
 elem);

 here and below and throughout the parsers

 Also, is it legal to have more than one child of a particular
 direction?

 die(): done.

 It is indeed legal to have more than one widget in a direction, in any
 order.

 http://gwt-code-reviews.appspot.com/68805/diff/1/24#newcode88
 Line 88: writer.die(Dock must contain a single child widget.);
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 redundant, this check is performed by consumeSingleChildElement

 Done.

 http://gwt-code-reviews.appspot.com/68805/diff/1/25
 File
 user/src/com/google/gwt/uibinder/parsers/StackLayoutPanelParser.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/25#newcode80
 Line 80: return child.getNamespaceUri().equals(parent.getNamespaceUri())
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 We need to bake this into an AbstractElementParser, don't we?

 Probably so. Would have been useful. Next time around...

 http://gwt-code-reviews.appspot.com/68805/diff/1/28
 File user/src/com/google/gwt/user/client/ui/DockLayoutPanel.java
 (right):

 http://gwt-code-reviews.appspot.com/68805/diff/1/28#newcode191
 Line 191: public void insertEast(Widget widget, double size, Widget
 before) {
 On 2009/09/22 20:12:42, Ray Ryan wrote:
 It's all of these insert methods that made me think you'd be better
 off allowing
 only a single widget in each position.

 Perhaps, but it's still pretty useful to have any number of them. The
 insert() case is kind of annoying to write from my end, but it's pretty
 useful from the developer's end.

 http://gwt-code-reviews.appspot.com/68805

 


--~--~-~--~~~---~--~~

[gwt-contrib] Re: GWT Incubator compatibility policy

2009-09-10 Thread Isaac Truett

I am confident that r6108 fixed the problem I was having with GWT
trunk last night. I think I just happened to try to build during a
brief period where the build had broken. By the time r6108 had been
committed, I had already moved on to other things.

I see what you're saying about incubator being bogged down by
backwards compatibility. I had thought of incubator more as a place to
develop new APIs rather than a place to build on pre-release APIs. The
issue as it sounds to me is that when a new API develops outside of
incubator (such as in GWT trunk), you want to develop/update incubator
widgets with that API before it gets into a GWT milestone.

Would a branch for 1.7 really help with the morass problem? If you
maintain the branch, then you still have to code incubator changes
against two different versions of GWT. If you don't maintain the
branch, then it's not particularly useful.

Going forward should the advice be don't use incubator unless you
plan to stay at the bleeding edge of GWT trunk? I can't speak for
other developers, but if that had been the case then I don't think I
would've ever used incubator widgets in my work projects. Maybe I
shouldn't have used them, but they've been very helpful so far. None
of the widgets have been production quality to begin with, but I've
been able to report bugs and get bug fixes committed, sometimes
supplying fixes myself, and build from incubator trunk without
worrying that I'd have to update my GWT core to a trunk build. Losing
that assurance will hurt, but it won't be the end of the world. It
will definitely make it harder for me to benefit from the latest
incubator widget bug fixes.





On Thu, Sep 10, 2009 at 11:44 AM, Ray Ryan rj...@google.com wrote:
 I built incubator against trunk last night. Are you still seeing trouble
 there?
 The problem on our end has been that having to maintain code that works both
 with trunk and with the previous release makes it very difficult to iterate
 rapidly on incubator code. What was supposed to be a place that we could
 rapidly develop new features instead turns into a morass where forward
 progress is twice as hard a normal. That's why UiBinder in particular never
 moved to incubator.
 Our expectation is that new features will be either developed directly in
 trunk (e.g. UiBinder), or else in separate projects on code.google.com that
 can determine their own policies on compatibility and contributors (e.g.
 Gin). The items that live in incubator already will either gradually move to
 trunk or languish.
 It sounds like we need to think a bit harder how to handle the stuff that
 hasn't graduate yet, but which is still in use. My knee jerk is to cut a 1.7
 branch just before the patch that killed off StyleInjector. How does that
 sound?
 rjrjr

 On Thu, Sep 10, 2009 at 8:28 AM, Isaac Truett itru...@gmail.com wrote:

 [oops - +gwtc]


 Hi, Ray,

 I appreciate the drive to move forward and I applaud jumping on
 opportunities to remove redundant code.

 The reason this policy was important, to me at least, is that it
 provided a baseline to work against. The code in the incubator can be
 very useful (I use PagingScrollTable extensively and used DatePicker
 from incubator before it graduated) but it's also risky because the
 code is still experimental and subject to change. The assurance that
 those changes would be compatible with a packaged and released GWT
 build (even just a milestone) meant that I could build incubator from
 trunk and pick up the latest features and bugfixes as long as my
 project tracked the latest GWT build. Because of the GWT policies on
 deprecation and backwards compatibility, this has been fairly easy in
 practice. As it stands now, incubator will not compile except against
 GWT trunk, which is also notoriously unstable (it wasn't building as
 recently as last night, which I see was corrected this morning). This
 presents a much higher risk for those of us using incubator code.

 It also becomes harder to work on the incubator itself when it has to
 compile against GWT trunk. I wanted to look into issue #267 last night
 and I was stymied by GWT trunk not being in a buildable state. Not an
 insurmountable obstacle, but one that seems unnecessary to me.

 - Isaac


 On Thu, Sep 10, 2009 at 11:03 AM, Ray Ryan rj...@google.com wrote:
  Hey, Isaac.
  That policy has proven very difficult to live with. (And to tell you the
  truth I forgot about it.)
  The reasoning here was that we have released incubator jars that work
  with
  1.7 and no plans to issue further ones before 2.0 MS1 lands. Should it
  prove
  necessary to go back and do so we can go back and branch.
  In the meantime, we were faced bugs due to FastTree in particular being
  tied
  to the old StyleInjector while new development was moving to the version
  in
  GWT.  We saw the opportunity to delete redundant code and took it.
  Is this going to cause problems for anyone?
  rjrjr
 
  On Wed, Sep 9, 2009 at 3:26 PM, Isaac Truett itru

[gwt-contrib] Re: Prettier GWT version names for upcoming 2.0 releases

2009-08-13 Thread Isaac Truett

 -- Example #1 --
 Please sort the following two lists chronlogically as quickly as you can:
 List 1: 1.6.2, 1.6.5, 1.6.0, 1.6.1
 List 2: 2.0.0-rc2, 2.0.0-ms2, 2.0.0, 2.0.0-rc1

This should be trivial for anyone familiar with the concepts of
milestone and release candidate builds. Anyone not familiar with those
concepts shouldn't be using those builds, IMO. It's a little harder
for a computer but they don't mind doing the extra work, really.

My beef with the current system is that it doesn't clearly distinguish
between releases and candidates/milestones. May I propose the
following alternative for picking apart?

major.minor.bugfix.svn-revision.[rc|m|r]n

where 'r' denotes a release.

That would disambiguate and sort easily.


On Thu, Aug 13, 2009 at 2:31 PM, Scott Blumsco...@google.com wrote:
 On Wed, Aug 12, 2009 at 6:39 PM, Bruce Johnson br...@google.com wrote:

 Senator Blum,
 Do you mean disturbing as in
 1) revolting,
 2) distressing, or
 3) disordering?

 Distressing, I think.
 -- Example #1 --
 Please sort the following two lists chronlogically as quickly as you can:
 List 1: 1.6.2, 1.6.5, 1.6.0, 1.6.1
 List 2: 2.0.0-rc2, 2.0.0-ms2, 2.0.0, 2.0.0-rc1
 -- Example #2 --
 uberuser: There's a bug in GWT where tab panels explode on FF3.
 gwtcoder: What version are you using?  I fixed that in 2.0.0.
  (+Status:Duplicate)
 uberuser: I'm using 2.0.0 and it's still broken.
 gwtcoder: Okay I'll take a look (-Status:Duplicate, +Status:Accepted)
 gwtcoder: I can't repro this in 2.0.0.  Are you sure you're using the 2.0.0
 RELEASE and not 2.0.0-rc1 or 2.0.0-ms2? (-Status:Accepted,
 +Status:NeedsInfo)
 uberuser: Doh!  You're right, I was using 2.0.0-rc1.  After upgrading to
 2.0.0 RELEASE and recompiling, the problem went away.  Sorry, thanks!
 gwtcoder: No prob, our version numbers are admittedly a bit confusing.
 (-Status:NeedsInfo, +Status:Duplicate)

 


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



[gwt-contrib] Re: Prettier GWT version names for upcoming 2.0 releases

2009-08-12 Thread Isaac Truett

This reminds me of a thread I saw recently on whether the value 1 in a
foo_percentage database column meant 100% or 0.01%.

And on topic, +1 for the new version names. Has anyone talked to the
maven crowd about this? They seem to usually have an opinion on naming
schemes.


On Wed, Aug 12, 2009 at 9:35 AM, Bruce Johnsonbr...@google.com wrote:
 Duh, Kelly. Everybody knows that you always start counting at 1 when there's
 a number immediately following a space or a non-digit and you start counting
 at 0 when there's a number that immediately follows a period. It's such a
 logical and obvious system that I thought the rules would be self-evident.
 On Wed, Aug 12, 2009 at 9:24 AM, Kelly Norton knor...@google.com wrote:

 No, no, Joel, we will start counting at 1 not 0. The first release will be
 gwt-2.1.1-m1.
 I think the naming scheme is good (even if sometimes starts with 0, other
 times with 1).
 /kel

 On Wed, Aug 12, 2009 at 9:12 AM, Joel Webber j...@google.com wrote:

 Makes sense to me. So the first one will be gwt-2.0.0-m0, right?

 On Tue, Aug 11, 2009 at 11:40 PM, Bruce Johnson br...@google.com wrote:

 Mostly, this writeup is aimed at people who have been working on GWT's
 own build-related stuff, but if anyone else has objections, now would be a
 good time to raise them (though it seems unlikely anyone would).
 In the past, we've never had a good naming scheme for distros other than
 the general availability distro.
 For milestones, we used the convention 0.0.rev, which probably scares people off and isn't at all self-descriptive. For RCs
 and GAs, we used major.minor.bugfix (e.g. 1.5.0 was 1.5 RC1, 1.5.1
 was 1.5 RC2, and 1.5.2 was GA). This is all too ad hoc and confusing.
 Here's the new proposal:
 major.minor.bugfix (e.g. 2.1.0, 2.1.1, 2.1.2)
 = This is an official, supported build. Every new minor (or bigger)
 release would start with a bugfix number of 0.
 major.minor.bugfix-rcn (e.g. 2.0.0-rc1, 2.0.0-rc2)
 = This is release candidate build n for the specified upcoming GWT
 release
 major.minor.bugfix-mn (e.g. 2.0.0-m1, 2.0.0-m2)
 = This is milestone build n for the specified upcoming GWT release
 In other words, the stream of announced code drops for 2.0 will look
 like this (assuming 2 milestone and 1 rc):
 1) gwt-2.0.0-m1.zip
 2) gwt-2.0.0-m2.zip
 3) gwt-2.0.0-rc1.zip
 4) gwt-2.0.0.zip
 Note that we would always include the RC number, even if there's just
 one (because you never know if another one is coming).
 I'm very happy to report that there seems to be no need to change even a
 single line of code, as best I can tell. (Thank you to whomever wrote the
 version string parsing code to ignore non-digit prefixes and suffixes.)
 Thus, by simply following this convention when we set GWT_VERSION in the
 continuous build, everything should work just fine.
 -- Bruce
 P.S. No, Joel, we can't start counting at 0, even though it makes more
 sense :-) I can read your mind.






 --
 If you received this communication by mistake, you are entitled to one
 free ice cream cone on me. Simply print out this email including all
 relevant SMTP headers and present them at my desk to claim your creamy
 treat. We'll have a laugh at my emailing incompetence, and play a game of
 ping pong. (offer may not be valid in all States).


 


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



[gwt-contrib] Any hints on why GWT's JUnit tests would be consistently timing out for me?

2009-08-08 Thread Isaac Truett

I'm trying to run the unit tests in GWT trunk. I've tried with Ant and
with the JUnit UI in Eclipse, but I'm seeing many of the suites exceed
the 60 second timeout:

[junit]  - 1 client(s) haven't responded back to JUnitShell since
the start of the test.

I'm at a loss to figure out what it's waiting on. I've sat and watched
my CPU usage and it isn't anywhere near topping out for the minute it
takes the test to time out. I've tried running just a single test
class or a single method using the Eclipse UI and even a do-nothing
test times out.

I'm assuming it's something wonky on my end. Anyone have any suggestions?

Thanks,
Isaac

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



[gwt-contrib] Re: Any hints on why GWT's JUnit tests would be consistently timing out for me?

2009-08-08 Thread Isaac Truett

Matt,

Actually I'm running under Win XP (with IE 6) right now. I tried with
-notHeadless and I didn't see any prompts. The test finished normally.
I then removed -notHeadless and the test timed out again. So, thank
you! I still don't know why it is timing out in headless mode, but at
least I can make the test run now.

- Isaac


On Sat, Aug 8, 2009 at 2:56 PM, Matt Mastraccimatt...@mastracci.com wrote:

 Issac,

 Are you running under Linux?  If so, your embedded Mozilla browser may
 be showing a prompt, but its window is hidden. Try running with -
 notHeadless.

 On 2009-08-08,  at 11:55 AM, Isaac Truett itru...@gmail.com wrote:


 I'm trying to run the unit tests in GWT trunk. I've tried with Ant and
 with the JUnit UI in Eclipse, but I'm seeing many of the suites exceed
 the 60 second timeout:

    [junit]  - 1 client(s) haven't responded back to JUnitShell since
 the start of the test.

 I'm at a loss to figure out what it's waiting on. I've sat and watched
 my CPU usage and it isn't anywhere near topping out for the minute it
 takes the test to time out. I've tried running just a single test
 class or a single method using the Eclipse UI and even a do-nothing
 test times out.

 I'm assuming it's something wonky on my end. Anyone have any
 suggestions?

 Thanks,
 Isaac

 

 


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



[gwt-contrib] Re: PopupPanel.center() places large content partially off-screen

2009-08-08 Thread Isaac Truett
Joel,

Same fix, but with a unit test.

- Isaac

On Tue, Aug 4, 2009 at 9:25 PM, Isaac Truettitru...@gmail.com wrote:
 Joel,

 The patch is attached. I wanted to write you a JUnit test to go with
 it, but I'm having trouble even getting the existing tests to run. I
 did verify this fix manually.

 Thanks,
 Isaac

 On Tue, Aug 4, 2009 at 3:22 PM, Isaac Truettitru...@gmail.com wrote:
 Thanks, Joel. I'll see if I can put something together tonight.

 On Tue, Aug 4, 2009 at 3:12 PM, Joel Webberj...@google.com wrote:
 Sounds like a bug to me. It's hard to imagine how this behavior could be
 considered useful. I would assume the appropriate behavior would be to
 center, but keep the top-[left right] on the screen, depending upon the RTL
 mode. Can anyone see a problem with this?
 @Isaac: If you feel like writing up a patch, I'd be happy to review.

 On Tue, Aug 4, 2009 at 2:49 PM, Isaac Truett itru...@gmail.com wrote:

 I've just noticed that when the content of a PopupPanel grows larger
 then the browser window, center() can position the panel with a
 negative top/left, making part of the panel unreachable (the window
 won't scroll up or left anymore to see the off-screen portion). Is
 this considered a feature of the center() method? If so, would
 people be open to adding an overloaded center(boolean
 dontGoOutOfBounds) that would keep the top and left from going
 negative, assuming a better name for the argument could be found?

 - Isaac




 




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



PopupPanel-center.patch
Description: Binary data


[gwt-contrib] PopupPanel.center() places large content partially off-screen

2009-08-04 Thread Isaac Truett

I've just noticed that when the content of a PopupPanel grows larger
then the browser window, center() can position the panel with a
negative top/left, making part of the panel unreachable (the window
won't scroll up or left anymore to see the off-screen portion). Is
this considered a feature of the center() method? If so, would
people be open to adding an overloaded center(boolean
dontGoOutOfBounds) that would keep the top and left from going
negative, assuming a better name for the argument could be found?

- Isaac

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



[gwt-contrib] Re: PopupPanel.center() places large content partially off-screen

2009-08-04 Thread Isaac Truett

Thanks, Joel. I'll see if I can put something together tonight.

On Tue, Aug 4, 2009 at 3:12 PM, Joel Webberj...@google.com wrote:
 Sounds like a bug to me. It's hard to imagine how this behavior could be
 considered useful. I would assume the appropriate behavior would be to
 center, but keep the top-[left right] on the screen, depending upon the RTL
 mode. Can anyone see a problem with this?
 @Isaac: If you feel like writing up a patch, I'd be happy to review.

 On Tue, Aug 4, 2009 at 2:49 PM, Isaac Truett itru...@gmail.com wrote:

 I've just noticed that when the content of a PopupPanel grows larger
 then the browser window, center() can position the panel with a
 negative top/left, making part of the panel unreachable (the window
 won't scroll up or left anymore to see the off-screen portion). Is
 this considered a feature of the center() method? If so, would
 people be open to adding an overloaded center(boolean
 dontGoOutOfBounds) that would keep the top and left from going
 negative, assuming a better name for the argument could be found?

 - Isaac




 


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



[gwt-contrib] Re: PopupPanel.center() places large content partially off-screen

2009-08-04 Thread Isaac Truett
Joel,

The patch is attached. I wanted to write you a JUnit test to go with
it, but I'm having trouble even getting the existing tests to run. I
did verify this fix manually.

Thanks,
Isaac

On Tue, Aug 4, 2009 at 3:22 PM, Isaac Truettitru...@gmail.com wrote:
 Thanks, Joel. I'll see if I can put something together tonight.

 On Tue, Aug 4, 2009 at 3:12 PM, Joel Webberj...@google.com wrote:
 Sounds like a bug to me. It's hard to imagine how this behavior could be
 considered useful. I would assume the appropriate behavior would be to
 center, but keep the top-[left right] on the screen, depending upon the RTL
 mode. Can anyone see a problem with this?
 @Isaac: If you feel like writing up a patch, I'd be happy to review.

 On Tue, Aug 4, 2009 at 2:49 PM, Isaac Truett itru...@gmail.com wrote:

 I've just noticed that when the content of a PopupPanel grows larger
 then the browser window, center() can position the panel with a
 negative top/left, making part of the panel unreachable (the window
 won't scroll up or left anymore to see the off-screen portion). Is
 this considered a feature of the center() method? If so, would
 people be open to adding an overloaded center(boolean
 dontGoOutOfBounds) that would keep the top and left from going
 negative, assuming a better name for the argument could be found?

 - Isaac




 



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



PopupPanel-center.patch
Description: Binary data


[gwt-contrib] Re: NOTICE - removing all @deprecated code for GWT 2.0

2009-07-31 Thread Isaac Truett

Woo and, may I say, hoo, for removing deprecated code.

Will deprecated code in the Incubator be disappearing as well?
Obviously if that deprecated code depends on deprecated GWT code, it
will at least have to be updated.


On Fri, Jul 31, 2009 at 12:22 PM, Fred Sauerfre...@google.com wrote:
 To all GWT contributors-
 As you may know, there many exciting
 things we're working on for GWT 2.0. With all the new features coming
 your way we thought GWT 2.0 would be a good opportunity to clean house and remove previously deprecated methods and classes. In
 many cases an equivalent replacement is suggested in the Javadoc and
 updating your projects should hopefully not be too onerous.
 While different sections of the API have been deprecated in different
 releases we wanted to make things as straightforward as possible for the
 upcoming release. As such, our plan for GWT 2.0 is to remove everything that
 was marked as deprecated in previous releases. We did not introduce any new
 deprecations in GWT 1.7 so you can find the complete list of items we plan
 to remove in this GWT 1.6 document:
   http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/deprecated-list.html


 If you have any serious concerns about the above deprecation list, please
 reply back to indicate how you will be affected. In particular I'm
 interested in any use cases in the GWT 1.6/1.7 API which you feel would not
 be covered in GWT 2.0 once the @deprecated methods and classes have been
 removed.
 Please note that Java compilers are required to warn you when your code uses
 @deprecated methods or classes. Although there are warning suppression
 mechanisms such as the @SuppressWarnings annotation and your IDE's or build
 environment's settings. So, in general, chances are you are probably not
 using any deprecated GWT APIs without knowing about it.
 Thanks--
 Fred Sauer
 Developer Advocate
 Google Inc.
 1600 Amphitheatre Parkway
 Mountain View, CA 94043
 fre...@google.com

 


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



[gwt-contrib] Re: More interfaces part 2

2009-07-23 Thread Isaac Truett

A very good write-up, Joel. I especially like that you mentioned the
union types. I recently discovered them myself, in that I found
myself wanting a FooAndBar interface and I realized that just such a
union was possible without actually declaring a new interface. It
seems to be a pretty low profile feature.

Thanks for sharing!


On Thu, Jul 23, 2009 at 9:49 AM, Joel Webberj...@google.com wrote:
 I'm bringing this back up again because of a recent ping to an issue-tracker
 entry about more interfaces.
 I understand your pain, but these are issues with the Java language which
 we've discussed at length in the past, and to my knowledge reached no
 substantive conclusions other than:
 - A few more interfaces in very specific places (e.g., InsertPanel) would
 be useful.
 - We can't run off and create custom interfaces for the cross-product of
 every characteristic interface and have every widget implement them. It
 turns into a permutation explosion of interfaces. If java had some kind of
 trait system or implied interfaces the story would be different, but alas,
 we're stuck with it the way it is for the foreseeable future.
 Making Widget an interface (IWidget?) sounds appealing in theory, for
 reasons you describe, but there are also very good reasons for leaving it as
 a concrete base class. This has come up often enough that I just created a
 wiki page explaining precisely why Widget is an abstract base class as
 opposed to an interface here:
 http://code.google.com/p/google-web-toolkit/wiki/WhyWidgetIsAClass
 On Fri, Apr 3, 2009 at 6:00 AM, Ed post2edb...@hotmail.com wrote:

 Hellu,

 I would like to know whtat the current status is of incoparating more
 basis interface in GWT?

 We talked about this a long time ago, but there more important issues
 then:

 http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/2aad0c3459e2c7f/cd59f6b35714ed31?lnk=gstq=more+interfaces

 I still keep on bouncing my head against these kind of interface
 issues:
 Below another example, which I hope would give some more priority to
 the issue:

 I need a general TextWidget that extends/implements from Widget and
 implements HasText, HasHtml.

 I thought I could easily solve this with Generics... Not.. really (see
 below).

 I want to return a Widget as result of a method that creates a Widget
 that implements HasHtml/HasText.
 I tried something like this:
  W extends Widget  HasText  HasHTML CmsFormatResultTextW  create
 (String item);

 But calling this method isn't possible as the compiler complaints that
 Widget isn't a valid substitute.

 Body example:
  return new HTML(aaa);
 Which isn't correct as the compiler also complaints  about not able to
 convert HTML to W...

 To solve this, I think I need a basis Widget interface instead of a
 Widget class.

 Please some feedback/advice on this.

 -- Ed




 


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



[gwt-contrib] Re: Proposal for improving JDO/JPA RPC support

2009-07-20 Thread Isaac Truett

 5) When the object is sent back to the server, the normal RPC mechanism is
 altered as follows
   a) the encoded server data is decoded and deserialized into the new object
 instance
   b) the client data is populated using setXXX() method invocations rather
 than by directly setting field values

Is this introducing a requirement that all serializable fields have
setters? Or will direct field access be used where a setter can't be
found?


On Mon, Jul 20, 2009 at 2:06 PM, Daniel Rice (דניאל
רייס)r...@google.com wrote:
 Hi all -
   I've been working on a patch to improve support for RPC of
 persistence-enhanced objects that would replace the one I recently submitted
 as trunk revision 5672.  I'd like to give those of you who are interested in
 the interaction between RPC and persistence a chance to help me validate the
 design before moving forward.
  The idea is to be able to deal with different persistence mechanisms in a
 way that does not depend too much on the details of their implementations.
 We assume that the persistence mechanism provides a way for instances to be
 detached from the object store, serialized, deserialized, and reattached in
 a well-defined way. Our strategy leverages this capability as follows:
 1) User code on the server detaches the object and places it into a state
 such that serialization is valid
 2) GWT detects whether any instance fields are present on the object that
 were not known to client code
 3) GWT performs hybrid serialization:
   a) GWT uses its regular RPC mechanism for the client-visible fields
   b) GWT uses Java serialization for any additional server-only instance
 fields
   c) GWT encodes the results of step (b) as a String
   d) GWT prepends the encoded String to the regular RPC data and transmits
 to the client
 4) Client code treats the object in the normal way and does not interact
 with the data from step (3b)
 5) When the object is sent back to the server, the normal RPC mechanism is
 altered as follows
   a) the encoded server data is decoded and deserialized into the new object
 instance
   b) the client data is populated using setXXX() method invocations rather
 than by directly setting field values
 All this is done only for classes that can be send bidirectionally, and
 which are determined to be (potentially) enhanced.
 The potential for enhancement is signaled in one of three ways:
 o The user adds the fully-qualified class name to a 'gwt.enhancedClasses'
 configuration property
 o The class is determined to have the JDO @PersistenceCapable annotation
 with detachable=true
 o The class is determined to have the JPA @Entity annotation
 If a class is determined to be potentially enhanced, the list of fields
 known to the client is added to the '.gwt.rpc' file that contains the RPC
 whitelist.  This list is used by step 2 of the RPC process which compares
 the set of client- and server-visible fields.
   Step (5b) is necessary to accommodate mechanisms like that of JDO, where
 the setter methods are enhanced to provide object state tracking (dirty
 bits).  If we were to set the fields directly, the object detached state
 would not be updated properly.
   My hope is that this mechanism would be general enough to support a
 variety of persistence mechanisms without the need to add a lot of
 special-case code.  I'm looking forward to any comments that you have as to
 whether this will work with your favorite persistence API, or any other
 thoughts that you have.  Thanks,
 Dan

 


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



[gwt-contrib] Re: Moving PagingScrollTable Friends to Trunk

2009-07-16 Thread Isaac Truett

Issue #188 has 40 stars, making it number seven in the issue list
(when sorted appropriately). Let's shoot for number one before John
gets back to working on it. ;-)

So if you're anxious for PST to leave the incubator, star this issue:
http://code.google.com/p/google-web-toolkit/issues/detail?id=188

- Isaac

On Thu, Jul 16, 2009 at 10:58 AM, John LaBancajlaba...@google.com wrote:
 We probably won't decide what to move into trunk until we get closer to the
 next release.  I'm working on improving our unit test coverage to make GWT
 more stable, and most of the other UI developers are busy on their own
 tasks.  Sorry I don't have a better answer, but I'll escalate the fact that
 quite a few people have been asking about the table and would like to see it
 in trunk.
 Thanks,
 John LaBanca
 jlaba...@google.com


 On Wed, Jul 15, 2009 at 6:31 PM, jay jay.gin...@gmail.com wrote:

 Bump again? Any status?

 thanks...

 jay

 On Jul 7, 8:40 am, jay jay.gin...@gmail.com wrote:
  bump. Anything?
 
  On Jun 24, 10:31 am, jay jay.gin...@gmail.com wrote:
 
 
 
   Just curious if the effort has been resumed? Regardless, is there
   anyway for you to commit what you do have somewhere we could look and
   provide feedback?
 
   thanks,
 
   jay
 
   On Jun 10, 8:28 am, John LaBanca jlaba...@google.com wrote:
 
@jay - I got side tracked with other tasks, but I'll pick up the
PagingScrollTable effort within a couple of weeks.  The main goal
when we
transfer the PagingScrollTable to GWT trunk is to separate the
concept of
scrolling (with three distinct tables) from the rest of the code.
 That way,
we can bulk render a single table element that includes the
header,data, and
footer and have it layout naturally.
 
@dflorey - I definitely plan to include all three of your points
into the
scroll table.  Thanks again for all your contributions.
 
I don't know exactly how long it will take to integrate everything
into the
GWT trunk, but its one of my highest priorities.
 
Thanks,
John LaBanca
jlaba...@google.com
 
On Wed, Jun 10, 2009 at 10:15 AM, dflorey daniel.flo...@gmail.com
wrote:
 
 Hi,
 I'd like to support this effort and would be glad if some of my
 changes would make it into trunk:
 - filters
 - column types for most frequently used column types
 (numbers,dates,text) including proper filtering, editing and
 sorting
 capabilities
 - simplified table generation ( see
   
 http://code.google.com/p/google-web-toolkit-incubator/wiki/TreeTable
 )
 
 (TreeTable is not ready for prime time yet)
 
 Daniel
 
 On 10 Jun., 05:34, jay jay.gin...@gmail.com wrote:
  I saw the initial commit of these classes into your branch, but
  I
  haven't seen any additional commits. I'd love to take a look at
  the
  current direction, and see what other input I can provide.
 
  jay
 
  On Jun 9, 7:12 am, John LaBanca jlaba...@google.com wrote:
 
   We'll definitely keep these things in mind when moving stuff
   over to
 GWT
   trunk.  We've also found a lot of general usability problems,
   such as
 the
   fact the the table doesn't layout naturally, which means apps
   require
 active
   layout.  During the transfer, we'll refactor quite a few
   things to make
 them
   more usable.  Specifically, we'd like to provide a version
   that allows
 you
   to bulk renderer the header and footer into the same table
   element,
   eliminated the three separate tables and fixed layout.  You
   would lose
 the
   scrolling feature, but you would not have to use active
   layout.
 
   When we start moving stuff into trunk or while its in my
   branch (as in
 right
   now), thats a good time to point out specific problems or
   requests.
  Its
   much harder to change the API after we make an official
   release.
 
   Thanks,
   John LaBanca
   jlaba...@google.com
 
   On Tue, Jun 9, 2009 at 5:01 AM, David david.no...@gmail.com
   wrote:
 
Jay,
 
We are experiencing the same ideas here. We store column
ordering and
widths on the server but we have no way of getting events in
the UI
 to
know when changes have been complete.
 
wouldn't it be nice that the dnd was included as well, I
could really
use the DND of columns! Was it hard to implement ? We did
not yet
bother to investigate since we have to focus on getting
functionality
complete first.
 
David
 
On Tue, Jun 9, 2009 at 10:00 AM, jayjay.gin...@gmail.com
wrote:
 
 As I see that this has begun (yeah), I'd like to throw
 out a
 few
 requests:
 
  * Please, please, please -- ensure that this is as
 extensible as
 

[gwt-contrib] Re: GWT 1.7 Now Available

2009-07-14 Thread Isaac Truett

I decided to jump on 1.7 this morning. Looks good so far. No
compilation problems, no new issues so far, and IE8 behavior much
better.

Thank you, Bruce, et al.


On Mon, Jul 13, 2009 at 9:01 PM, Bruce Johnsonbr...@google.com wrote:
 Hi everyone,

 GWT 1.7 is a minor update that adds better support for Internet Explorer 8,
 Firefox 3.5, and Safari 4. Each of these new browser versions introduced at
 least one change that negatively impacted compiled GWT modules, so we
 recommend that you do update to GWT 1.7 and recompile your existing
 applications to ensure that they work with the latest versions of browsers.
 No source code changes on your part should be required.

 Normally, a minor update such as this would have been named 1.6.5 (the
 previous latest version of GWT was 1.6.4), but we did add the value ie8 to
 the user.agent deferred binding property, which could impact projects
 using custom deferred binding rules that are sensitive to that property.
 Thus, we went with GWT 1.7 rather than GWT 1.6.5, to indicate that you may
 need to pay attention to that change. Details are in the release notes.

 In every other respect, this is just a bugfix release, so in the vast
 majority of cases, the update-recompile process should be nearly effortless.

 Download here:
 http://code.google.com/p/google-web-toolkit/downloads/list?can=1q=GWT+1.7.0

 Cheers,
 Bruce, on behalf of your friendly GWT Team

 


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



[gwt-contrib] Re: GWT 1.7 Now Available

2009-07-14 Thread Isaac Truett

Have you tried building incubator from trunk? I'm using more recent
incubator code and it compiles for me with GWT 1.7.

On Tue, Jul 14, 2009 at 4:37 PM, Fushionmenno.van.gange...@gmail.com wrote:

 Same problem here.

 On Jul 14, 4:45 pm, ma m...@coware.de wrote:
 Hello,

 I have problems with GWT1.7 and the actual release of the gwt-
 incubator library (gwt-incubator-march-02-2009.jar).
 The following compile errors occur in my project:
 ...
      [java]    [ERROR] Errors in 'jar:file:../gwt-incubator-
 march-02-2009.jar!/com/google/gwt/widgetideas/client/GlassPanel.java'
      [java]       [ERROR] Line 91:  Rebind result
 'com.google.gwt.widgetideas.client.impl.GlassPanelImpl' cannot be
 abstract
      [java]    [ERROR] Errors in 'jar:file:../gwt-incubator-
 march-02-2009.jar!/com/google/gwt/gen2/logging/impl/client/
 ClientConsoleLogHandlerImpl.java'
      [java]       [ERROR] Line 206:  Rebind result
 'com.google.gwt.gen2.logging.impl.client.ClientConsoleLogHandlerImpl.Impl'
 must be a class
      [java]    [ERROR] Cannot proceed due to previous errors
 ...

 Is there a new incubator release planned where these issues are fixed?

 Markus
 


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



[gwt-contrib] Patch for incubator issue #271

2009-06-18 Thread Isaac Truett
Hi John,

I know that PagingScrollTable is headed for trunk already, but I thought we
could slip this small patch into the incubator for the mean time. Would you
mind giving it a quick review?

Thanks,
Isaac


Index: src/com/google/gwt/widgetideas/table/client/PagingOptions.java
===
--- src/com/google/gwt/widgetideas/table/client/PagingOptions.java (revision
1681)
+++ src/com/google/gwt/widgetideas/table/client/PagingOptions.java (working
copy)
@@ -173,7 +173,7 @@
 numPagesLabel = new HTML();

 // Create the loading image
-loadingImage = new Image(scrollTableLoading.gif);
+loadingImage = new Image(GWT.getModuleBaseURL() +
scrollTableLoading.gif);
 loadingImage.setVisible(false);

 // Create the error label
Index: src/com/google/gwt/gen2/table/client/PagingOptions.java
===
--- src/com/google/gwt/gen2/table/client/PagingOptions.java (revision 1681)
+++ src/com/google/gwt/gen2/table/client/PagingOptions.java (working copy)
@@ -182,7 +182,7 @@
 numPagesLabel = new HTML();

 // Create the loading image
-loadingImage = new Image(scrollTableLoading.gif);
+loadingImage = new Image(GWT.getModuleBaseURL() +
scrollTableLoading.gif);
 loadingImage.setVisible(false);

 // Create the error label

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



[gwt-contrib] Re: Patch for incubator issue #271

2009-06-18 Thread Isaac Truett
Thanks. Committed as r1682 in incubator.

On Thu, Jun 18, 2009 at 4:47 PM, John LaBanca jlaba...@google.com wrote:

 LGTM.  I'll update this tomorrow.

 Thanks,
 John LaBanca
 jlaba...@google.com



 On Thu, Jun 18, 2009 at 4:30 PM, Isaac Truett itru...@gmail.com wrote:

 Hi John,

 I know that PagingScrollTable is headed for trunk already, but I thought
 we could slip this small patch into the incubator for the mean time. Would
 you mind giving it a quick review?

 Thanks,
 Isaac


 Index: src/com/google/gwt/widgetideas/table/client/PagingOptions.java
 ===
 --- src/com/google/gwt/widgetideas/table/client/PagingOptions.java (revision
 1681)
 +++ src/com/google/gwt/widgetideas/table/client/PagingOptions.java (working
 copy)
 @@ -173,7 +173,7 @@
  numPagesLabel = new HTML();

  // Create the loading image
 -loadingImage = new Image(scrollTableLoading.gif);
 +loadingImage = new Image(GWT.getModuleBaseURL() +
 scrollTableLoading.gif);
  loadingImage.setVisible(false);

  // Create the error label
 Index: src/com/google/gwt/gen2/table/client/PagingOptions.java
 ===
 --- src/com/google/gwt/gen2/table/client/PagingOptions.java (revision
 1681)
 +++ src/com/google/gwt/gen2/table/client/PagingOptions.java (working
 copy)
 @@ -182,7 +182,7 @@
  numPagesLabel = new HTML();

  // Create the loading image
 -loadingImage = new Image(scrollTableLoading.gif);
 +loadingImage = new Image(GWT.getModuleBaseURL() +
 scrollTableLoading.gif);
  loadingImage.setVisible(false);

  // Create the error label




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



[gwt-contrib] Re: Moving PagingScrollTable Friends to Trunk

2009-06-10 Thread Isaac Truett

Re: Bruce's point about expectations and features vs. performance.

Has there been (or should we start) discussion for the public record
of different facets/features of tables, their impact on performance,
and their possible class structure? What I'm thinking of specifically
is bulk rendering vs. dynamic model-backed tables, scrolling, paging,
and all the combinatorial permutations thereof. Will supported
features be part of a single class hierarchy as they are in Incubator
(i.e., PagingScrollTable extends ScrollTable; paging code is bound to
scrolling code, although scrolling can be disabled it would still add
code to the compiled app)? Or will they be pluggable features into a
base Table class (like MonthSelectors for DatePickers)? Or separate
implementations of a common Table interface?

- Isaac


On Wed, Jun 10, 2009 at 11:27 AM, Bruce Johnson br...@google.com wrote:
 I'll be the bad guy and try to lower expectations: whatever we end up doing,
 it has to be fast. We've seen some *horrible* usability problems with fancy
 tables -- even at a small number of rows -- and so don't be surprised if we
 have to pare back features and reduce API flexibility to ensure that a few
 key use cases are sufficiently high performance.

 -- Bruce

 On Tue, Jun 9, 2009 at 10:12 AM, John LaBanca jlaba...@google.com wrote:

 We'll definitely keep these things in mind when moving stuff over to GWT
 trunk.  We've also found a lot of general usability problems, such as the
 fact the the table doesn't layout naturally, which means apps require active
 layout.  During the transfer, we'll refactor quite a few things to make them
 more usable.  Specifically, we'd like to provide a version that allows you
 to bulk renderer the header and footer into the same table element,
 eliminated the three separate tables and fixed layout.  You would lose the
 scrolling feature, but you would not have to use active layout.

 When we start moving stuff into trunk or while its in my branch (as in
 right now), thats a good time to point out specific problems or requests.
 Its much harder to change the API after we make an official release.

 Thanks,
 John LaBanca
 jlaba...@google.com


 On Tue, Jun 9, 2009 at 5:01 AM, David david.no...@gmail.com wrote:

 Jay,

 We are experiencing the same ideas here. We store column ordering and
 widths on the server but we have no way of getting events in the UI to
 know when changes have been complete.

 wouldn't it be nice that the dnd was included as well, I could really
 use the DND of columns! Was it hard to implement ? We did not yet
 bother to investigate since we have to focus on getting functionality
 complete first.

 David

 On Tue, Jun 9, 2009 at 10:00 AM, jayjay.gin...@gmail.com wrote:
 
  As I see that this has begun (yeah), I'd like to throw out a few
  requests:
 
   * Please, please, please -- ensure that this is as extensible as
  possible. Here's just one example--I've integrated the gwt-dnd library
  to allow drag-n-drop re-ordering of columns. There are a couple of
  funny corner cases, though, because I have no way of knowing when a
  column resize has completed. Obviously, if you're resizing the column,
  you're not interested in dragging it to a new location. I strongly
  encourage you to think three, four, five times about making a method
  private or package protected. Liberal use of JavaDoc with strongly
  worded warnings to those of us who need to customize the widgets. I
  know this cuts down on your ability to make under-the-cover changes
  from release to release, but it makes it so that folks like me don't
  have to resort to things like JSNI trickery or copying the entire
  class or set of classes into our own code base.
 
   * As a direct follow up to #1, fire some more events. For example,
  fire an event when a column resize starts and when it ends.
 
   * Flexibility is great, but often I'm just interested in the simple
  cases...simple. My example here is the multiple-row header stuff. It's
  GREAT! I LOVE it! (And better yet, our customers have been screaming
  for this!) But, I don't always need/want it. And, it can make things
  more complex. One idea would be to overload methods like getHeader()
  on AbstractColumnDefinition...add a version that doesn't take a 'row'
  parameter, and so just assumes there's only 1 row.
 
   * More use of generics, less casting (for me). Some examples:
     o AbstractColumnDefinition returns Object for the getHeader()
  method. Why not declare this as class
  AbstractColumnDefinitionRowType, ColType, HeaderType?
     o Rather than: public TableDefinitionRowType getTableDefinition
  (), how about adding a TABLE_DEFINITION type to the class (e.g.,
  class PagingScrollTableTABLE_DEFINITION extends
  TableDefinitionRowType, so that the method could be declared as
  public TABLE_DEFINITION getTableDefinition()?
 
 
  I apologize if I'm being overly simplistic or if I'm asking too much.
  I definitely apologize for not following up my 

[gwt-contrib] Re: Speed up compilation by rewriting for loops to avoid iterators

2009-06-05 Thread Isaac Truett

 Of course, if we ran the GWT compiler as a service on the developer's
 desktop (or kept it hot from the Eclipse plugin), then we could run it with
 -server and win it back over many compiles... hmmm. :)

Would keeping that VM alive open up the possibility of a semi-incremental build?


On Fri, Jun 5, 2009 at 1:52 PM, Scott Blum sco...@google.com wrote:
 On Fri, Jun 5, 2009 at 1:47 PM, Lex Spoon sp...@google.com wrote:

 Reading further in the thread, though, maybe we should simply use -server!

 Funny enough, I used to use -server in all my launch configs, but at some
 point I found it seemed actually a lot slower most of the time, due to all
 the overhead.  I think you need a really big compile to make it worth it
 (30-perm Showcase might be worth it, the other samples probably not).
 Of course, if we ran the GWT compiler as a service on the developer's
 desktop (or kept it hot from the Eclipse plugin), then we could run it with
 -server and win it back over many compiles... hmmm. :)

 


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



[gwt-contrib] Re: ant de-duplication

2009-06-03 Thread Isaac Truett

Could you build the jar incrementally using uptodate to update with
newer/missing files from each source directory?


On Wed, Jun 3, 2009 at 2:13 PM, Freeland Abbott fabb...@google.com wrote:
 Well, I did try to use filesonly first. ;-)

 Taking the worst-case example of the com/ directory entry from a
 hypothetical amalgam of user/build.xml and dev/common.xml's jars, we might
 have up five instances of the com/ directory being added to a jar (that
 is, sources from src and super, built classes from core and platform, and
 entries from tools jars---maybe lots of those, but they're all old and all
 the same type, so I'll lump them together).  With
 duplicate=add|preserve|fail, we can make either the first or last one win,
 but we want the newest one to win.

 We could, instead of this tack, write our own task, perhaps extending ant's
 JarTask, and do the most recent filtering there.  That seemed heavier than
 we needed, and the zipfilesets an irritating twist to handle, but it
 certainly lets us set the control directly the way we want it, i.e. by date
 instead of lexical order.



 On Wed, Jun 3, 2009 at 1:41 PM, Scott Blum sco...@google.com wrote:

 It begins to feel as though we're on the wrong track. :(  All we're really
 trying to solve is jarring things up in a particular order.  But in the
 process, we're defining tags like sourcefiles and artifacts that seem
 imbued with meaning.  All all this (really) just to solve the issue of
 adding directory entries.  I'm ok with proceeding down this path if there
 really isn't any more straightfoward way to solve this, but I think we're at
 a point where it's worth taking a second look high-level.

 On Wed, Jun 3, 2009 at 1:31 PM, fabb...@google.com wrote:

 http://gwt-code-reviews.appspot.com/33837/diff/10/1008
 File common.ant.xml (right):

 http://gwt-code-reviews.appspot.com/33837/diff/10/1008#newcode149
 Line 149: element name=manifestcontents optional=true/
 On 2009/06/03 05:06:18, scottb wrote:

 Does it not work to just call this manifest?

 Nope, or at least not that I could find.  (That was my first attempt,
 actually.)  If the macrodef has an element named manifest, then in the
 macro manifest means  the contents of that user-supplied element (but
 not the user-supplied element itself, sadly).  And if I use an implicit
 element (e.g. jarelements, such that manifest is implicitly a child
 of that), I'm only allowed one element total and can't separate
 sourcefiles and artifacts, which is the whole point.

 What we could do, though, is to use e.g. jarelements as the macrodef
 element, and have callers put the jar manifest sub-element in that.
 So callers would do:

  gwt.jar
     artifacts.../artifacts
     sourcefiles.../sourcefiles
     jarelements
        manifest.../manifest
     /jarelements
   /gwt.jar

 which would allow, not just manifest, but also metainf, indexjars,
 service... and fileset, which makes me nervous, but would at least
 have well-defined ordering behind artifacts/ and sourcefiles/.
 Would that be better?

 http://gwt-code-reviews.appspot.com/33837/diff/10/1011
 File dev/core/build.xml (right):

 http://gwt-code-reviews.appspot.com/33837/diff/10/1011#newcode27
 Line 27: sourcefiles
 On 2009/06/03 05:06:18, scottb wrote:

 artifacts seems to make more sense here

 Somewhat arbitrary choice, yes, but we want that artifacts must be
 definitively newer than sourcefiles.  Since the jars here will have
 dates as set by svn, and the contents as baked-in to the download files
 (as opposed to dates set by ant compilation), I called them sourcefiles.

 But we don't have anything that we build ourselves here, so it doesn't
 in the end matter.

 http://gwt-code-reviews.appspot.com/33837/diff/10/1016
 File user/build.xml (right):

 http://gwt-code-reviews.appspot.com/33837/diff/10/1016#newcode82
 Line 82: zipfileset src=${gwt.tools.lib}/tomcat/servlet-api-2.5.jar
 /
 On 2009/06/03 05:06:18, scottb wrote:

 Seems like this line and the next two should artifacts... does it

 make a

 difference, or is my intuition wildly wrong?

 Your intuition is mildly wrong.  The point of artifact is to hint
 about what's going to have the newest touch dates, i.e. what's generated
 by ant rather than touched from svn.

 Given that these contain org/... classes, the practical impact is small,
 but if they were com/... classes, the jars presumably would have
 older-than-now dates on the com/ entry (indeed, it's May 2008 for
 flute's org/ entry), so making them artifacts could cause spurious
 rebuild activity to freshen the directory entries.

 http://gwt-code-reviews.appspot.com/33837



 


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



[gwt-contrib] Re: ant de-duplication

2009-06-03 Thread Isaac Truett

You can do excludes with foreach:

foreach
  path
fileset dir=foo
  exclude name=**/*.properties /
/fileset
   path
/foreach



On Wed, Jun 3, 2009 at 2:31 PM, Freeland Abbott fabb...@google.com wrote:
 Potentially, yes... that would make building the jar a longer operation
 (several updates, not one pass), but would ensure that the newest thing was
 in place at the end of the first cycle, which is what we want.

 But I think ant-contrib's foreach, operates on paths, which I think
 precludes exclusion (e.g. of **/*.properties, which we do from src because
 they've been filtered into bin).  So we'd probably still end up writing some
 custom Ant task code...



 On Wed, Jun 3, 2009 at 2:21 PM, Isaac Truett itru...@gmail.com wrote:

 Could you build the jar incrementally using uptodate to update with
 newer/missing files from each source directory?


 On Wed, Jun 3, 2009 at 2:13 PM, Freeland Abbott fabb...@google.com
 wrote:
  Well, I did try to use filesonly first. ;-)
 
  Taking the worst-case example of the com/ directory entry from a
  hypothetical amalgam of user/build.xml and dev/common.xml's jars, we
  might
  have up five instances of the com/ directory being added to a jar
  (that
  is, sources from src and super, built classes from core and platform,
  and
  entries from tools jars---maybe lots of those, but they're all old and
  all
  the same type, so I'll lump them together).  With
  duplicate=add|preserve|fail, we can make either the first or last one
  win,
  but we want the newest one to win.
 
  We could, instead of this tack, write our own task, perhaps extending
  ant's
  JarTask, and do the most recent filtering there.  That seemed heavier
  than
  we needed, and the zipfilesets an irritating twist to handle, but it
  certainly lets us set the control directly the way we want it, i.e. by
  date
  instead of lexical order.
 
 
 
  On Wed, Jun 3, 2009 at 1:41 PM, Scott Blum sco...@google.com wrote:
 
  It begins to feel as though we're on the wrong track. :(  All we're
  really
  trying to solve is jarring things up in a particular order.  But in the
  process, we're defining tags like sourcefiles and artifacts that
  seem
  imbued with meaning.  All all this (really) just to solve the issue of
  adding directory entries.  I'm ok with proceeding down this path if
  there
  really isn't any more straightfoward way to solve this, but I think
  we're at
  a point where it's worth taking a second look high-level.
 
  On Wed, Jun 3, 2009 at 1:31 PM, fabb...@google.com wrote:
 
  http://gwt-code-reviews.appspot.com/33837/diff/10/1008
  File common.ant.xml (right):
 
  http://gwt-code-reviews.appspot.com/33837/diff/10/1008#newcode149
  Line 149: element name=manifestcontents optional=true/
  On 2009/06/03 05:06:18, scottb wrote:
 
  Does it not work to just call this manifest?
 
  Nope, or at least not that I could find.  (That was my first attempt,
  actually.)  If the macrodef has an element named manifest, then in
  the
  macro manifest means  the contents of that user-supplied element
  (but
  not the user-supplied element itself, sadly).  And if I use an
  implicit
  element (e.g. jarelements, such that manifest is implicitly a
  child
  of that), I'm only allowed one element total and can't separate
  sourcefiles and artifacts, which is the whole point.
 
  What we could do, though, is to use e.g. jarelements as the macrodef
  element, and have callers put the jar manifest sub-element in that.
  So callers would do:
 
   gwt.jar
      artifacts.../artifacts
      sourcefiles.../sourcefiles
      jarelements
         manifest.../manifest
      /jarelements
    /gwt.jar
 
  which would allow, not just manifest, but also metainf,
  indexjars,
  service... and fileset, which makes me nervous, but would at least
  have well-defined ordering behind artifacts/ and sourcefiles/.
  Would that be better?
 
  http://gwt-code-reviews.appspot.com/33837/diff/10/1011
  File dev/core/build.xml (right):
 
  http://gwt-code-reviews.appspot.com/33837/diff/10/1011#newcode27
  Line 27: sourcefiles
  On 2009/06/03 05:06:18, scottb wrote:
 
  artifacts seems to make more sense here
 
  Somewhat arbitrary choice, yes, but we want that artifacts must be
  definitively newer than sourcefiles.  Since the jars here will have
  dates as set by svn, and the contents as baked-in to the download
  files
  (as opposed to dates set by ant compilation), I called them
  sourcefiles.
 
  But we don't have anything that we build ourselves here, so it doesn't
  in the end matter.
 
  http://gwt-code-reviews.appspot.com/33837/diff/10/1016
  File user/build.xml (right):
 
  http://gwt-code-reviews.appspot.com/33837/diff/10/1016#newcode82
  Line 82: zipfileset src=${gwt.tools.lib}/tomcat/servlet-api-2.5.jar
  /
  On 2009/06/03 05:06:18, scottb wrote:
 
  Seems like this line and the next two should artifacts... does it
 
  make a
 
  difference, or is my intuition wildly wrong?
 
  Your intuition is mildly wrong

[gwt-contrib] Re: possible ant changes

2009-05-27 Thread Isaac Truett

+1 for Fred's use case.

And bonus points if I can specify an SVN revision at the command line
and have it check out that revision and build it in one step.

... on second thought, that might be more appropriate for a tool
separate from the build script, but I'll throw it out there anyway.

- Isaac

On Wed, May 27, 2009 at 2:51 PM, Fred Sauer fre...@google.com wrote:
 I have not. I've gone treasure hunting a couple of times, but did not find a
 good build target. I'll give buildonly a try.
 (On my system (Vista :) creating the zips for the ditros actually takes
 some time. Building the jars for the two platforms I don't need (at that
 moment at least) also takes time that would be nice to avoid. Anyway, I'll
 try buildonly.
 Thanks
 Fred



 On Wed, May 27, 2009 at 11:46 AM, Freeland Abbott fabb...@google.com
 wrote:

 I think that's about what I'm hoping to make ant build become.

 In terms of what's there today, Fred, have you tried the existing
 top-level buildonly target?  My complaint with that one is that it doesn't
 get the .so/.dll files into a usable place, but if you manually drop them
 into build/lib, I think it's the closest we have today.



 On Wed, May 27, 2009 at 2:34 PM, Fred Sauer f...@allen-sauer.com wrote:

 My pain point:
 I often want a trunk build of GWT to quickly test a patch. In this case I
 only need the GWT build for the current platform whatever that is. I don't
 need samples/demos nor do I need/want tests. I don't need a zipped up
 distro, just the jars. Even javadocs would be optional. Of course I want all
 of that and be able to do incremental builds.
 I imagine something like this:
 1. ant clean platform-jars
 2. (make a small code change to GWT compiler and/or GWT widgets)
 3. ant platform-jars (fast, incremental build)
 Fred
 On Wed, May 27, 2009 at 10:38 AM, Freeland Abbott fabb...@google.com
 wrote:

 So, I'm looking at our ant files, and trying to unwind several
 problems... but I figure I'll ask what other people have as pet peeves, to
 see if there are other games I should play, too.

 Here's what's on my mind right now:

 If you run ant clean build; ant build, the second build should be zero
 work.  It's not, and in particular it painfully builds samples twice.  It
 shouldn't.
 Right now, tests require a staging directory, which implies requiring a
 full distro kit including samples.  That's unnecessary; tests should 
 require
 build, but not much more.

 Related to that, too much depends on the semi-recursive -do, which is
 actually a no-op that depends on dist, which pulls too much in for simple
 cases.

 Largely orthogonal, we have checked in files with $ in their names,
 which are supposed to also be usable wtih _ instead.  I've got a system
 which is badly allergic to the $'s, which is why this causes me pain, but
 generally it seems this should be addressed with alternate classpath 
 roots
 anyway, so we can test both the two cases easily.

 Does anyone have other pain points to add?


 What I was thinking of doing is:

 Shoot the top-level -do target, in favor of having subtargets directly
 invoke what they need from subprojects, via antcall, and setting target
 as is done today... so e.g. target test can depend target build or
 buildonly and then antcall the test targets of dev, user, etc.
 explicitly.  Since -do would no longer exist, it wouldn't depend on dist
 to get the fan-out effects, and fan-out can be more selectively controlled.
 Untangle whatever our double-build is caused by; at first blush, it
 seems to think my directories are out of date relative to the existing jar
 (not the files in them, but the directories themselves).
 Change the default target to dist, for back compatibility, since
 that's what build today really does (build depends on -do which depends on
 dist which depends on build in all the subprojects).
 Twiddle the semantics of build to be just building.  I haven't decided
 whether that would include building samples (probably; buildonly exists to
 skip that), but it wouldn't assemble the distro archive and then unpack it
 as dist does.
 Introduce user/test_dollar and user/test_underbar as java-root
 directories with the obvious subset of files from today's user/test, and an
 adjustment to the test target one or the other is on classpath, controlled 
 I
 think by a system property.

 Thoughts on that?




 --
 Fred Sauer
 Developer Advocate
 Google Inc.
 1600 Amphitheatre Parkway
 Mountain View, CA 94043
 fre...@google.com








 --
 Fred Sauer
 Developer Advocate
 Google Inc.
 1600 Amphitheatre Parkway
 Mountain View, CA 94043
 fre...@google.com

 


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



[gwt-contrib] Re: possible ant changes

2009-05-27 Thread Isaac Truett

I have done something similar in the past. I wrote an Ant target to
update from CVS, build, and deploy an app. It *usually* worked all in
one space, which was good enough at the time. If you want to check out
revision x and then have revision x of build.xml run the actual build,
you could exec the new version.


On Wed, May 27, 2009 at 3:10 PM, Freeland Abbott fabb...@google.com wrote:
 Separate tool.  If the ant files that you start with are different than the
 ones at the revision you're asking for, do you really want the ant launched
 in the first revision-space to be driving?



 On Wed, May 27, 2009 at 2:59 PM, Isaac Truett itru...@gmail.com wrote:

 +1 for Fred's use case.

 And bonus points if I can specify an SVN revision at the command line
 and have it check out that revision and build it in one step.

 ... on second thought, that might be more appropriate for a tool
 separate from the build script, but I'll throw it out there anyway.

 - Isaac

 On Wed, May 27, 2009 at 2:51 PM, Fred Sauer fre...@google.com wrote:
  I have not. I've gone treasure hunting a couple of times, but did not
  find a
  good build target. I'll give buildonly a try.
  (On my system (Vista :) creating the zips for the ditros actually takes
  some time. Building the jars for the two platforms I don't need (at that
  moment at least) also takes time that would be nice to avoid. Anyway,
  I'll
  try buildonly.
  Thanks
  Fred
 
 
 
  On Wed, May 27, 2009 at 11:46 AM, Freeland Abbott fabb...@google.com
  wrote:
 
  I think that's about what I'm hoping to make ant build become.
 
  In terms of what's there today, Fred, have you tried the existing
  top-level buildonly target?  My complaint with that one is that it
  doesn't
  get the .so/.dll files into a usable place, but if you manually drop
  them
  into build/lib, I think it's the closest we have today.
 
 
 
  On Wed, May 27, 2009 at 2:34 PM, Fred Sauer f...@allen-sauer.com
  wrote:
 
  My pain point:
  I often want a trunk build of GWT to quickly test a patch. In this
  case I
  only need the GWT build for the current platform whatever that is. I
  don't
  need samples/demos nor do I need/want tests. I don't need a zipped up
  distro, just the jars. Even javadocs would be optional. Of course I
  want all
  of that and be able to do incremental builds.
  I imagine something like this:
  1. ant clean platform-jars
  2. (make a small code change to GWT compiler and/or GWT widgets)
  3. ant platform-jars (fast, incremental build)
  Fred
  On Wed, May 27, 2009 at 10:38 AM, Freeland Abbott fabb...@google.com
  wrote:
 
  So, I'm looking at our ant files, and trying to unwind several
  problems... but I figure I'll ask what other people have as pet
  peeves, to
  see if there are other games I should play, too.
 
  Here's what's on my mind right now:
 
  If you run ant clean build; ant build, the second build should be
  zero
  work.  It's not, and in particular it painfully builds samples
  twice.  It
  shouldn't.
  Right now, tests require a staging directory, which implies requiring
  a
  full distro kit including samples.  That's unnecessary; tests should
  require
  build, but not much more.
 
  Related to that, too much depends on the semi-recursive -do, which is
  actually a no-op that depends on dist, which pulls too much in for
  simple
  cases.
 
  Largely orthogonal, we have checked in files with $ in their names,
  which are supposed to also be usable wtih _ instead.  I've got a
  system
  which is badly allergic to the $'s, which is why this causes me pain,
  but
  generally it seems this should be addressed with alternate
  classpath roots
  anyway, so we can test both the two cases easily.
 
  Does anyone have other pain points to add?
 
 
  What I was thinking of doing is:
 
  Shoot the top-level -do target, in favor of having subtargets
  directly
  invoke what they need from subprojects, via antcall, and setting
  target
  as is done today... so e.g. target test can depend target build
  or
  buildonly and then antcall the test targets of dev, user, etc.
  explicitly.  Since -do would no longer exist, it wouldn't depend on
  dist
  to get the fan-out effects, and fan-out can be more selectively
  controlled.
  Untangle whatever our double-build is caused by; at first blush, it
  seems to think my directories are out of date relative to the
  existing jar
  (not the files in them, but the directories themselves).
  Change the default target to dist, for back compatibility, since
  that's what build today really does (build depends on -do which
  depends on
  dist which depends on build in all the subprojects).
  Twiddle the semantics of build to be just building.  I haven't
  decided
  whether that would include building samples (probably; buildonly
  exists to
  skip that), but it wouldn't assemble the distro archive and then
  unpack it
  as dist does.
  Introduce user/test_dollar and user/test_underbar as java-root
  directories with the obvious subset

[gwt-contrib] Re: gen2 PagingScrollTable column widths

2009-05-11 Thread Isaac Truett

Jay,

Am I right in understanding that you're expecting the table, when
unconstrained, to grow until each column can occupy its preferred
width? It should be possible to achieve that, although just setting
preferred size may not be enough. There used to be a setColumnWidth()
method that would set a column's size, but still allow it to be
resized later. I don't know what the gen2 PST equivalent would be, but
I can dig around a bit later if I get some time.




On Mon, May 11, 2009 at 1:14 PM, jay jay.gin...@gmail.com wrote:

 But if I set the min and max sizes, then the user cannot resize the
 columns. And...well, my users need to be able to resize the columns...

 So, I guess I should enter a feature request (or else provide a
 patch ;-) that there some way for the table to set the initial column
 width to the preferred width.

 jay

 On May 7, 6:08 pm, John LaBanca jlaba...@google.com wrote:
 If you want the columns to be an exact size, set the minimum and maximum
 column widths and call resetColumnWidths() or set the resize policy to
 FIXED.
 The preferred width is exactly that, the width that the columns should
 attempt to maintain if they can.  When the resize policy is set to
 FILL_WIDTH, the table will update the column widths on every page load.
  When it is set to anything else, you must update the width manually
 (although that is probably a bug).  Either way, the preferred width is not
 guaranteed, but the minimum and maximum widths are.

 Thanks,
 John LaBanca
 jlaba...@google.com



 On Thu, May 7, 2009 at 7:11 PM, jay jay.gin...@gmail.com wrote:

  I've set my table resize policy to UNCONSTRAINED. I then very
  carefully setup my ColumnDefinitions to have the right preferred size
  (because the user may have previously resized the columns, and I need
  to honor that size).

  What I've noticed, though, is that out-of-the-box, my columns are
  *always* 80px wide (which seems to correspond to
  FixedWidthGrid.DEFAULT_COLUMN_WIDTH.

  It seems to me (and please...correct me if I'm misusing/abusing the
  PagingScrollTable) that when I set the table definition, it should be
  setting the column widths to their preferred size, rather than
  allowing the default size to kick in.

  FWIW, my work-around is to override setTableDefinition() as follows:

  �...@override
   public void setTableDefinition(
     TableDefinitionRowType tableDefinition
   ) {
     super.setTableDefinition( tableDefinition );
     refreshVisibleColumnDefinitions();

     ListColumnDefinitionRowType, ? columns =
  getVisibleColumnDefinitions();
     for ( int index = 0, numCols = columns.size(); index  numCols;
  index++ ) {
       setColumnWidth( index, columns.get
  ( index ).getPreferredColumnWidth() );
     }
   }

  Would problems be caused if this behavior was in the base class? (My
  goal is to have the PagingScrollTable just work. I'll be the first
  to admit that what I consider just working may not work for
  others...)

  thanks,

  jay
 


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



[gwt-contrib] Re: gen2 PagingScrollTable column widths

2009-05-11 Thread Isaac Truett

Yep, that is what you're doing. Sorry for my failure at reading
comprehension. :)

I can certainly see why you would have that expectation for an
unconstrained table. And if I'm reading John's probably a bug
comment correctly, then it sounds like that might be a good thing to
enter in the issue tracker.

And your comments are certainly welcome. Feedback is always needed,
especially in the incubator.


On Mon, May 11, 2009 at 4:11 PM, jay jay.gin...@gmail.com wrote:

 Yes! When the table width is unconstrained, I want it to honor the
 preferred width of every column.

 If you glance back at my original post, you'll see that I'm doing
 exactly what you suggest :-) It's just that this was surprising to me,
 and required more work than I think ought to be needed.

 (I understand that this widget is still in the incubator... I hope
 that my comments are coming across as helpful, because I really am
 trying to be helpful, and not critical. I chalk all of this up to
 hey...let's throw something out there, and see what else needs to be
 done.)

 thanks!

 jay

 On May 11, 11:31 am, Isaac Truett itru...@gmail.com wrote:
 Jay,

 Am I right in understanding that you're expecting the table, when
 unconstrained, to grow until each column can occupy its preferred
 width? It should be possible to achieve that, although just setting
 preferred size may not be enough. There used to be a setColumnWidth()
 method that would set a column's size, but still allow it to be
 resized later. I don't know what the gen2 PST equivalent would be, but
 I can dig around a bit later if I get some time.



 On Mon, May 11, 2009 at 1:14 PM, jay jay.gin...@gmail.com wrote:

  But if I set the min and max sizes, then the user cannot resize the
  columns. And...well, my users need to be able to resize the columns...

  So, I guess I should enter a feature request (or else provide a
  patch ;-) that there some way for the table to set the initial column
  width to the preferred width.

  jay

  On May 7, 6:08 pm, John LaBanca jlaba...@google.com wrote:
  If you want the columns to be an exact size, set the minimum and maximum
  column widths and call resetColumnWidths() or set the resize policy to
  FIXED.
  The preferred width is exactly that, the width that the columns should
  attempt to maintain if they can.  When the resize policy is set to
  FILL_WIDTH, the table will update the column widths on every page load.
   When it is set to anything else, you must update the width manually
  (although that is probably a bug).  Either way, the preferred width is not
  guaranteed, but the minimum and maximum widths are.

  Thanks,
  John LaBanca
  jlaba...@google.com

  On Thu, May 7, 2009 at 7:11 PM, jay jay.gin...@gmail.com wrote:

   I've set my table resize policy to UNCONSTRAINED. I then very
   carefully setup my ColumnDefinitions to have the right preferred size
   (because the user may have previously resized the columns, and I need
   to honor that size).

   What I've noticed, though, is that out-of-the-box, my columns are
   *always* 80px wide (which seems to correspond to
   FixedWidthGrid.DEFAULT_COLUMN_WIDTH.

   It seems to me (and please...correct me if I'm misusing/abusing the
   PagingScrollTable) that when I set the table definition, it should be
   setting the column widths to their preferred size, rather than
   allowing the default size to kick in.

   FWIW, my work-around is to override setTableDefinition() as follows:

   �...@override
    public void setTableDefinition(
      TableDefinitionRowType tableDefinition
    ) {
      super.setTableDefinition( tableDefinition );
      refreshVisibleColumnDefinitions();

      ListColumnDefinitionRowType, ? columns =
   getVisibleColumnDefinitions();
      for ( int index = 0, numCols = columns.size(); index  numCols;
   index++ ) {
        setColumnWidth( index, columns.get
   ( index ).getPreferredColumnWidth() );
      }
    }

   Would problems be caused if this behavior was in the base class? (My
   goal is to have the PagingScrollTable just work. I'll be the first
   to admit that what I consider just working may not work for
   others...)

   thanks,

   jay
 


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



[gwt-contrib] Re: gen2 PagingScrollTable scroll indicator

2009-05-07 Thread Isaac Truett

Hi Jay,

That does sound like a bug. Opening an issue in the tracker is a good
idea. Issues with patches attached are even better.

- Isaac

On Thu, May 7, 2009 at 3:02 PM, jay jay.gin...@gmail.com wrote:

 I'm starting to use the gen2 incubator table widgets. I hope I can
 provide some valuable feedback in the days and weeks to come...

 The first issue I've run into that I cannot seem to work around: When
 I load my data into the PagingScrollTable, it is already sorted (in
 fact, all of our data uses server-side sorting). I worked out that in
 order to get the sorting indicator displayed, I should call:

 ColumnSortList sortList = ...;
 getDataTable().setColumnSortList( sortList, true );

 I can see that this fires the event which PagingScrollTable listens
 for. However, when PagingScrollTable gets the event, it checks to see
 if the sortedColumnTrigger member is null. In this case, it is,
 because the only way for that (private) member to be set is in
 reaction to a ONMOUSEUP event.

 What's the best way to resolve this? Should I file a bug? Submit a
 patch? Something else?

 thanks,

 jay
 


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



[gwt-contrib] Re: GWT-Incubator: GlassPanel changes

2009-05-05 Thread Isaac Truett

I'm with Joel on keeping the native ListBox. There's no reason that it
can't co-exist with other implementations, such as the incubator's
DropDownListBox.



On Tue, May 5, 2009 at 9:13 AM, Joel Webber j...@google.com wrote:
 I'll admit to not having used the incubator GlassPanel in a while, but its
 setFocus() behavior does sound like something that should be optional, for
 precisely the reasons you describe. I do want to point out that it would be
 pretty unreasonable to actually deprecate the native ListBox/select
 element. It's a normal part of HTML forms, and our goal is most definitely
 not to make everything work as long as you only use the controls and
 elements we bless.
 On Tue, May 5, 2009 at 8:24 AM, David david.no...@gmail.com wrote:

 Hi,

 I just created a trimmed down GlassPanel that only contains what we need.
 Just as a thought on bug 1186, why not deprecate the ListBox widget
 and replace it with a custom widget.
 The standard listbox in the browser is underpowered when it comes to
 styling. I would like to put more than just strings in there.

 If that were the case then all these tricks to get dialogs to render
 correctly while dragging or to cancel events are no longer needed in
 IE6.

 David

 On Tue, May 5, 2009 at 12:49 PM, Thomas Broyer t.bro...@gmail.com wrote:
 
 
 
  On 5 mai, 10:15, stuckagain david.no...@gmail.com wrote:
  Hi,
 
  We are currently moving to the GWT 1.6 release and also updated to the
  latest incubator.
 
  I am having a problem with the GlassPanel widget in the incubator and
  looked a bit into the implementation.
 
  It has a functionality that it automatically grabs the focus. This
  functionality is not what we wanted so in a previous version if had
  just overriden the setFocus method to override this behaviour.
 
  We are using the GlassPanel to only block part of our UI when input
  fields are changed by the user. The side effect is that now when the
  user changes the input field, after one character, the GlassPanel is
  shown and the user has to click on the input field again to continue
  entering data.
 
  Could this automatically grabbing the focus be made optional ? Right
  now I can only see a solution by copying the code and deleting this
  unwanted functionality since the rework of the component no longer
  allows me to change the behaviour. the GlassPanel should be usable in
  more situations than just to block the complete window.
 
  I agree, and even in those situations, when used in combination with a
  modal popup panel, grabbing the focus isn't strictly necessary either
  (note that PopupPanel does not grab the focus, instead it eats up
  every event not targeted at the modal popup panel).
  I do believe actually that the lightbox effect should be done by the
  popup panel (when modal), as it would also solve issue 1186 [1]
  (defaulting to being fully transparent)
 
  [1] http://code.google.com/p/google-web-toolkit/issues/detail?id=1186
 
  I also see in the code that in onAttach a FocusPanelImpl is attached
  to the root panel... does this mean that every time I remove the
  GlassPanel from the page and reattach that it will add another
  FocusPanelImpl ? That looks like a leak to me (the onDetach does not
  remove it unless I overlooked it ?)
 
  As said on the JavaDoc for this FocusPanelImpl class, it removes
  itself (it does this as soon as it gains the focus, which it grabs as
  soon as it's attached to the document).
 
  Another comment is the usage of a WindowResizeListener. Isn't this
  duplicate code from the ResizableWidgetCollection ?
 
  GlassPanel has unfortunately not been updated for a while (including
  for GWT 1.6: uses WindowResizeListener instead of ResizeHandler,
  EventPreview instead of NativePreviewHandler, etc.).
  Maybe it's time to rewrite it, and/or split it into more a set of
  widgets, each one specialized on one thing (lightbox+dialog, cover
  part of the page, etc.)
  
 




 


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



[gwt-contrib] Re: Incubator Questions

2009-04-30 Thread Isaac Truett

Hi Jay,

Responses inline.

On Tue, Apr 28, 2009 at 12:48 PM, jay jay.gin...@gmail.com wrote:

 I'm curious as to how it is decided a new drop of incubator should be
 made available? Is it based on a new GWT drop? Or maybe, there is no
 real release cycle?


Basically in parallel with the GWT releases. The Incubator trunk tries
to be compatible with GWT trunk and the latest GWT release.

 How about testing? Is there any official testing on the incubator
 widgets? Is it just the unit tests, plus whatever bug reports that may
 come in?


There are unit tests, the demos, and anyone using Incubator trunk in
development. I couldn't tell you how many developers are in that
group, but it's at least one.

 Being an incubator, I'd expect breaking changes to roll through
 periodically. Is there usually a hey...we're going to break this
 tomorrow email that comes through the list before these things
 happen?


Major changes usually have a design document on the wiki and
discussion thread on this group.

 Finally, I've not seen any good description of how it is decided when
 an incubator widget graduates. I guess, more particularly, what is
 holding back the current set of table widgets from graduating into the
 trunk?


There aren't specific criteria that I've seen, either. I suspect (and
this is purely speculation on my part - clarifications or
contradictions welcome!) that promotion is largely driven by the needs
of internal Google projects. If that's true, then those widgets are
probably some of the most thoroughly tested, critiqued, and generally
banged-upon in the Incubator. So that's a good thing.

Re: table - the gen2 PagingScrollTable went through a fairly major
redesign recently. I haven't seen any discussion of pending
graduation. I imagine it needs time to settle after the shake up.

 Thanks,

 jay
 


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



[gwt-contrib] Re: Google Plugin for Eclipse

2009-04-17 Thread Isaac Truett

http://code.google.com/eclipse/docs/faq.html#source

It is not (yet). Although I've wondered why there isn't an empty shell
of a project on Google Code, just for the Issue Tracker if nothing
else.


On Fri, Apr 17, 2009 at 8:20 AM, Arthur Kalmenson arthur.k...@gmail.com wrote:

 Is the Google Eclipse Plugin not a Google Code OSS project?

 --
 Arthur Kalmenson



 On Thu, Apr 16, 2009 at 11:18 PM, Alex Rudnick a...@google.com wrote:

 Gary,

 Here is fine (alternatively, on the Google-Web-Toolkit group). What
 issues and questions have you got?

 On Thu, Apr 16, 2009 at 8:20 PM, Gary Miller miller.ga...@gmail.com wrote:

 Where is the correct place to post issues and questions for Google
 Plugin for Eclipse?



 --
 Alex Rudnick
 swe, gwt, atl

 


 


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



[gwt-contrib] Re: Comments on builder pattern?

2009-04-16 Thread Isaac Truett

Personally I don't care for this style of coding. I think it's very
convenient for writing, but it hurts readability.


On Thu, Apr 16, 2009 at 2:03 PM, Eric Ayers zun...@google.com wrote:
 Recently I've been wrapping some of my JavaScriptObjects using the builder
 pattern where an instance of the object you are setting is in the return
 value.

   http://galgwt-reviews.appspot.com/21604/diff/1/18?context=10

 Which you would invoke as:


   DraggableObject obj = new DraggableObject(elem,
 DraggableObjectOptions.newInstance().setLeft(10).setTop(5));

 Can anyone think of a reason I might be shooting myself in the foot
 performance wise or code size wise as opposed to making these strict setter
 methods?  I don't want to set a bad example.

 -Eric.
 --
 Eric Z. Ayers - GWT Team - Atlanta, GA USA
 http://code.google.com/webtoolkit/

 


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



[gwt-contrib] Re: Clearing up the Issue Tracker

2009-04-14 Thread Isaac Truett

http://code.google.com/p/google-web-toolkit/issues/list?can=2q=-Milestone:1_6_RCcolspec=ID+Type+Status+Priority+Milestone+Owner+Summarycells=tiles

That should help.



On Tue, Apr 14, 2009 at 3:08 PM, Luminari luminari...@gmail.com wrote:

 I just wanted to make a request to clear up the Issue Tracker.  It's
 still littered with 1.6RC issues, which makes it harder to see what's
 open.

 Thanks.
 


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



[gwt-contrib] Re: Announcing GWT 1.6...and quite a bit more

2009-04-08 Thread Isaac Truett

My hearty congratulations, and thanks, to all involved in this effort.
You made my day before breakfast.



On Tue, Apr 7, 2009 at 11:54 PM, Bruce Johnson br...@google.com wrote:
 Hi Folks!

 Exciting news today. Rather than attempting to describe everything here, let
 me point you to some blog posts that hopefully you will find interesting:

 GWT 1.6 and friends:
 http://googlewebtoolkit.blogspot.com/2009/04/introducing-gwt-16-and-friends.html

 Seriously this time, the new language on App Engine: Java
 http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html

 Google Plugin for Eclipse -- Peanut Butter to Eclipse's Chocolate
 http://googlewebtoolkit.blogspot.com/2009/04/google-plugin-for-eclipse-peanut-butter.html

 -- Bruce, on behalf of the GWT, App Engine, and Google Plugin teams


 


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



[gwt-contrib] Re: RFC : Adding deprecations to gwt.xml files

2009-04-07 Thread Isaac Truett

I'd vote for a consistent message supplied by the compiler/hosted mode
and freeform text provided by the module developer. I think that works
fine for JavaDoc @deprecated. URLs and the names of successor modules
can be included in the freeform text when appropriate. Unless you're
planning to plug those things into a template somewhere, why do you
need to separate them from the block of text?

Example deprecated module:

module
...
  deprecatedWARNING: Use of this module may result in permanent loss
of productivity. Whatever you were doing with it before was wrong, so
just stop already!/deprecated
/module

Example error message:

Module foo inherits deprecated module bar.

WARNING: Use of this module may result in permanent loss of
productivity. Whatever you were doing with it before was wrong, so
just stop already!


In this contrived example, there's no URL or replacement to suggest.
There isn't much information available except for the freeform text.



On Mon, Apr 6, 2009 at 4:53 PM, Bruce Johnson br...@google.com wrote:
 On Mon, Apr 6, 2009 at 4:51 PM, John Tamplin j...@google.com wrote:

 On Mon, Apr 6, 2009 at 4:47 PM, Bruce Johnson br...@google.com wrote:

 (BTW, I could be wrong about the whole let's not have freeform text. It
 was just one guy's opinion that it makes things too inconsistent. I'd like
 to hear if other people agree/disagree.)

 @Other people: agree/disagree?

 I think there may be some case where you want/need more explanation,
 especially if it is of the form If you were doing X, use module A -- if you
 were doing Y, use module B.  However, I think the URL will address most of
 that and it is easy enough to extend it later for free-form text if it
 becomes useful to do so -- it is harder to remove it if we add it now but it
 isn't useful.

 The one question I have is where will the URL point for an unreleased
 version?  Ie, say we deprecate something in trunk, where would we make the
 URL point for more information?

 The compiler does this already by including reference to HTML files that are
 included in the distro. It is important that this could work (i.e. file
 URLs).

 


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



[gwt-contrib] Re: RFC : Adding deprecations to gwt.xml files

2009-04-07 Thread Isaac Truett

Oh, and... as much as I hate to suggest it, we will probably need some
way to suppress the deprecation warning.

Maybe:

inherits name=example.module.Foo ignore-deprecation=true /

Where ignore-deprecation is optional and defaults to false. I'm
tempted to say that ignore-deprecation=true on a non-deprecated
module produces a warning, just to discourage premature ignoring.





On Tue, Apr 7, 2009 at 9:15 AM, Joel Webber j...@google.com wrote:
 I have to say I'm with Isaac on this one. I think it's best to keep things
 as simple as possible, and to keep the documentation in one place wherever
 possible. There's nothing stopping anyone from putting URLs in the
 explanatory text if they want, but I wouldn't want to have to do that in the
 default case. I also prefer to *not* create an overly-structured way to
 express deprecation, when it's nigh-impossible to think of all the possible
 ways people may want to deprecate things. That said, I don't think it's
 unreasonable to accept a simple list of superceded-by modules.

 On Tue, Apr 7, 2009 at 8:37 AM, Isaac Truett itru...@gmail.com wrote:

 I'd vote for a consistent message supplied by the compiler/hosted mode
 and freeform text provided by the module developer. I think that works
 fine for JavaDoc @deprecated. URLs and the names of successor modules
 can be included in the freeform text when appropriate. Unless you're
 planning to plug those things into a template somewhere, why do you
 need to separate them from the block of text?

 Example deprecated module:

 module
 ...
  deprecatedWARNING: Use of this module may result in permanent loss
 of productivity. Whatever you were doing with it before was wrong, so
 just stop already!/deprecated
 /module

 Example error message:

 Module foo inherits deprecated module bar.

 WARNING: Use of this module may result in permanent loss of
 productivity. Whatever you were doing with it before was wrong, so
 just stop already!


 In this contrived example, there's no URL or replacement to suggest.
 There isn't much information available except for the freeform text.



 On Mon, Apr 6, 2009 at 4:53 PM, Bruce Johnson br...@google.com wrote:
  On Mon, Apr 6, 2009 at 4:51 PM, John Tamplin j...@google.com wrote:
 
  On Mon, Apr 6, 2009 at 4:47 PM, Bruce Johnson br...@google.com wrote:
 
  (BTW, I could be wrong about the whole let's not have freeform text.
  It
  was just one guy's opinion that it makes things too inconsistent. I'd
  like
  to hear if other people agree/disagree.)
 
  @Other people: agree/disagree?
 
  I think there may be some case where you want/need more explanation,
  especially if it is of the form If you were doing X, use module A --
  if you
  were doing Y, use module B.  However, I think the URL will address
  most of
  that and it is easy enough to extend it later for free-form text if it
  becomes useful to do so -- it is harder to remove it if we add it now
  but it
  isn't useful.
 
  The one question I have is where will the URL point for an unreleased
  version?  Ie, say we deprecate something in trunk, where would we make
  the
  URL point for more information?
 
  The compiler does this already by including reference to HTML files that
  are
  included in the distro. It is important that this could work (i.e. file
  URLs).
 
  
 




 


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



[gwt-contrib] Re: Compiling demos in incubator

2009-02-27 Thread Isaac Truett

Uwe,

If you change build.xml line 435 to use ${demo.src.dir} instead of
src-demo then you can specify any demo to build using command line
parameters:

-Ddemo.src.dir=src
-Ddemo.filter=**/GlassPanelDemo.gwt.xml

Note that many of the src/com/google/gwt/demos modules are obsolete
and at least one (CurrencyWidgetDemo) no longer compiles.

- Isaac


On Fri, Feb 27, 2009 at 8:35 AM, Uwe Maurer uwe.mau...@google.com wrote:

 Hi,

 I am trying to compile the demos which are included in incubator. I
 tried

 ant build.demos

 but this only builds the demos which are in src-demo/, not the ones in
 src/com/google/gwt/demos

 How can I compile them ?

 Thanks,
 Uwe
 


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



[gwt-contrib] Re: Associating Data Transfer Objects (DTOs) with Suggestion Objects

2009-02-26 Thread Isaac Truett

I opened issue #3409 for the Suggestion change and issue #3410 for the
HasValue change.

http://code.google.com/p/google-web-toolkit/issues/detail?id=3409
http://code.google.com/p/google-web-toolkit/issues/detail?id=3410


- Isaac

On Wed, Feb 25, 2009 at 9:07 AM, Arthur Kalmenson arthur.k...@gmail.com wrote:

 On a side note, I found when I was writing this patch that HasValue
 extends HasValueChangeHandlers in trunk. It occurs to me that this
 relationship could possibly be backwards. I don't think that something
 with a value necessarily should be required to broadcast changes. See
 the implementation of MultiWordSuggestion for an illustration of this.
 Requiring something that HasValueChangeHandlers to have a value (that
 value which changes) makes more sense to me on the face of it.

 This makes more sense to me too.

 p.s. Thank you, Gmail Labs, for reminding me that I forgot to attach the 
 patch.

 Handy, ain't it? :)

 --
 Arthur Kalmenson



 On Tue, Feb 24, 2009 at 6:42 PM, Isaac Truett itru...@gmail.com wrote:
 I basically agree with John and Ray. In general, I agree that using
 the most remote parent type possible (without introducing casts) is
 ideal. But when the subtype exists specifically as a convenience,
 using the parameterized super class instead and then complaining about
 it is... let's call it silly.

 To better illustrate my proposal, I have attached a quick-and-dirty
 patch against trunk r4850. In this patch Suggestion extends HasValue
 and TypedSuggestBox is a super class of SuggestBox, as I described
 above.

 On a side note, I found when I was writing this patch that HasValue
 extends HasValueChangeHandlers in trunk. It occurs to me that this
 relationship could possibly be backwards. I don't think that something
 with a value necessarily should be required to broadcast changes. See
 the implementation of MultiWordSuggestion for an illustration of this.
 Requiring something that HasValueChangeHandlers to have a value (that
 value which changes) makes more sense to me on the face of it.

 - Isaac

 p.s. Thank you, Gmail Labs, for reminding me that I forgot to attach the 
 patch.


 On Tue, Feb 24, 2009 at 1:03 PM, Emily Crutcher e...@google.com wrote:
 If that concern doesn't seem like it would be a problem, then I  definitely
 agree with you that creating abstract base classes that have the
 parametrized types seems like the best solution.


 On Tue, Feb 24, 2009 at 10:54 AM, Ray Ryan rj...@google.com wrote:

 That feedback sounds a bit pedantic and impractical to me. And my job
 title used to be Senior Pedant.

 On Tue, Feb 24, 2009 at 7:44 AM, Emily Crutcher e...@google.com wrote:

 It could work, though I found when I used this technique with
 DatePicker (DatePicker extends AbstractDatePickerMonthSelector,
 CalandarView), there was some feedback that having that abstract type 
 layer
 was slightly confusing because good OO practice implied that references
 should then be typed as AbstractDatePicker, which then brought in the
 complexity of the generic types back into the lives of the 90% who did not
 care about the parameterized arguments.







 On Tue, Feb 24, 2009 at 10:00 AM, Ray Ryan rj...@google.com wrote:

 How about extracting a parameterized super class:
 AbstractSuggestionBoxT extends Suggestion
 SuggestionBox extends AbstractSuggestionBoxSuggestion
 rjrjr

 On Mon, Feb 23, 2009 at 7:15 PM, Emily Crutcher e...@google.com wrote:


 On Mon, Feb 23, 2009 at 7:04 PM, Isaac Truett itru...@gmail.com
 wrote:

 The API documentation has this to say on the subject:

 [...] To send back a DTO with each suggestion, extend the Suggestion
 interface and define a getter method that has a return value of the
 DTO's type. Define a class that implements this subinterface and use
 it to encapsulate each suggestion.

 To access a suggestion's DTO when the suggestion is selected, add a
 SuggestionHandler to the SuggestBox (see SuggestBox's documentation
 for more information). In the
 SuggestionHandler.onSuggestionSelected(SuggestionEvent event) method,
 obtain the selected Suggestion object from the SuggestionEvent object,
 and downcast the Suggestion object to the subinterface. Then, acces
 the DTO using the DTO getter method that was defined on the
 subinterface.

 See
 http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/SuggestOracle.Suggestion.html

 (the 1.6 version is similar, but with the new event model)

 So the endorsed solution is to extend and cast. Fair enough. This
 probably dates from pre-1.5, and it was good enough for then. But is
 there a reason not to parameterize SuggestBox with T extends
 Suggestion (and SuggestOracleT, SelectionEventT, etc.) now that
 that's an option? Or perhaps make Suggestion implement HasValueT? I
 have an application that uses many SuggestBoxes and many different
 Suggestion subclasses and this would simplify things (and eliminate
 much type-casting).

 I'm not sure parameterizing  SuggestBox itself

[gwt-contrib] Re: Associating Data Transfer Objects (DTOs) with Suggestion Objects

2009-02-24 Thread Isaac Truett

I like the super class. I'm not sure it actually needs to be abstract.
I think that by adding HasValueT to Suggestion we can do it with
concrete classes.

TypedSuggestBoxT (SuggestBoxBase?)
SuggestionT implements HasValueT
SuggestOracleT
SuggestBox extends TypedSuggestBoxString
MultiWordSuggestOracle extends SuggestOracleString

That should cover my use case and, I think, minimize impact on anyone
using only the plain String suggestions.




On Tue, Feb 24, 2009 at 10:00 AM, Ray Ryan rj...@google.com wrote:
 How about extracting a parameterized super class:
 AbstractSuggestionBoxT extends Suggestion
 SuggestionBox extends AbstractSuggestionBoxSuggestion
 rjrjr

 On Mon, Feb 23, 2009 at 7:15 PM, Emily Crutcher e...@google.com wrote:


 On Mon, Feb 23, 2009 at 7:04 PM, Isaac Truett itru...@gmail.com wrote:

 The API documentation has this to say on the subject:

 [...] To send back a DTO with each suggestion, extend the Suggestion
 interface and define a getter method that has a return value of the
 DTO's type. Define a class that implements this subinterface and use
 it to encapsulate each suggestion.

 To access a suggestion's DTO when the suggestion is selected, add a
 SuggestionHandler to the SuggestBox (see SuggestBox's documentation
 for more information). In the
 SuggestionHandler.onSuggestionSelected(SuggestionEvent event) method,
 obtain the selected Suggestion object from the SuggestionEvent object,
 and downcast the Suggestion object to the subinterface. Then, acces
 the DTO using the DTO getter method that was defined on the
 subinterface.

 See
 http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/SuggestOracle.Suggestion.html

 (the 1.6 version is similar, but with the new event model)

 So the endorsed solution is to extend and cast. Fair enough. This
 probably dates from pre-1.5, and it was good enough for then. But is
 there a reason not to parameterize SuggestBox with T extends
 Suggestion (and SuggestOracleT, SelectionEventT, etc.) now that
 that's an option? Or perhaps make Suggestion implement HasValueT? I
 have an application that uses many SuggestBoxes and many different
 Suggestion subclasses and this would simplify things (and eliminate
 much type-casting).

 I'm not sure parameterizing  SuggestBox itself would be worth it, as most
 people use it without creating new types of suggestions: so the
 parameterization would add clutter for the many and prevent casts for the
 few.  Though, I completely agree it is annoying to have to cast. Perhaps we
 could create a composite-based CustomSuggestBox that is parameterized?




 Any thoughts on this? Horrible side effects that I'm missing?

 - Isaac





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Associating Data Transfer Objects (DTOs) with Suggestion Objects

2009-02-24 Thread Isaac Truett

 HasValueT extends Suggestion sounds wrong to me.

I agree. SuggestBox implements HasValueT extends Suggestion was not
actually what I was proposing, and I apologize if it appeared that
way. T would be the type of the DAO, the logical value represented by
the suggestion. My intent is that the Suggestion has a value of type T
and in the common case, T is String. I'm not sure if I would go so far
as to say that SuggestBox itself HasValueT, but would endorse
SuggestBoxT, where T is transitive between the relevant widget,
suggestion, oracle, and selection event classes, and preserves the
type-safety.



On Tue, Feb 24, 2009 at 10:56 AM, Ray Ryan rj...@google.com wrote:
 HasValueT extends Suggestion sounds wrong to me. The suggestions are not
 the value that we're getting from the user, they're prompts to the user to
 help her get to the actual value. I'd much more expect a SuggestionBox to be
 HasValueString -- it's just a TextBox that happens to have chats with the
 server.
 rjrjr

 On Tue, Feb 24, 2009 at 7:24 AM, Isaac Truett itru...@gmail.com wrote:

 I like the super class. I'm not sure it actually needs to be abstract.
 I think that by adding HasValueT to Suggestion we can do it with
 concrete classes.

 TypedSuggestBoxT (SuggestBoxBase?)
 SuggestionT implements HasValueT
 SuggestOracleT
 SuggestBox extends TypedSuggestBoxString
 MultiWordSuggestOracle extends SuggestOracleString

 That should cover my use case and, I think, minimize impact on anyone
 using only the plain String suggestions.




 On Tue, Feb 24, 2009 at 10:00 AM, Ray Ryan rj...@google.com wrote:
  How about extracting a parameterized super class:
  AbstractSuggestionBoxT extends Suggestion
  SuggestionBox extends AbstractSuggestionBoxSuggestion
  rjrjr
 
  On Mon, Feb 23, 2009 at 7:15 PM, Emily Crutcher e...@google.com wrote:
 
 
  On Mon, Feb 23, 2009 at 7:04 PM, Isaac Truett itru...@gmail.com
  wrote:
 
  The API documentation has this to say on the subject:
 
  [...] To send back a DTO with each suggestion, extend the Suggestion
  interface and define a getter method that has a return value of the
  DTO's type. Define a class that implements this subinterface and use
  it to encapsulate each suggestion.
 
  To access a suggestion's DTO when the suggestion is selected, add a
  SuggestionHandler to the SuggestBox (see SuggestBox's documentation
  for more information). In the
  SuggestionHandler.onSuggestionSelected(SuggestionEvent event) method,
  obtain the selected Suggestion object from the SuggestionEvent object,
  and downcast the Suggestion object to the subinterface. Then, acces
  the DTO using the DTO getter method that was defined on the
  subinterface.
 
  See
 
  http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/SuggestOracle.Suggestion.html
 
  (the 1.6 version is similar, but with the new event model)
 
  So the endorsed solution is to extend and cast. Fair enough. This
  probably dates from pre-1.5, and it was good enough for then. But is
  there a reason not to parameterize SuggestBox with T extends
  Suggestion (and SuggestOracleT, SelectionEventT, etc.) now that
  that's an option? Or perhaps make Suggestion implement HasValueT? I
  have an application that uses many SuggestBoxes and many different
  Suggestion subclasses and this would simplify things (and eliminate
  much type-casting).
 
  I'm not sure parameterizing  SuggestBox itself would be worth it, as
  most
  people use it without creating new types of suggestions: so the
  parameterization would add clutter for the many and prevent casts for
  the
  few.  Though, I completely agree it is annoying to have to cast.
  Perhaps we
  could create a composite-based CustomSuggestBox that is parameterized?
 
 
 
 
  Any thoughts on this? Horrible side effects that I'm missing?
 
  - Isaac
 
 
 
 
 
  --
  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
-~--~~~~--~~--~--~---



[gwt-contrib] Associating Data Transfer Objects (DTOs) with Suggestion Objects

2009-02-23 Thread Isaac Truett

The API documentation has this to say on the subject:

[...] To send back a DTO with each suggestion, extend the Suggestion
interface and define a getter method that has a return value of the
DTO's type. Define a class that implements this subinterface and use
it to encapsulate each suggestion.

To access a suggestion's DTO when the suggestion is selected, add a
SuggestionHandler to the SuggestBox (see SuggestBox's documentation
for more information). In the
SuggestionHandler.onSuggestionSelected(SuggestionEvent event) method,
obtain the selected Suggestion object from the SuggestionEvent object,
and downcast the Suggestion object to the subinterface. Then, acces
the DTO using the DTO getter method that was defined on the
subinterface.

See 
http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/SuggestOracle.Suggestion.html

(the 1.6 version is similar, but with the new event model)

So the endorsed solution is to extend and cast. Fair enough. This
probably dates from pre-1.5, and it was good enough for then. But is
there a reason not to parameterize SuggestBox with T extends
Suggestion (and SuggestOracleT, SelectionEventT, etc.) now that
that's an option? Or perhaps make Suggestion implement HasValueT? I
have an application that uses many SuggestBoxes and many different
Suggestion subclasses and this would simplify things (and eliminate
much type-casting).

Any thoughts on this? Horrible side effects that I'm missing?

- Isaac

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



[gwt-contrib] Re: GWT 1.5.3: Type mismatch with enum in parameterized class.

2009-01-22 Thread Isaac Truett

And if I'd been silly enough to bet against you, Scott, then I
would've lost. For posterity:

1. SVN r4361 contains the updated JDT. I copied that to my 1.5 release branch.
2. SVN r4362 contains a small code change to LongFromJSNIChecker.java.
I applied that to my 1.5 branch.
3. SVN r4362 also contains the change to dev/core/build.xml to use the
new jar. Applied that.
4. Build and enjoy.

Thank you very much, Scott. This duct tape should hold until I can
upgrade to 1.6.

@Bruce - I'm eagerly waiting the turning of that corner!


Love the toolkit. Love the fast, friendly, free support. Thank you all!

- Isaac


On Wed, Jan 21, 2009 at 6:55 PM, Scott Blum sco...@google.com wrote:
 Isaac, I would put money on our updating to a newer version of JDT.  I'd
 find where Lex committed this upgrade... if there are no code changes, you
 might try putting the newer JDT higher on the classpath as a test.  If that
 works, simple jar surgery should get you where you want to go.

 On Wed, Jan 21, 2009 at 10:54 AM, Isaac Truett itru...@gmail.com wrote:

 I've found an interesting error in GWT 1.5.3:

  [ERROR] Line 14: Type mismatch: cannot convert from
 Test.Parametric.Number
 s to Test.ParametricT.Numbers
  [ERROR] Line 17: Type mismatch: cannot convert from
 Test.Parametric.Number
 s to Test.ParametricT.Numbers
 Compiling module test.Test
 Computing all possible rebind results for 'test.client.Test'
   Rebinding test.client.Test
  Checking rule generate-with
 class='com.google.gwt.user.rebind.ui.ImageBun
 dleGenerator'/
 [ERROR] Unable to find type 'test.client.Test'
[ERROR] Hint: Previous compiler errors may have made this type
 unava
 ilable
[ERROR] Hint: Check the inheritance chain from your module; it
 may n
 ot be inheriting a required module or a module may not be adding its
 source path
  entries properly


 To reproduce:

 public class Test implements EntryPoint {
  static class ParametricT {
enum Numbers {
  ONE, TWO;
}
  }

  public void onModuleLoad() {
switch (Parametric.Numbers.valueOf(ONE)) {
  case ONE: // Line 14
System.out.println(ONE);
break;
  case TWO: // Line 17
System.out.println(ONE);
break;
}
  }
 }

 Removing the parameter from the type enclosing the enum fixes the problem.

 The above *works* in trunk and 1.6, but I searched a little bit and I
 couldn't find anything in the issue tracker that appeared related.
 Upgrading to 1.6/trunk isn't a good option for me at the moment, so
 I'm hoping that someone has seen this before and could help me find
 the change that fixed it. If it's a simple patch, I can apply it to
 1.5.3 until such time as an upgrade is possible. Moving the enum to a
 non-parameterized type would probably work as well, but I'm loathe to
 do too much redesign on account of a compiler bug that appears to
 already have been fixed.




 


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



[gwt-contrib] Re: Question about Log.info,etc. methods

2009-01-16 Thread Isaac Truett

While I agree entirely regarding the undesirability of single-letter
method names, I also wonder if perhaps Emily was referring, in part at
least, to the order of the two parameters, message and category?
Making that consistent doesn't seem unduly burdensome.



On Fri, Jan 16, 2009 at 11:17 AM, Freeland Abbott
gwt.team.fabb...@gmail.com wrote:
 At a speculative guess, Android may be choosing short names to keep the
 compiled class files smaller, since they're such a memory-restricted
 environment (they also like filenames like R.java to contain what amounts to
 a dictionary of resource hash-references).  I'm not sure I see Android as a
 server platform for GWT apps, so that issue goes away for us in the compile
 and obfuscate cycle of client code for the Android browser.

 So I second Joel's yuck, and see no reason to override the aesthetic
 objection. ;-)



 On Fri, Jan 16, 2009 at 10:38 AM, Joel Webber j...@google.com wrote:

 Log.i()? Yuck.

 On Thu, Jan 15, 2009 at 12:54 PM, Emily Crutcher e...@google.com wrote:

 In some ways, android is now a sister project of gwt.  For our static
 logging, we use methods like
 Log.info(String message, String category) the same method in android is
 Log.i(String category, String message). Is it worth normalizing those static
 method calls?



 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Question about Log.info,etc. methods

2009-01-16 Thread Isaac Truett

What about finding some way to make the parameters type safe? Perhaps
a simple Category class that wraps a String? Writing Log.info(new
Category(message), category) would jump out at me as being very
noticeably wrong. That would avoid the confusion now between
Log.info() and Log.i(). Is the extra verbosity worth it?


On Fri, Jan 16, 2009 at 11:30 AM, Emily Crutcher e...@google.com wrote:
 Both actually, though if we don't change the method names, changing the
 order of the parameters without breaking everyone currently using logging
 would be almost impossible.


 On Fri, Jan 16, 2009 at 11:21 AM, Isaac Truett itru...@gmail.com wrote:

 While I agree entirely regarding the undesirability of single-letter
 method names, I also wonder if perhaps Emily was referring, in part at
 least, to the order of the two parameters, message and category?
 Making that consistent doesn't seem unduly burdensome.



 On Fri, Jan 16, 2009 at 11:17 AM, Freeland Abbott
 gwt.team.fabb...@gmail.com wrote:
  At a speculative guess, Android may be choosing short names to keep the
  compiled class files smaller, since they're such a memory-restricted
  environment (they also like filenames like R.java to contain what
  amounts to
  a dictionary of resource hash-references).  I'm not sure I see Android
  as a
  server platform for GWT apps, so that issue goes away for us in the
  compile
  and obfuscate cycle of client code for the Android browser.
 
  So I second Joel's yuck, and see no reason to override the aesthetic
  objection. ;-)
 
 
 
  On Fri, Jan 16, 2009 at 10:38 AM, Joel Webber j...@google.com wrote:
 
  Log.i()? Yuck.
 
  On Thu, Jan 15, 2009 at 12:54 PM, Emily Crutcher e...@google.com
  wrote:
 
  In some ways, android is now a sister project of gwt.  For our static
  logging, we use methods like
  Log.info(String message, String category) the same method in android
  is
  Log.i(String category, String message). Is it worth normalizing those
  static
  method calls?
 
 
 
  --
  There are only 10 types of people in the world: Those who understand
  binary, and those who don't
 
 
 
 
 
 
 
  
 





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: How to deprecate non-Java files?

2009-01-16 Thread Isaac Truett

I was thinking along similar lines, but at compile time:

1. Include a list of deprecated public files in the release (we'll
call it public-deprecated.txt).
2. Compiler gives a warning if anything from public-deprecated.txt is
included in the compiled output.
3. Option to disable the warning (-noWarnPublicDeprecated).
4. Maybe an option to have the compiler specifically exclude any
deprecated files from the compiled output (-excludePublicDeprecated)?



On Fri, Jan 16, 2009 at 12:15 PM, Ian Petersen ispet...@gmail.com wrote:

 Would it be possible to engineer something that would throw up a
 warning message in the hosted mode logger when the client requests one
 of the deprecated files?  Doing so probably wouldn't catch everybody
 because -noserver users would presumably circumvent the check, but it
 would probably catch a good chunk of the userbase.

 Ian

 


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



[gwt-contrib] Re: 1.6 date picker question

2009-01-08 Thread Isaac Truett

Thank you for the reminder, Emily! I'll get you a patch as soon as I
have a few minutes to spare.


On Thu, Jan 8, 2009 at 2:44 PM, Emily Crutcher e...@google.com wrote:
 By the way, now that gwt-incubator is sourced against 1.6,  if you can
 retarget your DropDownDatePicker for 1.6 and the com.google.gwt.gen2.picker
 package I'd love to review it.



 On Fri, Dec 5, 2008 at 1:08 AM, Emily Crutcher e...@google.com wrote:

 Also, the code should be reviewed before committing. I'll be happy to be
 your reviewer once we land the 1.6 datepicker + release the 1.5 final
 gwt-incubator drop. As until then, we cannot add 1.6 specific code to
 gwt-incubator.

 On Fri, Dec 5, 2008 at 1:05 AM, Emily Crutcher e...@google.com wrote:

 Yep, sounds right, thanks!

 On Thu, Dec 4, 2008 at 6:53 PM, Isaac Truett itru...@gmail.com wrote:

 On second thought, gwt-incubator is supposed to compile against trunk,
 isn't it? Well, since this is written to compile against the
 1_6_datepicker branch, I'll hold off committing until that branch is
 merged to trunk (soon, right...?).

 I've attached the DropDownDatePicker proof-of-concept patch. It's
 very, very ugly, but it works. I'll see about tending to the style a
 little bit when I have more time.

 Comments welcome, of course.

 - Isaac

 On Thu, Dec 4, 2008 at 10:36 AM, Emily Crutcher e...@google.com wrote:
  That sounds great, thanks.
 
  On Thu, Dec 4, 2008 at 10:31 AM, Isaac Truett itru...@gmail.com
  wrote:
 
  I wrote a MonthSelector a while back that uses DropDownListBoxes for
  month and year. I can fix it up to be compatible with recent changes
  and add it to the incubator. I'll see if I can fit that in tonight.
 
 
  On Thu, Dec 4, 2008 at 9:39 AM, Emily Crutcher e...@google.com
  wrote:
   It is definitely something that we would consider. Of course, the
   first
   step
   would be to get some good alternative month selectors into the
   gwt-incubator...
  
  
   On Wed, Dec 3, 2008 at 9:28 PM, Arthur Kalmenson
   arthur.k...@gmail.com
   wrote:
  
   Hi John,
  
   Thank you for the reply. Are there any plans in the future to
   include
   various variations of the date picker for developers to choose
   from
   (which would be inline with the requests for a richer widget
   set)?
  
   --
   Arthur Kalmenson
  
  
  
   On Mon, Dec 1, 2008 at 11:37 AM, John LaBanca
   jlaba...@google.com
   wrote:
[+ecc, +google-web-toolkit-contributors]
   
The default DatePicker will only include next and previous
buttons,
but
you
can replace the MonthSelector with your own that does any of the
things
you
suggest.  We thought about using a fancy MonthSelector by
default,
but
we
figured everyone would have a different opinion on the ideal
version,
so
we
instead designed it so you can replace it.
   
Thanks,
John LaBanca
jlaba...@google.com
   
   
On Mon, Dec 1, 2008 at 9:41 AM, Arthur Kalmenson
arthur.k...@gmail.com
wrote:
   
Hello John,
   
Will the 1.6 date picker include a year spinner? I know the
current
incubator version does not have a year spinner, so this makes
it
pretty difficult to use the date picker if you have a date
that's
more
then a year off. Another nice feature would be to be able to
select
the date. For example you could click on the year the date
picker
shows, and that would turn it into a text box where you can
enter
the
year you'd like.
   
Best regards,
--
Arthur Kalmenson
   
   
  
  
  
   --
   There are only 10 types of people in the world: Those who
   understand
   binary, and those who don't
  
   
  
 
 
 
 
 
  --
  There are only 10 types of people in the world: Those who understand
  binary, and those who don't
 
  
 





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



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



 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Incubator review request: DropDownDatePicker

2009-01-08 Thread Isaac Truett
Emily,

Here's my DropDownDatePicker candidate for incubator.

A few issues that I am aware of:

1. Use of deprecated API. This is coming from CustomListBox and will
be resolved as things move over to the 1.6 events.
2. The size of the popup. It's too big in IE, too small in Chrome, and
in Firefox, it's just right. Cue the bears.
3. I had a three, but I forgot one.

Please review at your convenience.

Thanks,
Isaac

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



DropDownDatePicker.patch
Description: Binary data


[gwt-contrib] Re: @SingleImpl versus @SingleJsoImpl

2009-01-07 Thread Isaac Truett

+1 for option #2. An interface that can only ever be implemented once
seems very limited in usefulness.


On Wed, Jan 7, 2009 at 10:30 AM, BobV b...@google.com wrote:

 I've working on a branch that allows JavaScriptObjects to implement
 interfaces with methods.  Due to the lack of polymorphic dispatch of
 JSOs, for a given method-bearing interface, there can be exactly one
 JSO type implementing the interface.  The question at hand is whether
 or not to allow N-many regular Java types to also implement that
 interface.

 The choices are:

  ONE 

 @SingleImpl
 interface Person {
  String getName();
 }

 class JsoPerson extends JavaScriptObject implements Person { ... }
 // It is an error to define any other type that implements Person,
 including anonymous types
 // subclassing JsoPerson is OK


  TWO 

 @SingleJsoImpl
 interface Person {
  String getName();
 }

 class JsoPerson extends JavaScriptObject implements Person { ... }
 // It is an error to define any other JSO type that implements Person
 // subclassing JsoPerson is OK

 class RegularPerson implements Person { ... }
 (new Person() { ... })
 // But you can have as many non-JSO types implementing Person



 Tradeoffs:
  - Scenario one is more restrictive, but calling ((Person)
 x).getName() can always be statically resolved to one method
- Land-mines with anonymous types

  - Scenario two allows a JSO implementation to inter-operate with regular code
- Only land-mine would be in declaring a second JSO type
- ((Person) x).getName() would be more expensive to dispatch if
 type-tightening doesn't occur; modulo optimizations, it would look
 like x.typeId$ ? x.getName() : getName$(x)
- This dispatch penalty applies only to interfaces with a JSO
 implementation and one or more regular implementations and
 type-tightening occurs.
- Would be doing polymorphic dispatch anyway, this just adds a
 ternary expression


 I'm favoring scenario two because it provides the developer
 significant additional flexibility.  Consider the following where you
 get a payload from the server in JSON format, but also want to edit
 some of the resulting objects.

 @SingleJsoImpl
 interface Person {
  String getName();
 }

 final class JsoPerson extends JavaScriptObject implements Person {
  protected JsoPerson() {}
  public native String getName() /*-{ return this.name; }-*/;
 }

 class MutablePerson implements Person {
  private String name;
  public MutablePerson(Person copyFrom) {this.person = copyFrom.getName();}
  public String getName() {return name;}
  public void setName(String name);
 }

 --
 Bob Vawter
 Google Web Toolkit Team

 


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



[gwt-contrib] Re: RR: SuggestBox uprades

2008-12-20 Thread Isaac Truett

Whatever happened to this change? I noticed issue #2739 requesting
hideSuggestions() and this patch would seem to satisfy that request.
Is there any chance of this patch or something similar making 1.6?



On Tue, Apr 29, 2008 at 4:25 PM, Emily Crutcher e...@google.com wrote:
 Below are the  SuggestBox API modifications under consideration. Feedback is
 very welcome.

  Thanks,

 Emily

 Make SuggestBox depend upon a  DropDownPanel to control its popup, allowing
 users to customize the behavior, including where it is located and what item
 is selected by default.
 Add a requestDefaultSuggestions method to the SuggestOracle, use it in
 SuggestBox.
 Add hideSuggestions()/showSuggestions() method
 Add a new RPCSuggestOracle which, if extended from, guarantees that only one
 request can be extent at once.
 Add HighlightHandler support to SuggestBox

 P.S The attached patch is against the gwt-incubator, as gwt itself is under
 feature lock down.  The only changes to SuggestOracle and
 MultiWordSuggestOracle is the inclusion of the method
 requestDefaultSuggestions().


 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Issue 210 - demo index

2008-12-18 Thread Isaac Truett

Thank you! I'm glad you like it.

Ideally I would want to keep the old output around and check for
staleness before recompiling. However, I don't have a practical method
for determining staleness of the demos (yet). I don't see any problem
with deleting compiled-demos for now. Looks good with the addition of
the initial delete?


On Wed, Dec 17, 2008 at 9:03 PM, Emily Crutcher e...@google.com wrote:
 That is absolutely awesome! Here are the gen2 widgets using your patch
 posted on app engine.
 http://collectionofdemos.appspot.com/demo/index.html

 When the build.demos target is invoked, is there any reason we should not
 clear the entire directory first? That would save us from including old
 demos if/when we get the automatic posting task completed. (Right now
 running into the 1000 file/unit limit on app-engine, boo ho).


 On Wed, Dec 17, 2008 at 5:06 PM, Isaac Truett itru...@gmail.com wrote:

 Emily,

 The attached patch adds an index.html page to the build-demos output.
 This page contains links to all of the compiled demos. Demos are
 loaded into an iframe on the page for easy testing across demos.


 - Isaac



 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: RR:IsFocusable interface

2008-12-18 Thread Isaac Truett

Sounds good. Do we need the verb in this case? How about just Focusable?


On Wed, Dec 17, 2008 at 5:28 PM, Emily Crutcher e...@google.com wrote:
 Yep, that's the plan!

 On Wed, Dec 17, 2008 at 5:10 PM, Ray Ryan rj...@google.com wrote:

 Works for me. And IsFocusable extends no other interfaces, right?

 On Thu, Dec 18, 2008 at 7:18 AM, Emily Crutcher e...@google.com wrote:

 The HasFocus interface extends SourcesFocusEvents and
 SourcesKeyboardEvents.  The problem is that users then must implement
 SourcesFocusEvents and SourcesKeyboardEvents even for new widgets and cannot
 remove them without also removing the focusable contract. We cannot remove
 the SourcesFocusEvents or sorucesKeyboardEvents from the HasFocus interface
 without breaking an enormous amount of code.

 Therefore, my proposal is that we should do the following:

 Introduce a new interface, IsFocusable, and move all the HasFocus methods
 that are not deprecated into this new interface
 Have HasFocus extend IsFocusable.
 Deprecate the HasFocus interface.
 In TreeItem, HasFocus.getFocusableWidget becomes IsFocusable
 getFocusableWidget.



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








 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Any objections to 1.5-final gwt-incubator drop going out this week?

2008-12-17 Thread Isaac Truett

+1. Let me know if I can assist with the transition.

On Wed, Dec 17, 2008 at 10:25 AM, Emily Crutcher e...@google.com wrote:
 For gwt-incubator users who are using svn tip from gwt-1.6 or gwt-trunk, we
 currently are in a confusing situation of having two different, almost
 identical event systems:  one in gwt-incubator itself and one in gwt. In
 many cases, both are currently in use. Additionally,  we have tons of
 deprecation warnings, because gwt-incubator widgets cannot switch to the
 real event handlers so are stuck using listeners.

 To fix this situation, we need to post a gwt-incubator 1.5 final relatively
 soon. Until the next gwt-incubator jar drop, the gwt-incubator tip  would
 then only be certified to work with gwt-trunk svn tip. After the first gwt
 1.6 milestone or release candidate, gwt-incubator  would be certified to
 work against that 1.6 jar and gwt-trunk.

 Objections anyone?


 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: A couple more small tweaks to the gwt-incubator build target

2008-12-16 Thread Isaac Truett

LGTM.

One other change that we might want to make is to filter out the -aux
dirs from compiled-demo when building the zip. They're harmless but
extraneous.

On Tue, Dec 16, 2008 at 10:01 AM, Emily Crutcher e...@google.com wrote:
 Isaac,

   Could you review these small extra changes to the gwt-incubator build
 file?

 Moving demo output to be a sibling of the generated javadocs.  Both should
 eventually be automatically posted on gwt-incubator's app engine demo site.
 Adding a dependency on build.demos to dist, as we want the sanity check that
 building the demos provides when we do a full distribution.

 On Mon, Dec 15, 2008 at 5:21 PM, Isaac Truett itru...@gmail.com wrote:

 Thanks. Committed as r1319.

 On Mon, Dec 15, 2008 at 5:14 PM, Emily Crutcher e...@google.com wrote:
  LGTM.
 
  On Mon, Dec 15, 2008 at 4:51 PM, Isaac Truett itru...@gmail.com wrote:
 
  Good enough for me. Here's the patch for building demos off of the jar:
 
  Index: build.xml
  ===
  --- build.xml   (revision 1316)
  +++ build.xml   (working copy)
  @@ -371,8 +371,7 @@
vmMaxMemory=${gwtc.vm.maxMemory}
classpath
  path path=${gwtc.src.dir} /
  -path path=${project.src} /
  -path path=${project.bin} /
  +path path=${project.jar} /
  pathelement location=${gwt.user.jar} /
  pathelement location=${gwt.dev.jar} /
  pathelement location=${gwt.tools}/lib/w3c/sac/sac-1.3.jar /
 
 
  Any objections?
 
 
  On Mon, Dec 15, 2008 at 4:43 PM, Emily Crutcher e...@google.com wrote:
   The reasons I would prefer to use the gwt-incubator.jar is because
   that
   gives us a quick sanity check that the gwt-incubator jar is actually
   including everything needed to run the demos!
  
  
   + project.src and project.bin can be overridden, if desired (super
   could be overridden if it used a variable, which it probably should)
  
   If project.src or project.bin was overridden, those changes should be
   reflected in the gwt-incubator jar, if they are not, that is
   definitely
   a
   problem we would want to catch sooner rather then later.
  
  
   + build-demos doesn't depend on building a jar first
  
  
   The gwt-incubator jar currently takes 12 seconds to compile on my
   relatively
   slow laptop, so depending upon the gwt-incubator build running first
   does
   not seem like it introduces an undue burden on the developer.
  
  
   cheers,
  
 Emily
  
   
  
 
 
 
 
 
  --
  There are only 10 types of people in the world: Those who understand
  binary, and those who don't
 
  
 





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: A couple more small tweaks to the gwt-incubator build target

2008-12-16 Thread Isaac Truett

Opened issue 209.

On Tue, Dec 16, 2008 at 10:52 AM, Emily Crutcher e...@google.com wrote:
 Can you add an issue for that? As it seems like we should probably sweep
 through both jars and check for extraneous output.

 Committed at  r1323.

Cheers,

   Emily

 On Tue, Dec 16, 2008 at 10:26 AM, Isaac Truett itru...@gmail.com wrote:

 LGTM.

 One other change that we might want to make is to filter out the -aux
 dirs from compiled-demo when building the zip. They're harmless but
 extraneous.

 On Tue, Dec 16, 2008 at 10:01 AM, Emily Crutcher e...@google.com wrote:
  Isaac,
 
Could you review these small extra changes to the gwt-incubator
  build
  file?
 
  Moving demo output to be a sibling of the generated javadocs.  Both
  should
  eventually be automatically posted on gwt-incubator's app engine demo
  site.
  Adding a dependency on build.demos to dist, as we want the sanity check
  that
  building the demos provides when we do a full distribution.
 
  On Mon, Dec 15, 2008 at 5:21 PM, Isaac Truett itru...@gmail.com wrote:
 
  Thanks. Committed as r1319.
 
  On Mon, Dec 15, 2008 at 5:14 PM, Emily Crutcher e...@google.com wrote:
   LGTM.
  
   On Mon, Dec 15, 2008 at 4:51 PM, Isaac Truett itru...@gmail.com
   wrote:
  
   Good enough for me. Here's the patch for building demos off of the
   jar:
  
   Index: build.xml
   ===
   --- build.xml   (revision 1316)
   +++ build.xml   (working copy)
   @@ -371,8 +371,7 @@
 vmMaxMemory=${gwtc.vm.maxMemory}
 classpath
   path path=${gwtc.src.dir} /
   -path path=${project.src} /
   -path path=${project.bin} /
   +path path=${project.jar} /
   pathelement location=${gwt.user.jar} /
   pathelement location=${gwt.dev.jar} /
   pathelement location=${gwt.tools}/lib/w3c/sac/sac-1.3.jar
   /
  
  
   Any objections?
  
  
   On Mon, Dec 15, 2008 at 4:43 PM, Emily Crutcher e...@google.com
   wrote:
The reasons I would prefer to use the gwt-incubator.jar is because
that
gives us a quick sanity check that the gwt-incubator jar is
actually
including everything needed to run the demos!
   
   
+ project.src and project.bin can be overridden, if desired
(super
could be overridden if it used a variable, which it probably
should)
   
If project.src or project.bin was overridden, those changes should
be
reflected in the gwt-incubator jar, if they are not, that is
definitely
a
problem we would want to catch sooner rather then later.
   
   
+ build-demos doesn't depend on building a jar first
   
   
The gwt-incubator jar currently takes 12 seconds to compile on my
relatively
slow laptop, so depending upon the gwt-incubator build running
first
does
not seem like it introduces an undue burden on the developer.
   
   
cheers,
   
  Emily
   

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





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Review request: add super source dir to incubator demo build

2008-12-15 Thread Isaac Truett

Good enough for me. Here's the patch for building demos off of the jar:

Index: build.xml
===
--- build.xml   (revision 1316)
+++ build.xml   (working copy)
@@ -371,8 +371,7 @@
   vmMaxMemory=${gwtc.vm.maxMemory}
   classpath
 path path=${gwtc.src.dir} /
-path path=${project.src} /
-path path=${project.bin} /
+path path=${project.jar} /
 pathelement location=${gwt.user.jar} /
 pathelement location=${gwt.dev.jar} /
 pathelement location=${gwt.tools}/lib/w3c/sac/sac-1.3.jar /


Any objections?


On Mon, Dec 15, 2008 at 4:43 PM, Emily Crutcher e...@google.com wrote:
 The reasons I would prefer to use the gwt-incubator.jar is because that
 gives us a quick sanity check that the gwt-incubator jar is actually
 including everything needed to run the demos!


 + project.src and project.bin can be overridden, if desired (super
 could be overridden if it used a variable, which it probably should)

 If project.src or project.bin was overridden, those changes should be
 reflected in the gwt-incubator jar, if they are not, that is definitely a
 problem we would want to catch sooner rather then later.


 + build-demos doesn't depend on building a jar first


 The gwt-incubator jar currently takes 12 seconds to compile on my relatively
 slow laptop, so depending upon the gwt-incubator build running first does
 not seem like it introduces an undue burden on the developer.


 cheers,

   Emily

 


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



[gwt-contrib] Re: Review request: add super source dir to incubator demo build

2008-12-15 Thread Isaac Truett

Thanks. Committed as r1319.

On Mon, Dec 15, 2008 at 5:14 PM, Emily Crutcher e...@google.com wrote:
 LGTM.

 On Mon, Dec 15, 2008 at 4:51 PM, Isaac Truett itru...@gmail.com wrote:

 Good enough for me. Here's the patch for building demos off of the jar:

 Index: build.xml
 ===
 --- build.xml   (revision 1316)
 +++ build.xml   (working copy)
 @@ -371,8 +371,7 @@
   vmMaxMemory=${gwtc.vm.maxMemory}
   classpath
 path path=${gwtc.src.dir} /
 -path path=${project.src} /
 -path path=${project.bin} /
 +path path=${project.jar} /
 pathelement location=${gwt.user.jar} /
 pathelement location=${gwt.dev.jar} /
 pathelement location=${gwt.tools}/lib/w3c/sac/sac-1.3.jar /


 Any objections?


 On Mon, Dec 15, 2008 at 4:43 PM, Emily Crutcher e...@google.com wrote:
  The reasons I would prefer to use the gwt-incubator.jar is because that
  gives us a quick sanity check that the gwt-incubator jar is actually
  including everything needed to run the demos!
 
 
  + project.src and project.bin can be overridden, if desired (super
  could be overridden if it used a variable, which it probably should)
 
  If project.src or project.bin was overridden, those changes should be
  reflected in the gwt-incubator jar, if they are not, that is definitely
  a
  problem we would want to catch sooner rather then later.
 
 
  + build-demos doesn't depend on building a jar first
 
 
  The gwt-incubator jar currently takes 12 seconds to compile on my
  relatively
  slow laptop, so depending upon the gwt-incubator build running first
  does
  not seem like it introduces an undue burden on the developer.
 
 
  cheers,
 
Emily
 
  
 





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: RR: HasValue is not ready for primetime

2008-12-12 Thread Isaac Truett

 how about we narrow the scope of this conversation to
 CheckBox api repair. How about this:

 Deprecate CheckBox#isChecked and CheckBox#setChecked
 Introduce CheckBox#setFormValue
 Add copious javadoc to compare and contrast the two set...Value methods

No objections here. While we're being cautious, here's an alternate
approach that is even more guarded:

* Leave is/setChecked as-is.
* Add get/setFormValue.
* Don't implement HasValue in CheckBox at all. After HasValue gets
more exposure in trunk and GWT 1.6, solicit feedback as to whether
CheckBox would benefit from implementing it or just add confusion.

I don't propose that this is necessarily a better solution, just food
for thought.


On Thu, Dec 11, 2008 at 6:24 PM, Ray Ryan rj...@google.com wrote:
 Well put, RayC, thanks. MVC is exactly the intended point of HasValue.
 (Freeland, John, it's HasValueT, that's not being debated, fret ye not.)
 And you guys are right, I think, that we're wrong to paralyze ourselves with
 fears of future confusion with our still-vague-but-crystallizing-nicely
 notions of a data binding framework.
 The specific issue that got me to lob this grenade was a disgusted internal
 complaint by someone who has long been frustrated by our CheckBox's lack of
 access to the dom value field. When he saw the longed for method appear and
 do exactly the wrong thing, and in a manner redundant with isChecked...
 I like HasValue, but its application to CheckBox has produced very confusing
 little beastie. So, how about we narrow the scope of this conversation to
 CheckBox api repair. How about this:

 Deprecate CheckBox#isChecked and CheckBox#setChecked
 Introduce CheckBox#setFormValue
 Add copious javadoc to compare and contrast the two set...Value methods

 If this flies, are there other widgets that need the setFormValue method?
 rjrjr
 On Fri, Dec 12, 2008 at 7:42 AM, Ray Cromwell cromwell...@gmail.com wrote:

 IMHO, the concept of a Widget having a value is that it has only one
 value. The value can certainly be an object with multiple fields, or
 with conversion helper functions (String-Boolean), but it's one value
 with a normalized internal representation.

 For example, consider an USPostalAddressWidget, which
 HasValueUSPostalAddress. This widget is quite complex, with probably
 ample internal textboxes for each field (street, city, state, zip,
 suite, etc) and also validation. However, the widget conceptually has
 a single value: a USPostalAddress that can be get and set.

 In this context, I think it is clear that HasValue is really a
 Model-View interface. If it were a Table, it would be
 HasValueTableModel or HasValueTableData, for example. Probably the
 primary difference is HasValue doesn't require models to provide
 change listener interfaces.

 I don't believe that Data Binding and Model/View architectures are
 mutually exclusive. The main difference is, with MVC, typically, you
 build model POJOs, and build the View to be tightly coupled to the
 model interface, so that there is usually (but not always) a one to
 one correspondence between View and Model types.  With Data Binding
 frameworks, the coupling is looser and you can have a many-to-one
 relationship, e.g bind POJO.fooField to Widget A and bind
 POJO.barField to WidgetB, or further, you can bind into composite
 widgets exposing their innards. Data Binding allows for more reuse
 since you can repurpose pojo models by slicing and dicing them with
 binding expressions, on the other hand, lots of bindings can get messy
 and make it harder to track what widgets deal with what data,
 especially if the bindings are dynamic or in a DSL.

 -Ray


 On Thu, Dec 11, 2008 at 11:49 AM, Isaac Truett itru...@gmail.com wrote:
 
  At the risk of seeming to hand-wave that problem away, I would say
  that any Widget seeking to implement HasValue twice is not a candidate
  for HasValue at all. HasValue is, by definition, for Widgets with a
  single distinct value. The value of a CheckBox is either a String or a
  Boolean (we've seen arguments either way) or it simply isn't a
  HasValue because it's a complex Widget with two equally important and
  independent values.
 
 
  On Thu, Dec 11, 2008 at 2:41 PM, John Tamplin j...@google.com wrote:
  On Thu, Dec 11, 2008 at 2:20 PM, Freeland Abbott
  gwt.team.fabb...@gmail.com wrote:
 
  To be fair, my friend was extending TextBox---which came to implement
  HasValue, and thus acquired the colliding String getValue()---when he
  should
  have extended Composite (which doesn't) instead; that was my suggested
  resolution for him.  He grumbled (but it 'is-a' TextBox, that should
  be
  extends), but conceded.
  However, the old HasValue is not parameterized, and implies
  something
  has *string* value, period.  As applied to CheckBox, that's
  confusing-to-wrong.
  Isaac is correct that we can resolve this by making CheckBox not a
  HasValue, and keep the interface... but the discussion makes me think
  that
  HasValueT has merit

[gwt-contrib] Re: RR: HasValue is not ready for primetime

2008-12-11 Thread Isaac Truett

The HasValue interface's usefulness is entirely separable from any
framework or library which might or might not be built on top of it.
TelephoneTextBox is a great example of that. You could wrap a single
TextBox in a composite that implements HasValueTelephoneNumber and
another composite (TelephoneChooser?) that wraps three TextBoxes (Area
Code, Exchange, and... whatever you call the last four numbers). Yet
another implementation might use DropDownListBox to limit the
available area codes (to area codes in a given state, for example).
All of those can be treated as HasValueTelephoneNumber and have
consistent, type-safe accessors defined by that interface.

Not every Widget needs to implement HasValue. Widgets could be
retrofitted later. And HasValue doesn't have to replace current
accessors. TextBox.getText() could trivially delegate to getValue()
and wouldn't even need to be deprecated. There is the potential for
collision with any existing Widget extensions that define methods
called getValue() or setValue(). That's unfortunate, but unavoidable
when adding to an existing API. That should also be an understood risk
when extending a class from another source. If you want to protect
against changing API, encapsulation is much safer.

I cannot agree more with the cautious spirit of this proposal, but I
don't think unquantified fears about future data binding and
validation work justify holding this up. HasValue did a brief stint in
incubation and maybe it's been called up prematurely, but I don't
think so. Consider HasValue on its own merits.



On Wed, Dec 10, 2008 at 10:51 PM, Freeland Abbott
gwt.team.fabb...@gmail.com wrote:
 Without having actually looked at HasValue much, I did get pinged by a
 friend of mine who was annoyed that his overridden parameterized getValue()
 was now colliding with our String getValue()... looking at CheckBox, perhaps
 something like HasValueBoolean would be a better semantic.  (It also might
 work better for my friend's case, which was basically a parameterized parent
 for IntegerTextBox, CurrencyTextBox, TelephoneTextBox, etc.)

 I think Ray's point is just that we'd rather not have GWT wind up tied to
 something half-thought-out, but have to support it three years from now as
 well as whatever we discover we want instead.  Fearing that we just stepped
 onto such a route, he's trying to step back before it's too late and he's
 stuck.
 It'd be nice if such a thing could drop into the incubator to bake, of
 course. grin


 On Wed, Dec 10, 2008 at 9:00 PM, Isaac Truett itru...@gmail.com wrote:

  We'll need a general stick-a-value-in-take-a-value-out mechanism, the
  HasValue interface may not be the right one, and we'd prefer not to lead
  with it in isolation from the framework as a whole.

 If HasValue isn't a contract that you want to honor, that's one thing.
 But saying that it would interfere with a data binding or validation
 framework just doesn't seem accurate. Even if you end up not using
 HasValue as part of those frameworks, it isn't a loss. It's just not
 used. HasValue consolidates all of the separate accessors that Widgets
 have to define anyway and gives them a common API. That's not stepping
 on any other API or framework's toes.

  Yes, and the lack of access to the  underlying value attribute has long
  been
  confusing to folks with an HTML background. Adding a setValue method
  that
  some have considered to be missing, but having it not apply to the
  checkbox
  value is just plain confusing.

 I don't necessarily agree with this position, but I can accept that
 others might. So punt on CheckBox for now. Nothing says every Widget
 has to implement HasValue. Do you actually anticipate finding a
 replacement for HasValue that will fit every current and future Widget
 perfectly?

 On Wed, Dec 10, 2008 at 8:35 PM, Ray Ryan rj...@google.com wrote:
 
 
  On Thu, Dec 11, 2008 at 12:28 PM, Isaac Truett itru...@gmail.com
  wrote:
 
   Reactions?
 
  Puzzlement.
 
   It stands a good chance of interfering with nascent data binding /
   validation work.
 
  Care to elaborate on this?
 
  We'll need a general stick-a-value-in-take-a-value-out mechanism, the
  HasValue interface may not be the right one, and we'd prefer not to lead
  with it in isolation from the framework as a whole.
 
   And its application to CheckBox is just plain wrongheaded
   and confusing. (CheckBox#setValue doesn't actually set the input
   element's
   value attribute--oops.)
 
  When has GWT's CheckBox ever had a value in the HTML sense? As a
  Widget, it represents a boolean value.
 
  Yes, and the lack of access to the  underlying value attribute has long
  been
  confusing to folks with an HTML background. Adding a setValue method
  that
  some have considered to be missing, but having it not apply to the
  checkbox
  value is just plain confusing.
 
  Obviously you're not telling the whole story here.
 
  Well, no, really that's it.
 
 
 
  On Wed, Dec 10, 2008 at 7:35 PM, Ray Ryan

[gwt-contrib] Re: RR: HasValue is not ready for primetime

2008-12-11 Thread Isaac Truett

At the risk of seeming to hand-wave that problem away, I would say
that any Widget seeking to implement HasValue twice is not a candidate
for HasValue at all. HasValue is, by definition, for Widgets with a
single distinct value. The value of a CheckBox is either a String or a
Boolean (we've seen arguments either way) or it simply isn't a
HasValue because it's a complex Widget with two equally important and
independent values.


On Thu, Dec 11, 2008 at 2:41 PM, John Tamplin j...@google.com wrote:
 On Thu, Dec 11, 2008 at 2:20 PM, Freeland Abbott
 gwt.team.fabb...@gmail.com wrote:

 To be fair, my friend was extending TextBox---which came to implement
 HasValue, and thus acquired the colliding String getValue()---when he should
 have extended Composite (which doesn't) instead; that was my suggested
 resolution for him.  He grumbled (but it 'is-a' TextBox, that should be
 extends), but conceded.
 However, the old HasValue is not parameterized, and implies something
 has *string* value, period.  As applied to CheckBox, that's
 confusing-to-wrong.
 Isaac is correct that we can resolve this by making CheckBox not a
 HasValue, and keep the interface... but the discussion makes me think that
 HasValueT has merit, and for example a CheckBox would be HasValueBoolean
 and a TextBox would be HasValueString (my friend should still make
 Composites, with HasValueTelephoneStationNumber, and not extend TextBox).
 But if we go with HasValue (unparameterized), that's a breaking change to
 make later (I guess we'd have to make HasTypedValueT instead, and have
 HasValue come to extend HasTypedValueString), and so I'm still happy to
 pause and think a bit more.
 (Do we like HasValueT, where T is widget-specific for whatever widgets
 have values??)

 One problem is that due to type erasure you cannot implement multiple copies
 of this interface (such as HasValueBoolean and HasValueString).  For a
 hypothetical checkbox, you might well want a boolean value for checked or
 not, as well as the string value (ie, what it would post as in a form
 submit).

 Other than that, I think the generic version is the way to go if it is kept.

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 


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



[gwt-contrib] Re: RR: HasValue is not ready for primetime

2008-12-10 Thread Isaac Truett

 Reactions?

Puzzlement.

 It stands a good chance of interfering with nascent data binding /
 validation work.

Care to elaborate on this?

 And its application to CheckBox is just plain wrongheaded
 and confusing. (CheckBox#setValue doesn't actually set the input element's
 value attribute--oops.)

When has GWT's CheckBox ever had a value in the HTML sense? As a
Widget, it represents a boolean value.

Obviously you're not telling the whole story here.



On Wed, Dec 10, 2008 at 7:35 PM, Ray Ryan [EMAIL PROTECTED] wrote:
 As much as I like the spirit HasValue interface introduced with the new
 event handlers, I think we've rushed it, and that it should be removed for
 1.6. It stands a good chance of interfering with nascent data binding /
 validation work. And its application to CheckBox is just plain wrongheaded
 and confusing. (CheckBox#setValue doesn't actually set the input element's
 value attribute--oops.)
 I'd like to take it out. The CL to do this will:

 Delete the HasValue interface
 Leave DatePicker as is
 Delete TextBoxBase#setValue(String), and add rename
 TextBoxBase#setValue(String, Boolean) to setText(String, Boolean)
 Delete CheckBox#SetValue, and make it stop throwing ValueChange events.

 Reactions?
 rjrjr

 


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



[gwt-contrib] Re: RR: HasValue is not ready for primetime

2008-12-10 Thread Isaac Truett

 We'll need a general stick-a-value-in-take-a-value-out mechanism, the
 HasValue interface may not be the right one, and we'd prefer not to lead
 with it in isolation from the framework as a whole.

If HasValue isn't a contract that you want to honor, that's one thing.
But saying that it would interfere with a data binding or validation
framework just doesn't seem accurate. Even if you end up not using
HasValue as part of those frameworks, it isn't a loss. It's just not
used. HasValue consolidates all of the separate accessors that Widgets
have to define anyway and gives them a common API. That's not stepping
on any other API or framework's toes.

 Yes, and the lack of access to the  underlying value attribute has long been
 confusing to folks with an HTML background. Adding a setValue method that
 some have considered to be missing, but having it not apply to the checkbox
 value is just plain confusing.

I don't necessarily agree with this position, but I can accept that
others might. So punt on CheckBox for now. Nothing says every Widget
has to implement HasValue. Do you actually anticipate finding a
replacement for HasValue that will fit every current and future Widget
perfectly?

On Wed, Dec 10, 2008 at 8:35 PM, Ray Ryan [EMAIL PROTECTED] wrote:


 On Thu, Dec 11, 2008 at 12:28 PM, Isaac Truett [EMAIL PROTECTED] wrote:

  Reactions?

 Puzzlement.

  It stands a good chance of interfering with nascent data binding /
  validation work.

 Care to elaborate on this?

 We'll need a general stick-a-value-in-take-a-value-out mechanism, the
 HasValue interface may not be the right one, and we'd prefer not to lead
 with it in isolation from the framework as a whole.

  And its application to CheckBox is just plain wrongheaded
  and confusing. (CheckBox#setValue doesn't actually set the input
  element's
  value attribute--oops.)

 When has GWT's CheckBox ever had a value in the HTML sense? As a
 Widget, it represents a boolean value.

 Yes, and the lack of access to the  underlying value attribute has long been
 confusing to folks with an HTML background. Adding a setValue method that
 some have considered to be missing, but having it not apply to the checkbox
 value is just plain confusing.

 Obviously you're not telling the whole story here.

 Well, no, really that's it.



 On Wed, Dec 10, 2008 at 7:35 PM, Ray Ryan [EMAIL PROTECTED] wrote:
  As much as I like the spirit HasValue interface introduced with the new
  event handlers, I think we've rushed it, and that it should be removed
  for
  1.6. It stands a good chance of interfering with nascent data binding /
  validation work. And its application to CheckBox is just plain
  wrongheaded
  and confusing. (CheckBox#setValue doesn't actually set the input
  element's
  value attribute--oops.)
  I'd like to take it out. The CL to do this will:
 
  Delete the HasValue interface
  Leave DatePicker as is
  Delete TextBoxBase#setValue(String), and add rename
  TextBoxBase#setValue(String, Boolean) to setText(String, Boolean)
  Delete CheckBox#SetValue, and make it stop throwing ValueChange events.
 
  Reactions?
  rjrjr
 
  
 




 


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



[gwt-contrib] Re: 1.6 date picker question

2008-12-04 Thread Isaac Truett

I wrote a MonthSelector a while back that uses DropDownListBoxes for
month and year. I can fix it up to be compatible with recent changes
and add it to the incubator. I'll see if I can fit that in tonight.


On Thu, Dec 4, 2008 at 9:39 AM, Emily Crutcher [EMAIL PROTECTED] wrote:
 It is definitely something that we would consider. Of course, the first step
 would be to get some good alternative month selectors into the
 gwt-incubator...


 On Wed, Dec 3, 2008 at 9:28 PM, Arthur Kalmenson [EMAIL PROTECTED]
 wrote:

 Hi John,

 Thank you for the reply. Are there any plans in the future to include
 various variations of the date picker for developers to choose from
 (which would be inline with the requests for a richer widget set)?

 --
 Arthur Kalmenson



 On Mon, Dec 1, 2008 at 11:37 AM, John LaBanca [EMAIL PROTECTED] wrote:
  [+ecc, +google-web-toolkit-contributors]
 
  The default DatePicker will only include next and previous buttons, but
  you
  can replace the MonthSelector with your own that does any of the things
  you
  suggest.  We thought about using a fancy MonthSelector by default, but
  we
  figured everyone would have a different opinion on the ideal version, so
  we
  instead designed it so you can replace it.
 
  Thanks,
  John LaBanca
  [EMAIL PROTECTED]
 
 
  On Mon, Dec 1, 2008 at 9:41 AM, Arthur Kalmenson [EMAIL PROTECTED]
  wrote:
 
  Hello John,
 
  Will the 1.6 date picker include a year spinner? I know the current
  incubator version does not have a year spinner, so this makes it
  pretty difficult to use the date picker if you have a date that's more
  then a year off. Another nice feature would be to be able to select
  the date. For example you could click on the year the date picker
  shows, and that would turn it into a text box where you can enter the
  year you'd like.
 
  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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Proposed Modification to PopupPanel

2008-12-03 Thread Isaac Truett

 Other Solutions:
 
 We considered passing the event preview down the existing stack of
 EventPreview, which fixes the problem for more than just PopupPanels.
 However, we think this approach is overkill because the problem really
 doesn't manifest itself in other widgets.

What about GlassPanel in the Incubator? Sounds like throwing a
GlassPanel into the mix would break things since it isn't a subclass
of PopupPanel and does it's own event previewing.


On Wed, Dec 3, 2008 at 1:56 PM, John LaBanca [EMAIL PROTECTED] wrote:
 Contributors -

 Summary:
 
 In the current implementation of PopupPanel, a PopupPanel with autoHide
 enabled will not autoHide if another Widget (such as another PopupPanel)
 steals the event preview.  In practice, this means that if a PopupPanel is
 opened on top of an autoHide PopupPanel, the autoHide PopupPanel will no
 longer autoHide.

 Consider an example where you have a SuggestBox inside of a PopupPanel that
 is autoHide.  If you start typing in the SuggestBox, it opens a PopupPanel
 of suggestions.  You then click outside the original popup and expect it to
 disappear.  Instead, only the SuggestBox popup disappears.  In this case,
 the PopupPanels are related, but in some cases they are not.  If you use a
 sticky PopupPanel (stays open for a while, ex. a debug menu or log) in your
 app, it may steal preview from an autoHide PopupPanel, and you have to close
 one to close the other.


 Proposed Solution:
 ==
 I propose that we add a static stack of PopupPanels to the PopupPanel
 class.  As popups are shown and hidden, they are added and removed from the
 stack.  When a popup recieves an event preview, it passes the event down the
 stack and lets each PopupPanel preview it UNTIL it reaches a PopupPanel that
 is modal.  The first modal PopupPanel (which blocks events by definition)
 will end the event preview chain.


 Example:
 ===
 Consider the following stack of PopupPanels, where the top panel is the last
 one that is opened:
 popup6 (autoHide)
 popup5
 popup4 (autoHide)
 popup3 (autoHide)
 popup2 (modal)
 popup1 (autoHide)
 popup0 (modal)

 Now lets say you click on popup4:
 1. Popup6 previews the event.  AutoHide is enabled, so it will hide. (NOTE:
 usually, only popup6 gets to preview the event)
 2. Popup5 previews the event.  Neither autoHide nor modal is enabled, so
 ignore it.
 3. Popup4 previews the event.  AutoHide is enabled, but the event occured
 over Popup4, so it is ignored.
 4. Popup3 previews the event.  AutoHide is enabled, so it will hide.
 5. Popup2 previews the event.  Modal is enabled, so it ends the chain.

 Popup1 and Popup0 never preview the event, so they both remain open.


 Other Solutions:
 
 We considered passing the event preview down the existing stack of
 EventPreview, which fixes the problem for more than just PopupPanels.
 However, we think this approach is overkill because the problem really
 doesn't manifest itself in other widgets.

 Thanks,
 John LaBanca
 [EMAIL PROTECTED]

 


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



[gwt-contrib] Re: Proposed Modification to PopupPanel

2008-12-03 Thread Isaac Truett

Sounds good. I don't do a lot with event preview, but it seems
reasonable that it should follow the new event model.

On Wed, Dec 3, 2008 at 2:14 PM, Emily Crutcher [EMAIL PROTECTED] wrote:
 What about deprecating the old DOM.addEventPreview and creating an
 DOM.addPreviewHandler instead, where the PreviewEvent extends DomEvent and
 has some specialized methods to stop the event from going down the GWT
 preview event chain.




 On Wed, Dec 3, 2008 at 2:00 PM, Isaac Truett [EMAIL PROTECTED] wrote:

  Other Solutions:
  
  We considered passing the event preview down the existing stack of
  EventPreview, which fixes the problem for more than just PopupPanels.
  However, we think this approach is overkill because the problem really
  doesn't manifest itself in other widgets.

 What about GlassPanel in the Incubator? Sounds like throwing a
 GlassPanel into the mix would break things since it isn't a subclass
 of PopupPanel and does it's own event previewing.


 On Wed, Dec 3, 2008 at 1:56 PM, John LaBanca [EMAIL PROTECTED] wrote:
  Contributors -
 
  Summary:
  
  In the current implementation of PopupPanel, a PopupPanel with autoHide
  enabled will not autoHide if another Widget (such as another PopupPanel)
  steals the event preview.  In practice, this means that if a PopupPanel
  is
  opened on top of an autoHide PopupPanel, the autoHide PopupPanel will no
  longer autoHide.
 
  Consider an example where you have a SuggestBox inside of a PopupPanel
  that
  is autoHide.  If you start typing in the SuggestBox, it opens a
  PopupPanel
  of suggestions.  You then click outside the original popup and expect it
  to
  disappear.  Instead, only the SuggestBox popup disappears.  In this
  case,
  the PopupPanels are related, but in some cases they are not.  If you use
  a
  sticky PopupPanel (stays open for a while, ex. a debug menu or log) in
  your
  app, it may steal preview from an autoHide PopupPanel, and you have to
  close
  one to close the other.
 
 
  Proposed Solution:
  ==
  I propose that we add a static stack of PopupPanels to the PopupPanel
  class.  As popups are shown and hidden, they are added and removed from
  the
  stack.  When a popup recieves an event preview, it passes the event down
  the
  stack and lets each PopupPanel preview it UNTIL it reaches a PopupPanel
  that
  is modal.  The first modal PopupPanel (which blocks events by
  definition)
  will end the event preview chain.
 
 
  Example:
  ===
  Consider the following stack of PopupPanels, where the top panel is the
  last
  one that is opened:
  popup6 (autoHide)
  popup5
  popup4 (autoHide)
  popup3 (autoHide)
  popup2 (modal)
  popup1 (autoHide)
  popup0 (modal)
 
  Now lets say you click on popup4:
  1. Popup6 previews the event.  AutoHide is enabled, so it will hide.
  (NOTE:
  usually, only popup6 gets to preview the event)
  2. Popup5 previews the event.  Neither autoHide nor modal is enabled, so
  ignore it.
  3. Popup4 previews the event.  AutoHide is enabled, but the event
  occured
  over Popup4, so it is ignored.
  4. Popup3 previews the event.  AutoHide is enabled, so it will hide.
  5. Popup2 previews the event.  Modal is enabled, so it ends the chain.
 
  Popup1 and Popup0 never preview the event, so they both remain open.
 
 
  Other Solutions:
  
  We considered passing the event preview down the existing stack of
  EventPreview, which fixes the problem for more than just PopupPanels.
  However, we think this approach is overkill because the problem really
  doesn't manifest itself in other widgets.
 
  Thanks,
  John LaBanca
  [EMAIL PROTECTED]
 
  
 





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: incubator code review

2008-12-02 Thread Isaac Truett

Is that going to turn into a revolving door of new packages as each
generation of widgets requires it's own namespace? It seems to me that
the gen2 package idea was a mistake of convenience and maybe should
have been a branch (or branches) that got merged back into trunk once
it stabilized.


On Tue, Dec 2, 2008 at 11:57 AM, John LaBanca [EMAIL PROTECTED] wrote:
 Is this a good idea?  I think we should just deprecate the widgetideas
 version now in favor of the gen2 version.  I didn't attempt to copy
 ScrollTable changes back to the widgetideas version, it would be a
 nightmare.  IMHO, development on widgetideas code should be closed once a
 gen2 replacement is available.

 Thanks,
 John LaBanca
 [EMAIL PROTECTED]


 On Tue, Dec 2, 2008 at 11:48 AM, Emily Crutcher [EMAIL PROTECTED] wrote:

 Code review request:
 http://code.google.com/p/google-web-toolkit-incubator/source/detail?r=1250

 Copying gen2-DropDownPanel over the widgetideas-DropDownPanel rather then
 patching the widgetideas version,  as this way we only maintain one version
 of DropDownPanel, which is going to be depricated as soon as the first 1.6
 milestone is released.


 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: RR: How absolute should the setValue's contract be?

2008-12-01 Thread Isaac Truett

I share Ray's suspicion that this won't actually be much of a problem.

A checked exception is clearly (I hope) the wrong way to go. Checked
exceptions have their place, but they are a major pain in several
anatomical locations when declared in situations where the vast
majority of the time they cannot occur. On the other hand, unchecked
exceptions for inputs that are unacceptable are quite normal
(ArrayIndexOutOfBoundsException comes to mind). Nulls even have their
own exclusive exception for unacceptability. Throwing exceptions like
those can be left up to the individual HasValue implementation and
developers will be accustomed to seeing and handling them.

I think Ian's idea of a read-only interface is interesting, but not
really on topic. Perhaps it deserves its own thread?


On Mon, Dec 1, 2008 at 5:50 PM, Emily Crutcher [EMAIL PROTECTED] wrote:
 As many of you know, we have started down the path of making our form
 widgets implement HasValue. A question that has come up is: Should widgets
 be able to chose what values the widget accepts (i.e. setValue(null) for a
 text box or a bounded integer range for a select box) without throwing
 runtime exceptions?

 So, for instance, assuming we allow setValue(null) in some cases and not
 others:

 HasValueDate dateBox = new DateBox();
 HasValueString hasValue2 = new TextBox();

 // This clears the date box.
 hasValue1.setValue(null);

 // This throws an illegal argument exception.
 hasValue2.setValue(null);


 The HasValue interface becomes a lot more difficult to implement if we
 insist that all non-null values are supported, it becomes slightly harder to
 use if we do not.

 So, which contract should we enforce?


 Proposal 1)
 setValue() gives no guarantee about whether a specific value is valid.
 Users must know the underlying widget is in order to safely use the HasValue
 interface.

 Proposal 2)
 setValue() will accept all non-null values of a specific type as valid
 input. In order to implement this, we will have to introduce HasClearValue
 to support clearing a widget.

 ListBox, for instance, would not be able to implement HasValueString, as
 not all strings would be valid inputs.






 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Don't forget CachedTableModel.clearCache()

2008-11-23 Thread Isaac Truett

 If TableModel had an abstract clearCache method, I could make:

 myPagingGrid.getTableModel().clearCache();
 myPagingGrid.gotoPage(0, true);

 That would be more clean imho.

But it wouldn't, you see, because not all TableModels have caching.
You're trying to move a method higher up the inheritance chain where
it doesn't belong. The fact that your PST uses a caching TableModel is
an implementation detail of your application. You should extend or
encapsulate PST and your TableModel and provide/override a method in
that new object that handles clearing the cache before refreshing the
page.


On Sat, Nov 22, 2008 at 8:00 PM, Geraldo Lopes [EMAIL PROTECTED] wrote:

 Hi,

 I'm making a crud application that uses PagingScrollTable. It consists
 of a paging grid and a form  that reflects the current selected row. I
 use the form to make query by example, so I start with a group of
 values and depending on the search I need to populate the grid with
 completely different set of values. After the user click the search
 button I was trying to reload the values with :

 myPagingGrid.gotoPage(0, true); // true to force reload.

 I was getting strange results, with values of the last search being
 mixed with the ones of the current search.

 My mistake was I'm using CachedTableModel, that encapsulate my real
 table mode and it was keeping values from the last search around.

 final CachedTableModelCliente cachedTableModel = new
 CachedTableModelCliente(tableModel);

 So cachedTableModel.clearCache() before myPagingGrid.gotoPage(0, true)
 solved the problem.

 Just wondering:

 CachedTableModel extends MutableTableModel which extends TableModel,
 and PagingScrollTable points to TableModel, so I can't invoke clear
 cache via PagingScrollTable. Instead I have  to pass a instance to
 PagingScrollTable and CachedTableModel to be able to:

 cachedTableModel.clearCache();
 myPagingGrid.gotoPage(0, true);

 If TableModel had an abstract clearCache method, I could make:

 myPagingGrid.getTableModel().clearCache();
 myPagingGrid.gotoPage(0, true);

 That would be more clean imho.

 Thanks for the marvelous work you are doing.

 Geraldo Lopes





 


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



[gwt-contrib] Re: RR: Adding PopupPanel.showBelow

2008-11-19 Thread Isaac Truett

On Wed, Nov 19, 2008 at 10:37 AM, Emily Crutcher [EMAIL PROTECTED] wrote:


 On Wed, Nov 19, 2008 at 10:08 AM, Isaac Truett [EMAIL PROTECTED] wrote:

 Seems like this would be useful for other orientations -- showAbove,
 showBefore, showAfter and combinations for easily positioning popups

 We were not planning on it, because the show below case is by far the most
 useful.  However, we should also not box ourselves into corners, so what  if
 we renamed the method to showRelativeTo(UIObject object), with the javadoc
 saying that it, by default shows below. Then, if we do decide to eventually
 introduce orientations we would have two methods:

 // defaults to showing the popup below
 showRelativeTo(UiObject object)

 // specify default.
 showRelativeTo(UiObject object, Orientation)


Sounds good to me.


 at the corners of target. With that in mind, would this be the first
 of 8 different methods for relative positioning of popups or would a
 showRelativeTo(UIObject, Orientation) method be better to avoid method
 proliferation?

 Also, hideOnWindowResize seems unrelated to the showing of the popup.
 Was it part of the API in DropDownPanel for reasons other than
 convenience?

 It was there for convinience, as, in general, if you are relatively
 positioning a popup under a widget, you often want to close it on window
 resize.   However, the tricky code is the showRelativeTo, if we end up
 duplicating the hiding of the popup in a couple of places, that is less of a
 problem, so we can take the boolean out.


I have a few general-purpose Listener implementations such as
HoverListener that applies a style onMouseOver and EnterKeyListener
that executes an arbitrary Command when the enter key is pressed. I've
considered suggesting such things for GWT/Incubator but thought it
would be seen as too trivial, or better suited to a third-party
library. Perhaps such a generic HideOnWindowResizeListener/Handler
implementation would be useful if this is going to be found commonly
in GWT code. It could be an impl package class if supporting it as
public API is undesirable.



 On Wed, Nov 19, 2008 at 9:58 AM, Emily Crutcher [EMAIL PROTECTED] wrote:
  We are starting to migrate some of the functionality from DropDownPanel
  in
  incubator to PopupPanel.
 
  Therefore, we are proposing to add the following method to PopupPanel.
  It
  will be used by SuggestBox and DateBox:
 
   /**
 * Normally, the popup is positioned directly below the relative
  target,
  with
 * its left edge aligned with the left edge of the target. Depending
  on
  the
 * width and height of the popup and the distance from the target to
  the
 * bottom and right edges of the window, the popup may be displayed
  directly
 * above the target, and/or its right edge may be aligned with the
  right
  edge
 * of the target depending upon where it fits.
 *
 * @param target the target to show the popup below
 * @param hideOnWindowResize hide the popup if the window is resized
 */
public final void showBelow(final UIObject target,
final boolean hideOnWindowResize) {
  ...
   }
 
  --
  There are only 10 types of people in the world: Those who understand
  binary, and those who don't
 
  
 





 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: RR: Code Review, copies LazyPanel to 1.6 from incubator

2008-11-19 Thread Isaac Truett

 1. I don't like the fact that it's a panel, inheriting a useless list and
 extra API, and find myself wishing for, say, LazyComposite instead. Is there
 any particular reason it wasn't written that way originally?

I agree that a Composite seems more flexible. In fact, I've been
toying with something even more abstract, using an Initializable
interface, InitializableComposite, and InitializationEvent. It might
be overkill; I don't have a really compelling use case so far.


On Wed, Nov 19, 2008 at 11:50 AM, Ray Ryan [EMAIL PROTECTED] wrote:
 Here's the bulk of the work introducing LazyPanel. I'll send a follow up
 patch that reworks ShowCase to use it soon.
 You'll note that the javadoc references an example that doesn't exist yet.
 It's written, but I'll send a separate patch when it's been tested.
 Issues:
 1. I don't like the fact that it's a panel, inheriting a useless list and
 extra API, and find myself wishing for, say, LazyComposite instead. Is there
 any particular reason it wasn't written that way originally?
 2. I chatted with jlabanca, and we think it would be a good idea to tweak
 DisclosurePanel so that it calls setVisible(true) on its wrapped children
 before exposing them, to make it LazyPanel friendly the same way that
 DeckPanel and StackPanel already are.
 rjrjr

 


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



[gwt-contrib] Re: RR: Code Review, copies LazyPanel to 1.6 from incubator

2008-11-19 Thread Isaac Truett

Your justification for LazyPanel came in as I was replying and I agree
completely. I was actually  musing on my initialization interface and
event idea being unnecessary.



On Wed, Nov 19, 2008 at 12:36 PM, Emily Crutcher [EMAIL PROTECTED] wrote:


 On Wed, Nov 19, 2008 at 12:03 PM, Isaac Truett [EMAIL PROTECTED] wrote:

  1. I don't like the fact that it's a panel, inheriting a useless list
  and
  extra API, and find myself wishing for, say, LazyComposite instead. Is
  there
  any particular reason it wasn't written that way originally?

 I agree that a Composite seems more flexible. In fact, I've been
 toying with something even more abstract, using an Initializable
 interface, InitializableComposite, and InitializationEvent. It might
 be overkill; I don't have a really compelling use case so far.


 I think the compelling use case is for a simple widget container, as what we
 really want to say is that I contain a widget that can be removed from me.


 


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



[gwt-contrib] Re: RR:GwtEventPreview

2008-11-11 Thread Isaac Truett

 Can you think of any other relevant use cases?

4. Uncaught exception in onGwtEventPreview().


On Tue, Nov 11, 2008 at 10:25 AM, Emily Crutcher [EMAIL PROTECTED] wrote:
 The naming was mimicking the EventPreview  interface we have for the
 underlying native events. Don't mind changing it, but it seems like
 the consistency is nice.
 I think the testing should be fairly trivial as we have three use cases.

 no event preview set on a handler manager.
 an event preview set on a handler manager that returns false
 an event preview set on a handler manager that returns true

 Can you think of any other relevant use cases?  I'll wait until after the
 kids are asleep tonight to implement, so if any of you can think of any
 objections throughout the day, please pipe up!  Especially any reason  that
 would lead us to believe that his is not the canonical solution we want to
 implement.



 On Tue, Nov 11, 2008 at 10:11 AM, Ray Ryan [EMAIL PROTECTED] wrote:

 It's fine with me if the trivial amount of time it will take to add
 includes time for test coverage.
 On naming, how about GwtEventPreviewer and setEventPreviewer.
 rjrjr
 On Tue, Nov 11, 2008 at 6:37 AM, Emily Crutcher [EMAIL PROTECTED] wrote:

 I've managed to convince myself that it would be a trivial amount of work
 to introduce a GwtEventPreview interface into the events package and that
 the change would be a good one.  In specific we would have:

 public interface GwtEventPreview {
 boolean onGwtEventPreview(GwtEvent event);
 }

 and, in HandlerManager:

 public void setGwtEventPreview(GwtEventPreview preview)


 Then, in the final fireEvent method, if a preview has been installed, the
 event is routed through the preview first and is only fired if the preview
 returns true.
 Can anyone think of any problems with this logic,  any reason this change
 would take more then a few minutes to create, or any potentially better
 solutions which we might want to use instead?  As we can certainly wait
 until GWT 2.0 to introduce something like this if we can think of
 any conceivable objections.

 Cheers,
 Emily




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




 --
 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
-~--~~~~--~~--~--~---



[gwt-contrib] Re: Turning off runtime checks

2008-11-11 Thread Isaac Truett

 I'm curious what things you're referring to here. Generally, I think we're
 pretty open to more checks in hosted mode. As an example, hosted mode always
 runs with assertions enabled.

More assertions are exactly what I've been hoping for. The one case
that's stuck with me was issue 2365. As I understand it, those
assertions (and the check method, if only called in assertions) will
all be compiled away, so there's no size or performance penalty in web
mode.



On Tue, Nov 11, 2008 at 10:43 AM, Bruce Johnson [EMAIL PROTECTED] wrote:
 On Tue, Nov 11, 2008 at 10:38 AM, Isaac Truett [EMAIL PROTECTED] wrote:

  We've been kicking around the idea of an unsafe but fast compile for
  exactly this reason.

 I always thought the compile was unsafe already.

 Only for things that are truly unaffordable, like null checks on every
 object access.


  I've even suggested adding more hosted mode-only checks
 and been rejected because of the cost of such runtime validations.

 I'm curious what things you're referring to here. Generally, I think we're
 pretty open to more checks in hosted mode. As an example, hosted mode always
 runs with assertions enabled.

 


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



[gwt-contrib] Re: Turning off runtime checks

2008-11-11 Thread Isaac Truett

 We've been kicking around the idea of an unsafe but fast compile for
 exactly this reason.

I always thought the compile was unsafe already. Hasn't the GWT
philosophy been to perform type safety/bounds/null checks only in
hosted mode, if at all? Are there many such checks currently left in
compiled code? I've even suggested adding more hosted mode-only checks
and been rejected because of the cost of such runtime validations.



On Tue, Nov 11, 2008 at 10:30 AM, Scott Blum [EMAIL PROTECTED] wrote:
 We've been kicking around the idea of an unsafe but fast compile for
 exactly this reason.
 OTOH, there are a couple of things we could do to make the type checks
 faster even in the short term:
 1) Do actual null tracking so as to omit the null check part in many cases.
 2) Get away from using typeIdArray in favor of having cast information
 accessible directly off the object, which should be faster.
 3) Make sure it's inlined in all cases.

 On Tue, Nov 11, 2008 at 2:14 AM, Ray Cromwell [EMAIL PROTECTED] wrote:

 Heads up guys,

 I just profiled my app trying to squeeze every last drop of
 performance out for speedups on the iPhone which has slow Javascript,
 and I noticed that the canCastUnsafe/dynamicCast functions are
 collectively eating up 8.5% of the total runtime. It seems that the
 sole purpose of dynamicCast() is to throw a ClassCastException where
 the JVM would, but in production web-deployment mode, I would honestly
 prefer the option of having these checks omitted. Yes, there are some
 cases where throwing the exception would give the end user a better
 error message, but if the user is able to reproduce incorrect
 behavior, I think I would prefer to direct them to a debug
 build/permutation which has the checks. It seems the major place where
 this could trip up legitimate code is if someone was triggering CCEs
 on purpose and expecting to catch them with an exception handler.

 The main reason these checks are being inserted is because I switched
 from using a custom collection, to a ListFoo, and the compiler
 appears to be unable to use the generic type information of the JField
 to determine that the cast is unneccessary.

 Anyway, the question for discussion is, should the compiler have an
 -O2 mode which eliminates range checks, runtime cast checks, etc

 -Ray




 


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



[gwt-contrib] Review request: JSE (Invalid argument) in AbstractScrollTable

2008-11-10 Thread Isaac Truett

John,

I wanted to run this one-liner by you before committing. I'm seeing
the JSE below in hosted mode when the body of my PagingScrollTable is
empty and has 0 height. The headerHeight is positive and (totalHeight
- headerHeight - footerHeight) comes out to a negative number. The
patch following the stacktrace fixes the problem.

Thanks,
Isaac


[ERROR] Uncaught exception escaped
com.google.gwt.core.client.JavaScriptException: (Error): Invalid argument.
 number: -2147024809
 description: Invalid argument.
at com.google.gwt.dom.client.Style$.setProperty$(Native Method)
at com.google.gwt.user.client.DOM.setStyleAttribute(DOM.java:1201)
at 
com.google.gwt.gen2.table.client.AbstractScrollTable.resizeTablesVerticallyNow(AbstractScrollTable.java:1375)
at 
com.google.gwt.gen2.table.client.AbstractScrollTable$1.execute(AbstractScrollTable.java:614)
at 
com.google.gwt.user.client.CommandExecutor.doExecuteCommands(CommandExecutor.java:311)
at 
com.google.gwt.user.client.CommandExecutor$2.run(CommandExecutor.java:206)
at com.google.gwt.user.client.Timer.fireImpl(Timer.java:164)
at com.google.gwt.user.client.Timer.fireAndCatch(Timer.java:150)
at com.google.gwt.user.client.Timer.fire(Timer.java:142)



Index: src/com/google/gwt/gen2/table/client/AbstractScrollTable.java
===
--- src/com/google/gwt/gen2/table/client/AbstractScrollTable.java   
(revision
1195)
+++ src/com/google/gwt/gen2/table/client/AbstractScrollTable.java   
(working copy)
@@ -1395,7 +1395,7 @@
   DOM.setStyleAttribute(footerWrapper, height, footerHeight + px);
 }
 DOM.setStyleAttribute(dataWrapper, height,
-(totalHeight - headerHeight - footerHeight) + px);
+Math.max(totalHeight - headerHeight - footerHeight, 0) + px);
 DOM.setStyleAttribute(dataWrapper, overflow, hidden);
 DOM.setStyleAttribute(dataWrapper, overflow, auto);
 scrollTables(true);

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



[gwt-contrib] Re: FYI: code reviews done through our googlecode project will CC this list.

2008-11-06 Thread Isaac Truett

I'm guessing the answer is no but I'll throw this out there...

Is it possible to have the code review comment mails contain the
comment history for each line of code that is commented on? Right now
the comments in the emails are out of context. When each email has
comments for several different lines, and each comment responds to a
previous comment on that line, it's hard to follow the thread of
conversation. When this was all done directly via email, the comments
were easy to follow as everybody commented inline in the body of the
previous email.

An alternative approach might be to have each comment in the email
contain a link to the comment thread in the full review page.



On Wed, Nov 5, 2008 at 2:19 PM, Kelly Norton [EMAIL PROTECTED] wrote:

 I just wanted people to be aware of this. I've changed the settings in
 our project to always CC the code review comments to this list.

 /kel

 --
 If you received this communication by mistake, you are entitled to one
 free ice cream cone on me. Simply print out this email including all
 relevant SMTP headers and present them at my desk to claim your creamy
 treat. We'll have a laugh at my emailing incompetence, and play a game
 of ping pong. (offer may not be valid in all States).

 


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



[gwt-contrib] Re: FYI: code reviews done through our googlecode project will CC this list.

2008-11-06 Thread Isaac Truett

The most useful information I found was buried a few layers under the email:

 Details are at
 http://code.google.com/p/google-web-toolkit/source/branch?spec=issue3083branch=%2Fbranches%2F1_6_clean_events

1.  Follow this link at the top of the email.

 Comment by [EMAIL PROTECTED], Today (10 minutes ago)
 4 line-by-line comments

2. Expand this section at the bottom of the page.

 /branches/1_6_clean_events/user/src/com/google/gwt/core/client/impl/RawJsMapImpl.java
r3958   line 31:

3. Follow this link to the source file with comments in line.

I agree with John that the contents of the page at step #1 aren't very
useful (to me, at least). I would instead include in the email all of
the links into the code itself, as in step #3 -- that's where I need
to be understand things.

Now, I haven't actually participated in this as a reviewer, so maybe
that first link makes more sense for someone in that role.

On Thu, Nov 6, 2008 at 11:22 AM, John Tamplin [EMAIL PROTECTED] wrote:
 On Thu, Nov 6, 2008 at 12:12 PM, Isaac Truett [EMAIL PROTECTED] wrote:

 Is it possible to have the code review comment mails contain the
 comment history for each line of code that is commented on? Right now
 the comments in the emails are out of context. When each email has
 comments for several different lines, and each comment responds to a
 previous comment on that line, it's hard to follow the thread of
 conversation. When this was all done directly via email, the comments
 were easy to follow as everybody commented inline in the body of the
 previous email.

 I agree -- the current email that is sent is nearly worthless for trying to
 follow if you aren't actually involved in the review.  I think it would
 actually be better to just get email saying review comments have been made
 and a link to where you can read them (ie, just the top part of the current
 email, so I am not tempted to waste time reading them).  The real problem is
 that even once you get to the web site, the comments are not arranged
 usefully, as they are still broken down by who made the comment rather than
 files with comments.

 --
 John A. Tamplin
 Software Engineer (GWT), Google

 


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



[gwt-contrib] Re: Simple, safe and restricted?

2008-11-04 Thread Isaac Truett

Daniel,

Would accessors to interfaces meet your needs? Is there a method on
TextBox that you need access to that isn't defined in an interface?



On Mon, Nov 3, 2008 at 1:23 PM, Isaac Truett [EMAIL PROTECTED] wrote:
 Exposing the guts of a widget to developers might be dangerous, but if
 you want to break the widget or the underlying dom you may find ways
 to do it anyway.

 Sure. I just think you should keep that internal access as narrow in
 scope as possible. Public API is not only an invitation to meddle, but
 a commitment to an API contract.

 What about declaring risky members protected so that developers need
 at least to have some knowledge about subclassing in order to access
 them?

 I think protected access to members is better, but I'd suggest leaving
 the members themselves private and adding protected getters. And
 either make the getter final or have the parent class always call
 getFoo() instead of referencing the private member foo. That way if
 subclasses can override getFoo() it should still work as expected.

 I think it is the worst solution to force people to access private
 members/methods by patching the sources and replacing them based on
 classpath loading order.

 I think there will still be cases where things should remain private
 and difficult to access. Exposing a getTextBox() method, for example,
 means a commitment to always use a TextBox internally. Most of the
 time, that's probably okay. but if you can get away with just exposing
 methods to add listeners or  expose accessors to interfaces (protected
 HasValueString getHasValue(), for example), that leaves you the
 freedom to change the internals later without breaking API.



 On Mon, Nov 3, 2008 at 1:10 PM, dflorey [EMAIL PROTECTED] wrote:

 I want to move the discussion started in

 http://code.google.com/p/google-web-toolkit-incubator/issues/detail?id=174

 to a separate thread.
 I came across many situations where it was very annoying that members/
 methods of widgets have been declared private.
 Exposing the guts of a widget to developers might be dangerous, but if
 you want to break the widget or the underlying dom you may find ways
 to do it anyway.
 What about declaring risky members protected so that developers need
 at least to have some knowledge about subclassing in order to access
 them?
 I'm fine with public getters and setters, but as itruett mentioned it
 might be too easy to break the widget.
 I think it is the worst solution to force people to access private
 members/methods by patching the sources and replacing them based on
 classpath loading order.
 



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



[gwt-contrib] Re: Simple, safe and restricted?

2008-11-03 Thread Isaac Truett

 Exposing the guts of a widget to developers might be dangerous, but if
 you want to break the widget or the underlying dom you may find ways
 to do it anyway.

Sure. I just think you should keep that internal access as narrow in
scope as possible. Public API is not only an invitation to meddle, but
a commitment to an API contract.

 What about declaring risky members protected so that developers need
 at least to have some knowledge about subclassing in order to access
 them?

I think protected access to members is better, but I'd suggest leaving
the members themselves private and adding protected getters. And
either make the getter final or have the parent class always call
getFoo() instead of referencing the private member foo. That way if
subclasses can override getFoo() it should still work as expected.

 I think it is the worst solution to force people to access private
 members/methods by patching the sources and replacing them based on
 classpath loading order.

I think there will still be cases where things should remain private
and difficult to access. Exposing a getTextBox() method, for example,
means a commitment to always use a TextBox internally. Most of the
time, that's probably okay. but if you can get away with just exposing
methods to add listeners or  expose accessors to interfaces (protected
HasValueString getHasValue(), for example), that leaves you the
freedom to change the internals later without breaking API.



On Mon, Nov 3, 2008 at 1:10 PM, dflorey [EMAIL PROTECTED] wrote:

 I want to move the discussion started in

 http://code.google.com/p/google-web-toolkit-incubator/issues/detail?id=174

 to a separate thread.
 I came across many situations where it was very annoying that members/
 methods of widgets have been declared private.
 Exposing the guts of a widget to developers might be dangerous, but if
 you want to break the widget or the underlying dom you may find ways
 to do it anyway.
 What about declaring risky members protected so that developers need
 at least to have some knowledge about subclassing in order to access
 them?
 I'm fine with public getters and setters, but as itruett mentioned it
 might be too easy to break the widget.
 I think it is the worst solution to force people to access private
 members/methods by patching the sources and replacing them based on
 classpath loading order.
 


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



[gwt-contrib] Re: inability to set stylename on Panel cells

2008-10-31 Thread Isaac Truett

I don't know what a panel cell is but if you're talking about table
cells, try a CellFormatter.

And you'll reach a wider audience if you post development questions on
the developer forum instead of the contributor forum.

On Fri, Oct 31, 2008 at 8:47 AM, Charles Fry [EMAIL PROTECTED] wrote:

 I haven't been able to figure out any way to set style names on panel
 cells, which in my current situation is problematic. Am I missing
 something, or is that a missing feature?

 Charles

 


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



  1   2   >