This is just a quick post in the hope that I can help others avoid hours debugging an “issue” I recently had. I was working through a new application that I’m building using the new MVP framework in GWT 2.1, and for the life in me couldn’t understand why the LayoutPanel
I was adding to the page was not invisible. The code could be as simple as this.
I could clearly see it was added to the DOM when I poked around with Web Inspector, but it just wasn’t visible. I made sure my HTML doctype was set to standards mode. Dumbfounded, I went to the GWT documentation on Panels, and sure enough, found the RootLayoutPanel
. *LayoutPanel
s need to be added to the RootLayoutPanel
, not the RootPanel
.
Works perfectly.
I found this hidden/invisible issue comes up with most *LayoutPanel
panels added to RootPanel
. The same effect is experienced when you stick these panels into an HTMLPanel
, as is customary when writing UiBinder code.
Of course, the previously mentioned GWT documentation clearly states at the end.
When should I not use layout panels?
The panels described above are best used for defining your application’s outer structure — that is, the parts that are the least “document-like”. You should continue to use basic widgets and HTML structure for those parts for which the HTML/CSS layout algorithm works well. In particular, consider using UiBinder templates to directly use HTML wherever that makes sense.
The documentation points out the misuse of *LayoutPanel
. However, I was thinking a good usability feature would be to display a warning that the *LayoutPanel
is being abused. This warning should probably be in Development Mode. If you’d like to see something along those lines, please star the issue I created