Change programmatically the Theming of the whole Application

I am using Vaadin 8 with CDI, JavaEE7 and Wildfly 12

I want to offer a ComboBox, where the user can change the Theming of the Application
I want to offer 3 Themings
Theming1
Theming2
Theming3

Is there a HowTo how to make it?
Or can you give me some Tips.

My MainUI is:

Theme("appui")
@CDIUI("")
public class MainUI extends UI {
	@Inject
	CDIViewProvider viewProvider;

	@Inject
	LoginView loginView;
	
	@Inject
	SessionService sessionService;

	private Navigator navigator;

	@Override
	protected void init(VaadinRequest request) {
		if (isLoggedIn()) {
			setupMainLayout();
		} else {
			setContent(loginView);
		}
	}

	private boolean isLoggedIn() {
		return getSession().getAttribute(Account.class.getName()) != null;
	}

	public void loginSuccessful() {
		setupMainLayout();
	}

	private void setupMainLayout() {
		final VerticalLayout mainLayout = new VerticalLayout();
		final CssLayout menuView = new CssLayout();
		final CssLayout contentView = new CssLayout();

		mainLayout.addComponent(menuView);
		mainLayout.addComponent(contentView);
		mainLayout.setMargin(true);
		mainLayout.setSpacing(true);
		setContent(mainLayout);

		navigator = new Navigator(this, contentView);
		navigator.addProvider(viewProvider);

		navigator.setErrorView(loginView);

		String initialState = Optional.ofNullable(navigator.getState()).filter(state -> !state.trim().isEmpty())
				.orElse(PERSON_VIEW);
		navigator.navigateTo(initialState);
	}

	@Override
	public void setLocale(Locale locale) {
		super.setLocale(locale);
		updateMessageStrings(getContent());
	}

	@Override
	public Locale getLocale() {
		return super.getLocale();
	}
	
	private void updateMessageStrings(Component component) {
		if (component instanceof Translatable) {
			((Translatable) component).updateMessageStrings();
		}
		if (component instanceof HasComponents) {
			((HasComponents) component).iterator().forEachRemaining(this::updateMessageStrings);
		}
	}
}

The most obvious starting point is to use UI.setTheme(…) method https://vaadin.com/download/release/8.4/8.4.3/docs/api/com/vaadin/ui/UI.html#setTheme-java.lang.String-