CSS-Documentation for IDE-Usage

Tom Schindl tom.schindl at bestsolution.at
Fri Jul 6 10:52:18 PDT 2012


Hi,

Well for me the important thing is a meta format I can feed to my
IDE-Tooling which holds the following informations:
* property name
* validation information

I've been working on a long train drive 2 weeks ago on such a meta
format and translated fairly all informations found in the HTML-document
into my meta language (the grammer of the language is not yet able to
define all constructs in the document but we I'm not far way :-)

I've developed this using xtext-framework
(http://www.eclipse.org/Xtext/) which has the advantage that I also have
an editor with syntax highlighting, auto-completetion, ... in my Eclipse.

I'm not sure this is the same direction you are heading to - for me a
meta format be it XML, ... (I can easily provide you an
XML-Representation of the xtext-Spec I attached) is the important thing
I need to make my tooling cleverer.

Tom

Am 06.07.12 19:21, schrieb David Grieve:
> There is no such document, just the cssref html document. 
> 
> I would like, however, to get all of the tables and such that describe
> the css properties out of that document and into proper javadoc for the
> corresponding JavaFX properties - perhaps with an @css javadoc tag or an
> @css annotation. I'm not sure if that would hurt or help. 
> 
> On Jun 19, 2012, at 11:59 AM, Richard Bair wrote:
> 
>> Hi Tom,
>>
>> I don't think we have a structured document with this information, but
>> it sounds useful! David is on Vacation but he should be involved when
>> he gets back hopefully later this week or next week.
>>
>> Cheers
>> Richard
>>
>> On Jun 19, 2012, at 1:38 AM, Tom Schindl wrote:
>>
>>> Hi,
>>>
>>> Is there some structured text document one can use to teach IDEs hover
>>> documentation of CSS-Attribute, or do I need to extract those
>>> information from the published HTML-CSS-Documentation?
>>>
>>> My hope is that this document is generated from some more structured
>>> resource I can use in my Eclipse integration. If there's no such
>>> document, I'd like to contribute in creating such a meta-format and
>>> generate the HTML-Document from it. Any netbeans people here who'd like
>>> to work with me on this?
>>>
>>> Tom
>>>
>>> -- 
>>> 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
>>
> 
> <http://www.oracle.com>
> David Grieve | Principal Member of Technical Staff
> Mobile: +16033121013 <tel:+16033121013>
> Oracle Java Client UI and Tools
> Durham, NH 03824
> <http://www.oracle.com/commitment> Oracle is committed to developing
> practices and products that help protect the environment
> 


-- 
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


-------------- next part --------------
package javafx {
//	type boolean {
//		
//	},
	type t_number {
		DOUBLE
	},
	enumtype unit_symbols {
		'px', 'mm', 'cm', 'in', 'pt','pc','em','ex'
	},
	enumtype angle_symbols {
		'deg','rad','grad','turn'
	},
	type size {
			<t_number> | <length> | <percentage> 
	},
	type length {
		<t_number> [<unit_symbols>]?
	},
	type percentage {
		<t_number> '%'
	},
	type angle {
		<t_number> <angle_symbols>
	},
	type point {
		[ <length> <length> ] | [ <percentage> | <percentage> ]
	},
	type color_stop {
		<color> [ <percentage> | <length>]?
	},
	type uri {
		STRING
//		url ( [\"\']? <address> [\"\']? )
	},
	enumtype blur_type {
		'gaussian','one-pass-box','three-pass-box','two-pass-box'	
	},
	type effect {
		<dropshadow> | <innershadow> 
	},
	type dropshadow {
		<blur_type>
//		dropshadow( <blur_type> ',' <color> ',' <t_number> ',' <t_number> ',' <t_number> ',' <t_number> )		
	},
	type innershadow {
		<blur_type>
	},
	type font_family {
		STRING
	},
	type font_size {
		<size>
	},
	enumtype font_style {
		'normal','italic','oblique'
	},
	enumtype font_weight {
		'normal','bold','bolder','lighter',
		'100','200','300','400','500','600','700','800','900'
	},
	type font {
		[ <font_style> || <font_weight> ]? //<font_size> <font_family>
	},
	type paint {
		<color> | <linear_gradient> | <radial_gradient>
	},
	type linear_gradient {
		STRING
//NOT SUPPORTED		linear-gradient( [ [from <point> to <point>] | [ to <side-or-corner>], ]? [ [ repeat | reflect ], ]? <color-stop>[, <color-stop>]+) 
	},
	type radial_gradient {
		STRING
//NOT SUPPORTED		radial-gradient([ focus-angle <angle>, ]? [ focus-distance <percentage>, ]? [ center <point>, ]? radius [ <length> | <percentage> ] [ [ repeat | reflect ], ]? <color-stop>[, <color-stop>]+) 		
	},
	type color {
		<named_color> | <looked_up_color> | <rgb_color> | <hsb_color> | <color_function>
	},
	enumtype named_color {
		'aliceblue', 'antiquewhite' // ....
	},
	type looked_up_color {
		STRING
	},
	type rgb_color {
		STRING
	},
	type hsb_color {
		STRING
	},
	type color_function {
		STRING
	}
	package stage {
		Window {
			
		},
		PopupWindow extends Window {
		}
	}
	package scene {
		enumtype fx_cursor {
			'null',
			'crosshair',
			'default',
			'hand',
			'move',
			'e-resize',
			'h-resize',
			'ne-resize',
			'nw-resize',
			'n-resize',
			'se-resize',
			'sw-resize','s-resize',
			'w-resize',
			'v-resize',
			'text',
			'wait'	
		}
		
		/# 
		 # All attributes that can be applied to Nodes
		 #/
		Node {
			/#
			 # Some blurb about the blend mode
			 #/
			enum '-fx-blend-mode' default 'null' {
				/# 
				 # blurb about add
				 #/ 
				'add',
				'blue',     'color-burn',
				'color-dodge', 'darken',   'difference', 
				'exclusion',   'green',    'hard-light', 
				'lighten',     'multiply', 'overlay', 
				'red',         'screen',   'soft-light', 
				'src-atop',    'src-in',   'src-out',
	    			'src-over' 
			},
			'-fx-cursor' default 'null' {
				<fx_cursor> | <uri>   
			},
			boolean '-fx-focus-traversable' default false,
			/# 
			 # Opacity can be thought of conceptually as a postprocessing operation. 
			 # Conceptually, after the node (including its descendants) is rendered into an 
			 # RGBA offscreen image, the opacity setting specifies how to blend the offscreen 
			 # rendering into the current composite rendering. 
			 #/ 
			number '-fx-opacity' default 0d range 0d to 1d,
			/# 
			 # This is the angle of the rotation in degrees. 
			 # Zero degrees is at 3 o'clock (directly to the right). 
			 # Angle values are positive clockwise. Rotation is about the center. 
			 #/
			number '-fx-rotate' default 0d,
			/#
			 # scale about the center
			 #/
			unsigned number '-fx-scale-x' default 1l,
			/# 
			 # scale about the center
			 #/
			unsigned number '-fx-scale-y' default 1l,
			/#
			 # scale about the center
			 #/
			unsigned number '-fx-scale-z' default 1l,
			enum 'visibility' default 'visible' {
				'visible','hidden','collapse','inherit'
			},
			/#
			 # applies when the disabled variable is true
			 #/
			pseudoclass 'disabled',
			/#
			 # applies when the focused variable is true
			 #/
			pseudoclass 'focused',
			/#
			 # applies when the hover variable is true
			 #/
			pseudoclass 'hover',
			/#
			 # applies when the pressed variable is true
			 #/
			pseudoclass 'pressed',
			/#
			 # apples when the mnemonic affordance (typically an underscore) should be shown.
			 #/
			pseudoclass 'show-mnemonic'
		},
		
		Parent extends Node {
			  
		},
		
		Group extends Parent {
			
		}
		package image {
			ImageView extends Node {
				'-fx-image' default 'null' {
					<uri>
				} 
			}
		}
		package layout {
			enumtype bg_pos_1 {
				'left','center','right'
			},
			enumtype bg_pos_2 {
				'top','center','bottom'
			},
			enumtype bg_pos_3 {
				'center', 'center'
			},
			enumtype bg_pos_4 {
				'left' , 'right'
			},
			enumtype bg_pos_5 {
				'top' , 'bottom'
			},
			type bg_position {
				[[ <size> | <bg_pos_1> ] [ <size> | <bg_pos_2> ]?] | 
				[ [ <bg_pos_3> | <bg_pos_4> [<size>]? ] || [ <bg_pos_3> | <bg_pos_5> [<size>]? ]]
			},
			enumtype repeat_vals_1 {
				'repeat-x','repeat-y'
			},
			enumtype repeat_vals_2 {
				'repeat','space','round','stretch','no-repeat'
			},
			type repeat_style {
				[<repeat_vals_1> | <repeat_vals_2>]{1,2}
			},
			enumtype bg_size_1 {
				'auto','auto'
			},
			enumtype bg_size_2 {
				'cover','contain','stretch'
			},
			type bg_size {
				[ <size> | <bg_size_1> ]{1,2} | <bg_size_2> 
			},
			enumtype dash_style_1 {
				'none','solid','dotted','dashed'
			},
			type dash_style {
				<dash_style_1> //NOT SUPPORTED| segments( <t_number>, <t_number> [',' <t_number>]*) 
			},
			enumtype border_style_1 { 
				'centered','inside','outside'
			},
			type border_style {
				<dash_style> /*NOT SUPPORTED['phase' <t_number>]?*/ [<border_style_1>]?
	//NOT SUPPORTED			<dash-style> [phase <number>]? [centered | inside | outside]? [line-join [miter <number> | bevel | round]]? [line-cap [square | butt | round]]?
	// ---
	// 			[ none | solid | dotted | dashed | segments( <number>, <number> [, <number>]*) ]
			}
			Region extends Parent {
				/#
				 # A series of paint values separated by commas.
				 #/
				'-fx-background-color' default 'null' {
					<paint> //NOT SUPPORTED[ , <paint> ]*  
				},
				/#
				 # A series of size values or sets of four size values, separated by commas. A single size value means all insets are the same. Otherwise, the four values for each inset are given in the order top, right, bottom, left. Each comma-separated value or set of values in the series applies to the corresponding background color.
				 #/
				'-fx-background-insets' default 'null' {
					<size> //NOT SUPPORTED | <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				/#
				 # A series of radius values or sets of four radius values, separated by commas. A single radius value means the radius of all four corners is the same. Otherwise, the four values in the set determine the radii of the top-left, top-right, bottom-right, and bottom-left corners, in that order. Each comma-separated value or set of values in the series applies to the corresponding background color.
				 #/
				'-fx-background-radius' default 'null' {
					<size> //NOT SUPPORTED | <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				/#
				 # A series of image URIs separated by commas.
				 #/
				'-fx-background-image' default 'null' {
					<uri> //NOT SUPPORTED [ , <uri> ]*
				},
				'-fx-background-position' default 'null' {
					<bg_position> //NOT SUPPORTED [ , <bg_position> ]*
				},
				'-fx-background-repeat' default 'null' {
					<repeat_style> //NOT SUPPORTED [ , <repeat_style> ]*
				},
				'-fx-background-size' default 'null' {
					<bg_size> //NOT SUPPORTED [ , <bg_size> ]*
				},
				'-fx-border-color' default 'null' {
					<paint> //NOT SUPPORTED | <paint> <paint> <paint> <paint> [ , [<paint> | <paint> <paint> <paint> <paint>] ]*
				},
				'-fx-border-insets' default 'null' {
					<size> //NOT SUPPORTED| <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				'-fx-border-radius' default 'null' {
					<size> //NOT SUPPORTED | <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				'-fx-border-style' default 'null' {
					<border_style> // NOT SUPPORTED[ , <border_style> ]*
				},
				'-fx-border-width' default 'null' {
					<size> //NOT SUPPORTED| <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				'-fx-border-image-source' default 'null' {
					<uri> //NOT SUPPORTED [ , <uri> ]*
				},
				'-fx-border-image-insets' default 'null' {
					<size> //NOT SUPPORTED | <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				'-fx-border-image-repeat' default 'null' {
					<repeat_style> //NOT SUPPORTED[ , <repeat_style> ]*
				},
				'-fx-border-image-slice' default 'null' {
					[<size> | <size> <size> <size> <size> ] //NOT SUPPORTED'fill'? [ , [ <size> | <size><size> <size> <size> <size> ] 'fill'? ]*
				},
				'-fx-border-image-width' default 'null' {
					<size> // NOT SUPPORTED| <size> <size> <size> <size> [ , [ <size> | <size> <size> <size> <size>] ]*
				},
				'-fx-padding' default 'null' {
					<size> | <size> <size> <size> <size>
				},
				boolean '-fx-position-shape' default true,
				boolean '-fx-scale-shape' default true,
				string '-fx-shape' default 'null',
				boolean '-fx-snap-to-pixel' default true
	//			'-fx-background-fills'
	//			'-fx-background-images' 
	//			'-fx-stroke-borders'
	//			'-fx-image-borders'			
			},
			Pane {
				
			},
			AnchorPane extends Pane {
				
			},
			BorderPane extends Pane { 
				
			},
			FlowPane extends Pane {
				'-fx-hgap' default '0' {
					<size>
				},
				'-fx-vgap' default '0' {
					<size>
				},
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center',
					'center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right'
				},
				enum '-fx-column-halignment' default 'center' {
					'left',
					'center',
					'right'
				},
				enum '-fx-row-valignment' default 'center' {
					'top',
					'center',
					'baseline',
					'bottom'
				},
				enum '-fx-orientation' default 'horizontal' {
					'horizontal',
					'vertical'
				}
			},
			GridPane extends Pane {
				'-fx-hgap' default '0' {
					<size>
				},
				'-fx-vgap' default '0' {
					<size>
				},
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center',
					'center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right'
				},
				boolean '-fx-grid-lines-visible' default false
			},
			HBox extends Pane {
				'-fx-spacing' default '0' {
					<size>
				},
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center',
					'center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right'
				},
				boolean '-fx-fill-height' default false
			},
			StackPane extends Pane {
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center',
					'center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right' 
				} 
			},
			TilePane extends Pane {
				enum '-fx-orientation' default 'horizontal' {
					'horizontal','vertical'
				},
				unsigned integer '-fx-pref-rows' default 5,
				unsigned integer '-fx-pref-columns' default 5,
				'-fx-pref-tile-width' default '-1' {
					<size>
				},
				'-fx-pref-tile-height' default '-1' {
					<size>
				},
				'-fx-hgap' default '0' {
					<size>
				},
				'-fx-vgap' default '0' {
					<size>
				},
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center','center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right'
				},
				enum '-fx-tile-alignment' default 'center' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center','center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right'
				}
			},
			VBox {
				'-fx-spacing' default '0' {
					<size>
				},
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center','center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left',
					'baseline-center',
					'baseline-right'
				},
				boolean '-fx-fill-width' default true 
			}
		}
		package shape {
			Shape extends Node {
				'-fx-fill' default 'BLACK' {
					<paint>
				},
				boolean '-fx-smooth' default true,
				'-fx-stroke' default 'null' {
					<paint>
				},
				enum '-fx-stroke-type' default 'centered' {
					'inside','outside','centered'
				},
				'-fx-stroke-dash-array' default 'null' {
					<size>[ <size>]+
				},
				number '-fx-stroke-dash-offset' default 0d,
				enum '-fx-stroke-line-cap' default 'square' {
					'square','butt','round'
				},
				enum '-fx-stroke-line-join' default 'miter' {
					'miter','bevel','round'
				},
				number '-fx-stroke-miter-limit' default 10d,
				'-fx-stroke-width' default '1' {
					<size>
				}
			},
			Arc extends Shape {
				
			},
			Circle extends Shape {
				
			},
			CubicCurve extends Shape {
				
			},
			Ellipse extends Shape {
				
			},
			Line extends Shape {
				
			},
			Path extends Shape {
				
			},
			Polygon extends Shape {
				
			},
			QuadCurve extends Shape {
	
			},
			Rectangle extends Shape {
				'-fx-arc-height' default '0' {
					<size>
				},
				'-fx-arc-width' default '0' {
					<size>
				}
			},
			SVGPath extends Shape {
				
			}
		}
		package text {
			Text extends shape.Shape {
				'-fx-font' default 'Font.DEFAULT' {
					<font>
				},
				enum '-fx-font-smoothing-type' default 'gray' {
					'gray','lcd'
				},
				boolean '-fx-strikethrough' default false,
				enum '-fx-text-alignment' default 'left' {
					'left','center','right','justify'
				},
				enum '-fx-text-origin' default 'baseline' {
					'baseline','top','bottom'
				},
				boolean '-fx-underline' default false
			}
		}
		package control {
			Control extends Parent {
				string '-fx-skin' default 'null'
			},
			Labeled extends Control {
				enum '-fx-alignment' default 'top-left' {
					'top-left',
					'top-center',
					'top-right',
					'center-left',
					'center',
					'center-right',
					'bottom-left',
					'bottom-center',
					'bottom-right',
					'baseline-left','baseline-center',
					'baseline-right'
				},
				enum '-fx-text-alignment' default 'left' {
					'left','center','right','justify'
				},
				enum '-fx-text-overrun' default 'ellipsis' {
					'center-ellipsis',
					'center-word-ellipsis',
					'clip',
					'ellipsis',
					'leading-ellipsis',
					'leading-word-ellipsis',
					'word-ellipsis'
				},
				boolean '-fx-wrap-text' default false,
				'-fx-font' default 'null' {
					<font>
				},
				boolean '-fx-underline' default false,
				'-fx-graphic' default 'null' {
					<uri>
				},
				enum '-fx-content-display' default 'left' {
					'top',
					'right',
					'bottom',
					'left',
					'center',
					'right',
					'graphic-only',
					'text-only' 
				},
				'-fx-graphic-text-gap' default '4' {
					<size>
				},
				'-fx-label-padding' default '0,0,0,0' {
					<size> | <size> <size> <size> <size>
				},
				'-fx-text-fill' default 'BLACK' {
					<paint>
				}
			},
			ButtonBase extends Labeled {
				pseudoclass 'armed'
			},
			Accordion extends Control {
				
			},
			Button extends ButtonBase {
				pseudoclass 'cancel',
				pseudoclass 'default'
			},
			Cell extends Labeled {
				'-fx-cell-size' default '15' {
					<size>
				}
				pseudoclass 'empty',
				pseudoclass 'filled',
				pseudoclass 'selected'
				substructure Labeled 'text' 
			},
			CheckBox extends ButtonBase {
				pseudoclass 'selected',
				pseudoclass 'determinate',
				pseudoclass 'indeterminate'
				substructure layout.StackPane 'box' {
					substructure layout.StackPane 'mark'
				}
			},
			CheckMenuItem extends Control {
				pseudoclass 'selected'
			},
			ChoiceBox extends Control {
				substructure layout.Region 'open-button' {
					substructure layout.Region 'arrow'
				}
			},
			ComboBoxBase extends Control {
				pseudoclass 'editable',
				pseudoclass 'showing',
				pseudoclass 'armed'
				substructure layout.StackPane 'arrow-button' {
					substructure layout.StackPane 'arrow'
				}	
			},
			ComboBox extends ComboBoxBase {
				substructure ListCell 'list-cell',
				substructure TextField 'text-input',
				substructure PopupControl 'combo-box-popup' {
					substructure ListView 'list-view' {
						substructure ListCell 'list-cell'
					}
				}
			},
			Hyperlink extends ButtonBase {
				pseudoclass 'visited'
				substructure Label 'label'
			},
			IndexedCell extends Cell {
				pseudoclass 'even',
				pseudoclass 'odd'
			},
			Label extends Labeled {
				
			},
			ListCell extends IndexedCell {
				
			},
			ListView extends Control {
				enum '-fx-orientation' default 'horizontal' {
					'horizontal','vertical'
				}
				pseudoclass 'horizontal',
				pseudoclass 'vertical'
			},
			Menu extends MenuItem {
				pseudoclass 'showing'
			},
			MenuBar extends Control {
				boolean '-fx-use-system-menu-bar' default false
				substructure Menu 'menu'
			},
			MenuButton extends ButtonBase {
				pseudoclass 'openvertically',
				pseudoclass 'showing'
			},
			MenuItem extends Control {
				
			},
			PasswordField extends TextField {
				
			},
			PopupControl extends stage.PopupWindow { 
			
			},
			ProgressBar extends ProgressIndicator {
				
			},
			ProgressIndicator extends Control {
				'-fx-progress-color' default 'dodgerblue' {
					<paint>
				}
				pseudoclass 'determinate',
				pseudoclass 'indetermindate',
				substructure layout.StackPane 'indicator',
				substructure layout.StackPane 'progress',
				substructure text.Text 'percentage',
				substructure layout.StackPane 'tick'
			},
			RadioButton extends ToggleButton {
				substructure layout.Region 'radio' {
					substructure layout.Region 'dot' 
				},
				substructure Label 'label'
			},
			RadioMenuItem extends MenuItem {
				pseudoclass 'selected'
			},
			ScrollBar extends Control {
				enum '-fx-orientation' default 'horizontal' {
					'horizontal','vertical'
				},
				number '-fx-block-increment' default 10d,
				number '-fx-unit-increment' default 1d
				pseudoclass 'vertical',
				pseudoclass 'horizontal'
				substructure layout.StackPane 'decrement-button' {
					substructure layout.StackPane 'decrement-arrow'
				},
				substructure layout.StackPane 'track',
				substructure layout.StackPane 'thumb',
				substructure layout.StackPane 'increment-button' {
					substructure layout.StackPane 'increment-arrow'
				}
			},
			ScrollPane extends Control {
				boolean '-fx-fit-to-width' default false,
				boolean '-fx-fit-to-height' default false,
				boolean '-fx-pannable' default false,
				enum '-fx-hbar-policy' default 'always' {
					'never','always','as-needed'
				},
				enum '-fx-vbar-policy' default 'always' {
					'never','always','as-needed'
				}
				pseudoclass 'pannable',
				pseudoclass 'fitToWidth',
				pseudoclass 'fitToHeight'
				substructure ScrollBar 'scroll-bar:vertical',
				substructure ScrollBar 'scroll-bar:horizontal',
				substructure layout.StackPane 'corner'
			},
			Separator extends Control {
				enum '-fx-orientation' default 'horizontal' {
					'horizontal','vertical'
				},
				enum '-fx-halignment' default 'center' {
					'left','center','right'
				},
				enum '-fx-valignment' default 'center' {
					'top','center','baseline','bottom'
				}
				pseudoclass 'horizontal',
				pseudoclass 'vertical'
				substructure layout.Region 'line'
			},
			Slider extends Control {
				enum '-fx-orientation' default 'horizontal' {
					'horizontal','vertical'
				},
				boolean '-fx-show-tick-labels' default false,
				boolean '-fx-show-tick-marks' default false,
				number '-fx-major-tick-unit' default 25d,
				integer '-fx-minor-tick-count' default 3,
				boolean '-fx-show-tick-labels' default false,
				boolean '-fx-snap-to-ticks' default false,
				integer '-fx-block-increment' default 10
				pseudoclass 'horizontal',
				pseudoclass 'vertical'
				substructure chart.NumberAxis 'axis',
				substructure layout.Region 'track',
				substructure layout.Region 'thumb'
			},
			SplitMenuButton extends MenuButton {
				
			},
			SplitPane extends Control {
				enum '-fx-orientation' default '' {
					'horizontal','vertical'
				}
				pseudoclass 'horizontal',
				pseudoclass 'vertical'
				substructure layout.StackPane 'split-pane-divider' {
					substructure layout.StackPane 'vertical-grabber',
					substructure layout.StackPane 'horizontal-grabber'
				}
			},
			Tab {
				
			},
			TabPane extends Control {
				number '-fx-tab-min-width' default 0d,
				number '-fx-tab-max-width' default 100000000d, //TODO Double.MAX
				number '-fx-tab-min-height' default 0d,
				number '-fx-tab-max-height' default 100000000d, //TODO Double.MAX
				pseudoclass 'top',
				pseudoclass 'right',
				pseudoclass 'bottom',
				pseudoclass 'left'
				substructure layout.StackPane 'tab-header-area' {
					substructure layout.StackPane 'headers-region',
					substructure layout.StackPane 'tab-header-background',
					substructure layout.StackPane 'control-buttons-tab' {
						substructure layout.Pane 'tab-down-button' {
							substructure layout.StackPane 'arrow'
						}
					},
					substructure Tab 'tab' {
						substructure Label 'tab-label',
						substructure layout.StackPane 'tab-close-button'
					}
				},
				substructure layout.StackPane 'tab-content-area'
			},
			TableView extends Control {
				pseudoclass 'cell-selection',
				pseudoclass 'row-selection'
				substructure layout.Region 'column-resize-line',
				substructure layout.Region 'column-overlay',
				substructure layout.StackPane 'placeholder',
				substructure layout.StackPane 'column-header-background' {
					substructure layout.StackPane 'nested-column-header' {
						substructure Label 'column-header' // Not documented!!
					},
					substructure layout.Region 'filler',
					substructure layout.StackPane 'show-hide-columns-button' {
						substructure layout.StackPane 'show-hide-column-image'
					},
					substructure layout.StackPane 'column-drag-header' {
						substructure Label 'label'
					}
				}
			},
			TextArea extends TextInputControl {
				substructure ScrollPane 'scroll-pane' {
					substructure layout.Region 'content'
				}
			},
			TextInputControl extends Control {
				'-fx-font' default 'null' {
					<font>
				},
				'-fx-text-fill' default 'black' {
					<paint>
				},
				'-fx-prompt-text-fill' default 'gray' {
					<paint>
				},
				'-fx-highlight-fill' default 'dodgerblue' {
					<paint>
				},
				'-fx-highlight-text-fill' default 'white' {
					<paint>
				},
				boolean '-fx-display-caret' default true
				pseudoclass 'readonly' 
			},
			TextField extends TextInputControl {
				enum '-fx-alignment' default 'center-left' {
					'top-left','top-center','top-right','center-left',
					'center','center-right','bottom-left',
					'bottom-center','bottom-right',
					'baseline-left','baseline-center','baseline-right'
				}
			},
			TitledPane extends Labeled {
				boolean '-fx-animated' default true,
				boolean '-fx-collapsible' default true
				pseudoclass 'expanded',
				pseudoclass 'collapsed'
				substructure layout.HBox 'title' {
					substructure Label 'text',
					substructure layout.StackPane 'arrow-button' {
						substructure layout.StackPane 'arrow'
					}
				},
				substructure layout.StackPane 'content'
			},
			ToggleButton extends ButtonBase {
				pseudoclass 'selected'
			},
			ToolBar extends Control {
				enum '-fx-orientation' default 'horizontal' {
					'horizontal','vertical'
				}
				pseudoclass 'horizontal',
				pseudoclass 'vertical'
				substructure layout.StackPane 'tool-bar-overflow-button' {
					substructure layout.StackPane 'arrow'
				}
			},
			Tooltip extends PopupControl {
				enum '-fx-text-alignment' default 'left' {
					'left','center','right','justify'
				},
				enum '-fx-text-overrun' default 'ellipsis' {
					'center-ellipsis','center-word-ellipsis','clip',
					'ellipsis','leading-ellipsis','leading-word-ellipsis',
					'word-ellipsis'
				},
				boolean '-fx-wrap-text' default false,
				'-fx-graphic' default 'null' {
					<uri>
				},
				enum '-fx-content-display' default 'left' {
					'top','right','bottom','left','center','right','graphic-only',
					'text-only'
				},
				'-fx-graphic-text-gap' default '4' {
					<size>
				},
				'-fx-font' default 'Font.DEFAULT' {
					<font>
				}
				substructure Label 'label',
				substructure layout.StackPane 'page-corner'
			},
			TreeCell extends IndexedCell {
				'-fx-indent' default '10' {
					<size>
				}
				pseudoclass 'expanded',
				pseudoclass 'collapsed'
			},
			TreeView extends Control {
				
			}
		}
		package chart {
			// com.sun.javafx.chart.LegendItem
			LegendItem {
				
			},
			AreaChart extends XYChart {
				substructure Node 'chart-series-area-line series<i> default-color<j>',
				substructure shape.Path 'chart-series-area-fill series<i> default-color<j>',
				substructure shape.Path 'chart-area-symbol series<i> data<j> default-color<k>',
				substructure LegendItem 'chart-area-symbol series<i> area-legend-symbol default-color<j>'
			},
			BarChart extends XYChart {
				number '-fx-bar-gap' default 4d,
				number '-fx-category-gap' default 10d
//				substructure 'bar-chart',
				substructure Node 'chart-bar series<i> data<j> default-color<k>',
				substructure LegendItem 'chart-bar series<i> bar-legend-symbol default-color<j>'
			},
			BubbleChart extends XYChart {
				substructure Node 'chart-bubble series<i> data<j> default-color<k>',
				substructure LegendItem 'chart-bubble series<i> bubble-legend-symbol default-color<j>'
			},
			Chart extends layout.Region {
				enum '-fx-legend-side' default 'bottom' {
					'top','left','bottom','right' //TODO Not documented
				},
				boolean '-fx-legend-visible' default true,
				enum '-fx-title-side' default 'top' {
					'top','left','bottom','right' //TODO Not documented
				}
				substructure control.Label 'chart-title',
				substructure layout.Pane 'chart-content'
			},
			LineChart extends XYChart {
				boolean '-fx-symbol-visible' default true
				substructure Node 'chart-series-line series<i> default-color<j>',
				substructure Node 'chart-line-symbol series<i> data<j> default-color<k>',
				substructure LegendItem 'chart-line-symbol series<i> default-color<j>'
			},
			ScatterChart extends XYChart {
				substructure Node 'chart-symbol series<i> data<j> default-color<k>',
				substructure LegendItem 'chart-symbol series<i> default-color<k>'
			},
			PieChart extends Chart {
				boolean '-fx-clockwise' default true,
				boolean '-fx-pie-label-visible' default true,
				'-fx-label-line-length' default '20' {
					<size>
				},
				number '-fx-start-angle' default 0d
				substructure Node 'chart-pie data<i> default-color<j>',
				substructure shape.Path 'chart-pie-label-line',
				substructure text.Text 'chart-pie-label',
				substructure LegendItem 'pie-legend-symbol'
			},
			XYChart extends Chart {
				boolean '-fx-alternative-column-fill-visible' default true,
				boolean '-fx-alternative-row-fill-visible' default true,
				boolean '-fx-horizontal-grid-lines-visible' default true,
				boolean '-fx-horizontal-zero-line-visible' default true,
				boolean '-fx-vertical-grid-lines-visible' default true,
				boolean '-fx-vertical-zero-line-visible' default true
				substructure Group 'plot-content',
				substructure layout.Region 'chart-plot-background',
				substructure shape.Path 'chart-alternative-column-fill',
				substructure shape.Path 'chart-alternative-row-fill',
				substructure shape.Path 'chart-vertical-grid-lines',
				substructure shape.Path 'chart-horizontal-grid-lines',
				substructure shape.Line 'chart-vertical-zero-line',
				substructure shape.Line 'chart-horizontal-zero-line'
			},
			Axis extends layout.Region {
				enum '-fx-side' default 'null' {
					'top','left','bottom','right' //TODO Not documented
				},
				'-fx-tick-length' default '8' {
					<size>
				},
				'-fx-tick-label-font' default '8 system' {
					<font>
				},
				'-fx-tick-label-fill' default '8 system' {
					<paint>
				},
				'-fx-tick-label-gap' default '8 system' {
					<size>
				},
				boolean '-fx-tick-mark-visible' default true,
				boolean '-fx-tick-labels-visible' default true
				substructure text.Text 'axis-label',
				substructure shape.Path 'axis-tick-mark',
				substructure text.Text 'tick-mark' 
			},
			ValueAxis extends Axis {
				'-fx-minor-tick-length' default '5' {
					<size>
				},
				'-fx-minor-tick-count' default '5' {
					<size>
				},
				boolean '-fx-minor-tick-visible' default true
				substructure shape.Path 'axis-minor-tick-mark' 
			},
			NumberAxis extends ValueAxis {
				number '-fx-tick-unit' default 5d
			},
			CategoryAxis extends Axis {
				number '-fx-start-margin' default 5d,
				number '-fx-end-margin' default 5d,
				boolean '-fx-gap-start-and-end' default true
			},
			Legend extends layout.Region {
				substructure control.Label 'chart-legend-item',
				substructure Node 'chart-legend-item-symbol'
			}
		}
	}
}
-------------- next part --------------
grammar at.bestsolution.efxclipse.tooling.css.Definition with org.eclipse.xtext.xbase.Xbase // hidden(WS, SL_COMMENT)

generate definition "http://www.bestsolution.at/efxclipse/tooling/css/Definition"

CSSDefs:
	imports+=Import*
	packageDef=PackageDeclaration
;

Import:
	'import' importedNamespace=QualifiedNameWithWildCard;

PackageDeclaration:
	'package' name=QualifiedName '{'
		typDefs+=TypeDef? (',' typDefs+=TypeDef)*
		elementDefs+=ElementDef? (',' elementDefs+=ElementDef)*
		subpackages+=PackageDeclaration*
	'}';

enum PrimTypes:
	STRING | INT | DOUBLE | BOOL
;

TypeDef:
	GenericTypeDef | EnumTypeDef
;

GenericTypeDef:
	doc=DOCU?
	'type' name=ValidID '{'
		typeDef=TypeValue
	'}'
;

EnumTypeDef:
	doc=DOCU?
	'enumtype' name=ValidID '{'
		values+=EnumValue (',' values+=EnumValue)+
	'}'
;


TypeValue:
	TypeDefValue | PrimValue
;

TypeDefValue:
	typeRule=TypeRule
;

PrimValue:
	v=PrimTypes
;

ElementDef:
	doc=DOCU?
	name=ValidID ('extends' superElements+=[ElementDef|QualifiedName] (',' superElements+=[ElementDef|QualifiedName])*)? '{'
		properties+=Property? (',' properties+=Property)*
		pseudoClasses+=PseudoClass? (',' pseudoClasses+=PseudoClass)*
		subelements+=SubElement? (',' subelements+=SubElement)*
	'}'
;

SubElement:
	doc=DOCU?
	'substructure' type=[ElementDef|QualifiedName] name=STRING ('{'
		subelements+=SubElement? (',' subelements+=SubElement)*
	'}')?
	
;

Property:
	GenericProperty | EnumProperty | NumberProperty | BooleanProperty | StringProperty | IntegerProperty
;

PseudoClass:
	doc=DOCU?
	'pseudoclass' name=STRING
;

GenericProperty:
	doc=DOCU?
	name=STRING 'default' defaultValue=STRING '{'
		typeRule=TypeRule
	'}'  
;

TypeRule:
	segment=Segment typeSegment+=SubRule*
;

SubRule:
	TypeRuleSegment | TypeGroupSegment | TypeKeySegment
;

TypeRuleSegment:
	op=('||'|'|') segment=Segment
;

Segment:
	TypeSegment | TypeFunctionSegment | TypeGroupSegment 
;

TypeSegment:
	('<' type+=[TypeDef|ValidID]'>')+
;

TypeKeySegment:
	keyword=STRING ('?')?
;

TypeFunctionSegment:
	function=ValidID '(' type=[TypeDef|ValidID] ')'
;

TypeGroupSegment:
	'[' sep=STRING? rule=TypeRule ']' ('*'|'+'|'?'|('{' min=INT (','max=INT)?'}'))?
;

EnumProperty:
	doc=DOCU?
	'enum' name=STRING 'default' defaultValue=STRING '{'
		values+=EnumValue (',' values+=EnumValue)+
	'}'
;

EnumValue:
	doc=DOCU?
	value=STRING
;

NumberProperty:
	doc=DOCU?
	unsigned?='unsigned'? 'number' name=STRING 'default' defaultValue=DECIMAL ('range' min=DECIMAL 'to' max=DECIMAL)?
;

IntegerProperty:
	doc=DOCU?
	unsigned?='unsigned'? 'integer' name=STRING 'default' defaultValue=INT ('range' min=INT 'to' max=INT)?
;


BooleanProperty:
	doc=DOCU?
	'boolean' name=STRING 'default' defaultValue=('true'|'false')
;

StringProperty:
	doc=DOCU?
	'string' name=STRING 'default' defaultValue=STRING
;

QualifiedNameWithWildCard :
	QualifiedName  ('.' '*')?;

terminal DOCU: '/#' -> '#/';

/*Operation:
	'op' name=ValidID '(' (params+=FullJvmFormalParameter (',' params+=FullJvmFormalParameter)*)? ')' ':' type=JvmTypeReference 
		body=XBlockExpression;*/

terminal ID:
	'^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;


More information about the openjfx-dev mailing list