[
https://issues.apache.org/jira/browse/TRINIDAD-1453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12699377#action_12699377
]
Matthias Weßendorf commented on TRINIDAD-1453:
----------------------------------------------
the thread is archived here:
http://www.mail-archive.com/[email protected]/msg37896.html
> need a public API to get the CSS style properties on the server in our
> renderers.
> ----------------------------------------------------------------------------------
>
> Key: TRINIDAD-1453
> URL: https://issues.apache.org/jira/browse/TRINIDAD-1453
> Project: MyFaces Trinidad
> Issue Type: New Feature
> Reporter: Jeanne Waldman
> Assignee: Jeanne Waldman
>
> This information was discussed in email thread [TRINIDAD] [API] Styles.java
> and getSelectorStyleMap()
> *Overview*
> We need a public API to get the CSS style properties (e.g., color: red) on
> the server in our renderers. We work around the lack of apis by using
> skinning custom style properties instead (e.g., -tr-color: red) because
> skinning style properties are stored on the server as an attribute of a Skin
> Object. This is definitely a kludgy workaround and makes it harder for a user
> to skin.
> We will also need the APIs for an emailable page mode we are implementing
> soon so that we can limit the css that we write in the page to only the css
> needed by the components on the page. Email cannot handle external css files.
> In summary, the APIS we need will do this:
> 1) For a given selector, return its style definition
> 2) For a given simple (no compound selectors) selector like "af|inputText",
> return all of the style definitions that it is used in like "af|foo
> af|inputText", "af|inputText::content", etc.
> *API Proposal*
> We will assume the style map we get from the RenderingContext will contain
> only the styles for the StyleContext, that is, the styles have already been
> 'resolved'. Therefore there will be no need to pass in the StyleContext
> parameter when we get styles from the style map.
> *Public APIs*
> *Style*
> This class exists, but will need to be made public and only the public parts
> of it moved to the public api, and the rest stay with the private
> implementation.
> public Map<String, String> getProperties();
> public String toInlineString();
> *Styles*
> A new class that wraps 2 methods. This class is similar to the current
> StyleMap private class which isn't a Map at all. I plan to delete StyleMap
> and use Styles instead.
> Map<Selector, Style> getSelectorStyleMap()
> List<String> getSelectorsForSimpleSelector(String selector) uses resolved
> styles from StyleProvider.
> String getNativeSelectorString(Selector selector) converts the selector into
> a string that is valid for the browser.
> *Selector*
> A new class that encapsulates the selector string into a selector object to
> make the getSelectorStyleMap API clearer and to have a place to add features
> to the Selector if it is needed.
> static createSelector
> private constructor
> *RenderingContext*
> already exists
> add
> public Styles getStyles();
> *Private APIs*
> *CoreRenderingContext*
> already exists
> Implements the new method on RenderingContext
> *StyleContext*
> This class already exists and is private.
> public Styles getStyles();
> *StyleContextImpl*
> already exists
> add
> getStyles() calls getStyleProvider().getStyles(this);
> *StyleProvider*
> already exists
> add
> public Styles getStyles(StyleContext context); // resolves the styles first
> *FileSystemStyleCache* extends StyleProvider
> already exists
> add
> public Styles getStyles(StyleContext)
> static inner class StylesImpl which takes a resolved styles in its
> constructor.
> this is where the work is done to create the selectorStyleMap.
> *StyleMap*
> remove. It's not a map for one thing and it is such old code and it isn't
> being used at all so it is cluttering the api.
> *API Usage:*
> Styles styles = renderingContext.getStyles(); // renderingContext contains
> a styleContext
> Map<Selector, Style> selectorStyleMap = styles.getSelectorStyleMap();
> Style style = selectorStyleMap.get(Selector.createSelector("af|graph"));
> String color = style.getProperties("color");
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.