1 package io.extact.rms.client.console.ui;
2
3 import jakarta.enterprise.context.ApplicationScoped;
4 import jakarta.enterprise.event.Event;
5 import jakarta.inject.Inject;
6
7 import io.extact.rms.client.api.RentalReservationClientApi;
8 import io.extact.rms.client.api.login.LoggedInEvent;
9 import io.extact.rms.client.console.login.LoginEventReciever;
10 import io.extact.rms.client.console.ui.TransitionMap.RmsScreen;
11 import io.extact.rms.client.console.ui.TransitionMap.Transition;
12 import io.extact.rms.client.console.ui.admin.AdminMainScreen;
13 import io.extact.rms.client.console.ui.admin.EditUserScreen;
14 import io.extact.rms.client.console.ui.admin.EntryRentalItemScreen;
15 import io.extact.rms.client.console.ui.admin.EntryUserScreen;
16 import io.extact.rms.client.console.ui.member.CancelReservationScreen;
17 import io.extact.rms.client.console.ui.member.InquiryReservationScreen;
18 import io.extact.rms.client.console.ui.member.MemberMainScreen;
19 import io.extact.rms.client.console.ui.member.ReserveRentalItemScreen;
20
21
22
23
24 @ApplicationScoped
25 public class ScreenController {
26
27 private TransitionMap transitionMap;
28 private LoginEventReciever loginEventReciever;
29
30 @Inject
31 public ScreenController(RentalReservationClientApi clientApi, Event<LoggedInEvent> event, LoginEventReciever reciever) {
32 this.transitionMap = new TransitionMap();
33 transitionMap.add(Transition.LOGIN, new LoginScreen(clientApi, event));
34 transitionMap.add(Transition.MEMBER_MAIN, new MemberMainScreen());
35 transitionMap.add(Transition.INQUIRY_RESERVATION, new InquiryReservationScreen(clientApi));
36 transitionMap.add(Transition.ENTRY_RESERVATRION, new ReserveRentalItemScreen(clientApi));
37 transitionMap.add(Transition.CANCEL_RESERVATRION, new CancelReservationScreen(clientApi));
38 transitionMap.add(Transition.ADMIN_MAIN, new AdminMainScreen());
39 transitionMap.add(Transition.ENTRY_RENTAL_ITEM, new EntryRentalItemScreen(clientApi));
40 transitionMap.add(Transition.ENTRY_USER, new EntryUserScreen(clientApi));
41 transitionMap.add(Transition.EDIT_USER, new EditUserScreen(clientApi));
42 transitionMap.add(Transition.END, new EndScreen());
43 loginEventReciever = reciever;
44 }
45
46 public void start() {
47 var loginScreen = transitionMap.stratScreen();
48 doPlay(loginScreen);
49 }
50
51 private RmsScreen doPlay(RmsScreen screen) {
52 var next = screen.play(loginEventReciever.getLoginUser(), true);
53 return next != null ? doPlay(transitionMap.nextScreen(next)) : null;
54 }
55 }