File resources in the base theme, why?

When I look in the interfaces of the base theme (com.sencha.gxt.theme.base) there's a lot of resources that belong in the Blue theme, since they're implementation specific IMHO. Sometime when an appearance needs to be overridden, a ton of unwanted code needs to added, like in the following example:

What if you do not have any images on your newly implemented theme? Then the above code is obsolete, boilerplate code that has nothing to do with the theme implementation itself ( unless I'm horribly wrong). In fact, to my opinion, the CSS classes don't belong there either.

I've gone over the base theme (revision #2713), and there's 173ImageResources that should be in the Blue theme. Plus at minimum another 45CSS files.

My question was, why are these resources still in the base theme?
Additionally, will these interfaces get refactored? If yes, when, if no, why not?

I as well am doing something similar to this and this is most likely why I can't get my build to work. I have a completely seperate GXT project that is simply a style project, and I have duplicated much of the Blue theme. Yet maven seems to be throwing errors like this:

The Base module contains both "base" classes that are intended to be extended by color specific themes, such as Blue and fully implemented "default" classes that are complete as is. So it is expected to see resources such as images and CSS files in the base module.

If an Appearance has "Base" in its name then it is abstract and must be extended. If an Appearance has "Default" in its name, it is concrete and fully implemented. We reviewed all appearance classes to ensure the standard was used in all cases. These changes went in the commit referenced below.

For example, our buttons are the same for both the Blue and Gray theme. So in this case, ButtonCellDefaultAppearance, which is in the Base module, is not extended by the color specific themes. We choose to do this rather than "duplicate" resources and code in each color specific theme.

In your example code, you are implementing TableFrameResources and mention you do not want to use images with TableFrame. This is the wrong approach as TableFrame is specifically designed to work with images. You would be better off creating your own frame type not based on TableFrame. A side note, we plan to add Frame types that use CSS rounded corners and gradients rather than images for browsers that support those features.

After reviewing your post and source code we realized we had some issues with the use of frames in our appearances. Appearances were tightly bound to certain concrete Frame types, not allowing other Frame types to be used.

We did a high level refactor of Frames and their usage throughout the library. The changes went in SVN rev 2725. The code is much more flexible and will allow you to choose to use any Frame type any place Frames are used. For example, you could use a custom non-image based Frame type with buttons, panels, windows, etc. You will never be required to implement TableFrameResources.

Please take a look at my comments and then the code. Hopefully, this post and the code changes will meet your requirements. Let us know how it goes.