But, your requirement #3: 3. allow components outside of the framework to provide their own mappings
... is a more general thing that's a major whole in skinning. There's no simple way for a component author to register additional styles to merge into skins. I think that's almost the #1 most important feature that could be added to skinning. -- Adam On 8/3/06, Adam Winer <[EMAIL PROTECTED]> wrote:
As a first pass, how about a plain Java API, provided by the Skin? I think that architecturally it's important to first figure out where the Java code lives, than think about XML configuration. I'm not totally convinced that your requirement #2 is necessary... -- Adam On 8/3/06, Catalin Kormos <[EMAIL PROTECTED]> wrote: > Hi there, > > It's been mentioned already that the mapping from public style selector > names, which do not contain html, into trinidad's internal style selector > names, would need to be moved outside of the FileSystemStyleCache class. I > would like to ask you guys about this, as this is one of the main tasks that > should be resolved for a more general skinning module. > > The requirements i can see are the following: > > 1. mapping should be transparent, preferably no changes on the > StyleProvider API regarding this > 2. mapping configuration made outside of the code > 3. allow components outside of the framework to provide their own > mappings > > On a short basis, my proposition is inspired by how Facelets taglibs are > defined and loaded (for those who are familiar with this). > > Basicaly have a skinning selectors library file, in XML format, that will > declare all the possible selector names and their internal names (internal > names could be optional). Loading this type of files will be done > automaticaly, by searching after files that have an extension like > *.selectorslib.xm by scanning the /meta-inf folder in the jars. > > The format of a *selectorslib.xml file could be something like: > <skinning-selectors> > <namespace>af</namespace> > <selector> > <name>panelTabbed::tab-link</name> > <internal-name>panelTabbed::tab A</internal-name> > </selector> > .............. > </skinning-selectors> > > This will also allow more transparency on the possible selector names for a > component, as there can be as many * selectorslib.xml files as components, > or just one big file declaring them all. > > I'm more like scratching the surface for now, looking forward to your > comments. > > Regards, > Catalin > >
