class ConfigurationContext extends GraphicalContext<BorderPane> {

    static ChoiceBox<BuiltInUiTheme> buildStyleThemeChooser(Configuration configuration, ConfigurationContext configurationContext) {
        ChoiceBox<BuiltInUiTheme> themesBox = new ChoiceBox<>();

        final String cssFile = configuration.getCssFile();
        themesBox.getItems().addAll(BuiltInUiTheme.values());
        Optional<BuiltInUiTheme> configuredTheme = BuiltInUiTheme.findFromConfigPropertyValue(cssFile);
        BuiltInUiTheme selected = configuredTheme.orElse(BuiltInUiTheme.DEFAULT_THEME);

        themesBox.setConverter(new StringConverter<>() {
            @Override
            public String toString(BuiltInUiTheme object) {
                return object.getLabel();
            }

            @Override
            public BuiltInUiTheme fromString(String string) {
                return null;
            }
        });

        themesBox.getSelectionModel().select(selected);
        themesBox.setPrefWidth(PREF_WIDTH);
        themesBox.setPrefHeight(PREF_HEIGHT);

        themesBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
            String newPropertyValue = newValue.getPreferredConfigPropertyValue();
            configuration.getCssfileProperty().setValue(newPropertyValue);
            final GazePlay gazePlay = configurationContext.getGazePlay();

            CssUtil.setPreferredStylesheets(configuration, gazePlay.getPrimaryScene(), gazePlay.getCurrentScreenDimensionSupplier());
        });

        return themesBox;
    }

      ConfigurationContext(GazePlay gazePlay);

}