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);
}
}
}