View Javadoc
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  }