Thursday, August 30, 2012

Re: Request for change of access control of CellTree.BasicStyle

On Thursday, August 30, 2012 4:08:42 AM UTC-4, Thomas Broyer wrote:

On Wednesday, August 29, 2012 9:15:43 PM UTC+2, Thad wrote:
On Wednesday, August 29, 2012 12:29:07 PM UTC-4, Thomas Broyer wrote:

On Wednesday, August 29, 2012 5:42:44 PM UTC+2, Thad wrote:
Maybe I'm not understanding how resources are used or applied, but that is not working for me. If I try the following interface, the resulting CellTree looks like CellTree.Style, not BasicStyle:

  interface TreeBasicResources extends CellTree.Resources {
    @Source(value = { CellTree.Style.DEFAULT_CSS, 
        "com/google/gwt/user/cellview/client/CellTreeBasic.css" })
    CellTree.Style cellTreeStyle();
  Cell Tree myTree = new CellTree(treeModel, null, 
          GWT.<TreeBasicResources> create(TreeBasicResources.class));

You have to create an interface that extends CellTree.Style and use that inerface as the return type of the overridden cellTreeStyle().

In searching the list, I don't see this issue continued in the list after it was marked "AsDesigned". I may come back to this at some point. My current app has one CellTable, one CellTree, and one CellList. However I can see needing several CellTables, each with a very different style--one for database records, one for a to-do list, one with a file hex dump, etc.

See comment #3 (and comment #5 for some sample code, but BasicResources/BasicStyle is the same)

Also, BasicStyle does not use CellTree.Style.DEFAULT_CSS (that's the whole reason it exists in the first place!)

(that being said, BasicStyle not being public is probably an oversight)

And if it did work, how then to add my change? Extend this interface with another? (All I want is cellTreeItem padding-top/-bottom to be 0px).

Add a CSS file and list it in the @Source annotation.
In your CSS file, only include the cellTreeItem definition. And if you override rules, make sure you list your file after CellTreeBasic.css: CSS cascading rules apply when processing CssResources.

Interesting. Two approaches that I would think would give me the same result look different. See the two screenshots from Firefox (v14 in Linux). The first, tree-override-DEFAULT.png, uses this code:

  interface TreeResources extends CellTree.Resources {
    @Source({ CellTree.Style.DEFAULT_CSS, "CellTreePatch.css" })
    CellTree.Style cellTreeStyle();

where CellTreePatch.css is ./com/google/gwt/user/cellview/client/CellTree.css copied and modified.

Given the stylesheets will be merged, copying is probably not a good idea. Or use your CellTreePatch only.
This is what I started with after realizing I couldn't override BasicStyle. (I'll add that I'm happy with visual result. Now I'm trying to understand what's going on as I expect to be using GWT for a long time.)

@Source("com/google/gwt/user/cellview/client/CellTreeBasic.css", "CellTreePatch.css")

(where CellTreePatch only contains styles to be *added* to CellTreeBasic)
The second screen shot, tree-extend-CellTree.Style.png, packs the cells much closer, although CellTreePatch.css is the same:

  public interface ScreenCellTreeStyle extends CellTree.Style {}
  interface TreeResources extends CellTree.Resources {
    ScreenCellTreeStyle cellTreeStyle();

Why wouldn't they be the same?

It depends what you changed in the CSS compared to CellTree.Style.DEFAULT_CSS. Keep in mind the stylesheets are merged when you specify more than one as argument to the @Source annotation.
And use your browser's developer tools to debug the CSS (and possibly use <set-configuration-property name="" value="pretty" /> when debugging)
For instance, if you simply removed the lines with padding/margin, then the ones CellTree.Style.DEFAULT_CSS would still be there (in the tree-override-DEFAULT case). As the doc says, there might be something wrong (in your case) with merging the stylesheets; you can temporary disable merging to check whether it makes a difference:

Also, you're not only changing the @Source value, but also the return type of the cellTreeStyle() method: keep using a specific interface as the return type (ScreenCellTreeStyle) and play only with the @Source, unless you really understand what you're doing (more info in comment #3 of issue 6144)
Also, if CellTreePatch.css is reduced to only the cellTreeItem definition, the app crashes when trying to draw the tree (apparently because the other settings aren't present).

In the tree-extend-CellTree.Style case, that's expected. It shouldn't be the case in the tree-override-DEFAULT case.

Thank you, Thomas. As always, you've been a great help--less code, my CellTree now looks even better, and Firebug shows a much cleaner looking CSS. I'm bookmarking Issue #6144 for future reference. 

You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To view this discussion on the web visit
To post to this group, send email to
To unsubscribe from this group, send email to
For more options, visit this group at

No comments:

Post a Comment