[API Review] RT-21094 - Styleable interface

David Grieve david.grieve at oracle.com
Tue Jan 22 14:15:27 PST 2013


The JIRA is public now, thanks for pointing that out. 

The getCssMetaData() API should be 
<S extends Styleable> List<CssMetaData<S, ?>> getCssMetaData();

On Jan 22, 2013, at 4:42 PM, Tom Schindl <tom.schindl at bestsolution.at> wrote:

> Hi,
> 
> The problem I see with this is that CssMetaData accepts 2 generic
> parameters but your API returns a RAW-Type, this looks bogus to me!
> 
> BTW the JIRA is not public.
> 
> Tom
> 
> Am 22.01.13 22:09, schrieb David Grieve:
>> http://javafx-jira.kenai.com/browse/RT-21094
>> 
>> There is a class in private implementation called Styleable which allows SceneBuilder to look at a Tooltip (for example) and get the info it needs for styling. What I'd like to do is make Styleable part of the public API _and_ have Node and PopupControl (there may be a couple of other controls) implement Styleable. From the CSS standpoint, Styleable contains the API that CSS needs to match selectors and set calculated values on properties.
>> 
>> By making Styleable public API, I can change CssMetaData from CssMetaData<N extends Node, V> to CssMetaData<N extends Styleable, V>. This is important to do now before the CSS API is fully baked so that we can, in the future, have Scene be Styleable. 
>> 
>> public interface Styleable { 
>> 
>>    /** 
>>     * The type of this {@code Styleable} that is to be used in selector matching. 
>>     * This is analogous to an "element" in HTML. 
>>     * (<a href=" http://www.w3.org/TR/CSS2/selector.html#type-selectors">CSS Type Selector</a>). 
>>     */ 
>>    String getType(); 
>> 
>>    /** 
>>     * The id of this {@code Styleable}. This simple string identifier is useful for 
>>     * finding a specific Node within the scene graph. While the id of a Node 
>>     * should be unique within the scene graph, this uniqueness is not enforced. 
>>     * This is analogous to the "id" attribute on an HTML element 
>>     * (<a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier">CSS ID Specification</a>). 
>>     * <p> 
>>     * For example, if a Node is given the id of "myId", then the lookup method can 
>>     * be used to find this node as follows: <code>scene.lookup("#myId");</code>. 
>>     * </p> 
>>     */ 
>>    String getId(); 
>> 
>>    /** 
>>     * A list of String identifiers which can be used to logically group 
>>     * Nodes, specifically for an external style engine. This variable is 
>>     * analogous to the "class" attribute on an HTML element and, as such, 
>>     * each element of the list is a style class to which this Node belongs. 
>>     * 
>>     * @see <a href="http://www.w3.org/TR/css3-selectors/#class-html">CSS3 class selectors</a> 
>>     */ 
>>   List<String> getStyleClass(); 
>> 
>>    /** 
>>     * The inline style. This is analogous to the "style" attribute of an 
>>     * HTML element.
>>     */ 
>>   String getStyle(); 
>> 
>>    /** 
>>     * Return the parent of this Styleable, or null if there is no parent. 
>>     */ 
>>    Styleable getStyleableParent(); 
>> 
>>    /** 
>>     * The CssMetaData of this Styleable 
>>     */ 
>>    List<CssMetaData> getCssMetaData(); 
>> 
>> } 
>> 
> 
> 
> -- 
> B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
> ------------------------------------------------------------------------
> tom schindl                 geschäftsführer/CEO
> ------------------------------------------------------------------------
> eduard-bodem-gasse 5-7/1   A-6020 innsbruck     fax      ++43 512 935833
> http://www.BestSolution.at                      phone    ++43 512 935834



More information about the openjfx-dev mailing list