/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package helloworld; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import javafx.application.Application; import javafx.css.CssMetaData; import javafx.css.Styleable; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.Control; import javafx.scene.control.TextField; import javafx.scene.layout.StackPane; import javafx.stage.Stage; /** * * @author jcambon */ public class StylePropertiesTest extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Style properties test"); Class clazz = TextField.class; TextField textField = new TextField(); StackPane root = new StackPane(); root.getChildren().add(textField); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); // List cssProperties = getCssProperties(clazz); // System.out.println("CSS properties for " + clazz + ":"); List cssProperties = getCssProperties(textField); System.out.println("CSS properties for " + textField.toString() + ":"); for (String cssProperty : cssProperties) { System.out.println(cssProperty); } } @SuppressWarnings("unchecked") public static List getCssProperties(Control control) { TreeSet cssProperties = new TreeSet<>(); for (CssMetaData metadata : ((List>) control.getCssMetaData())) { cssProperties.add(metadata.getProperty()); if (metadata.getSubProperties() != null) { for (CssMetaData subMetadata : metadata.getSubProperties()) { cssProperties.add(subMetadata.getProperty()); } } } return new ArrayList<>(cssProperties); } @SuppressWarnings("unchecked") public static List getCssProperties(Class clazz) { TreeSet cssProperties = new TreeSet<>(); if (Node.class.isAssignableFrom(clazz)) { Object metadatas = null; try { metadatas = clazz.getMethod("getClassCssMetaData").invoke(null, (Object[]) null); //NOI18N } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { assert false; } for (CssMetaData metadata : ((List>) metadatas)) { cssProperties.add(metadata.getProperty()); if (metadata.getSubProperties() != null) { for (CssMetaData subMetadata : metadata.getSubProperties()) { cssProperties.add(subMetadata.getProperty()); } } } } return new ArrayList<>(cssProperties); } }