Hello,
It can be done via user settings mechanism that is provided by jmix-ui-data-starter
:
implementation 'io.jmix.ui:jmix-ui-data-starter'
UiSetting
entity contains username, setting name and its value. You can create an instance for each user with different screen id and load it in MainScreen.
For instance:
@Autowired
private UserSettingService userSettingService;
@Autowired
private WindowConfig windowConfig;
@Autowired
private Screens screens;
@Autowired
private UiProperties uiProperties;
@Subscribe
public void onAfterShow(AfterShowEvent event) {
String defaultScreenId = userSettingService.loadSetting("defaultScreenId");
if (Strings.isNullOrEmpty(defaultScreenId)) {
screenTools.openDefaultScreen(
UiControllerUtils.getScreenContext(this).getScreens());
} else if (windowConfig.hasWindow(defaultScreenId)) {
Screen screen = screens.create(defaultScreenId, OpenMode.NEW_TAB);
screen.show();
Window window = screen.getWindow();
((WindowImpl) window).setDefaultScreenWindow(true);
window.setCloseable(!uiProperties.isDefaultScreenCanBeClosed());
}
screenTools.handleRedirect();
}
You can create UiSetting
via Entity Inspector
screen or implement your own screen for this.
