View Javadoc

1   package org.kuali.student.lum.program.client.credential.view;
2   
3   import com.google.gwt.core.client.GWT;
4   import com.google.gwt.event.dom.client.ChangeEvent;
5   import com.google.gwt.event.dom.client.ChangeHandler;
6   import com.google.gwt.event.shared.HandlerManager;
7   import org.kuali.student.common.ui.client.application.KSAsyncCallback;
8   import org.kuali.student.common.ui.client.application.ViewContext;
9   import org.kuali.student.common.ui.client.mvc.DataModel;
10  import org.kuali.student.common.ui.client.mvc.history.HistoryManager;
11  import org.kuali.student.common.ui.shared.IdAttributes.IdType;
12  import org.kuali.student.lum.common.client.widgets.AppLocations;
13  import org.kuali.student.lum.common.client.widgets.DropdownList;
14  import org.kuali.student.lum.program.client.ProgramConstants;
15  import org.kuali.student.lum.program.client.ProgramRegistry;
16  import org.kuali.student.lum.program.client.ProgramSections;
17  import org.kuali.student.lum.program.client.ProgramStatus;
18  import org.kuali.student.lum.program.client.credential.CredentialController;
19  import org.kuali.student.lum.program.client.events.ModelLoadedEvent;
20  import org.kuali.student.lum.program.client.events.ProgramViewEvent;
21  import org.kuali.student.lum.program.client.major.ActionType;
22  
23  /**
24   * @author Igor
25   */
26  public class CredentialViewController extends CredentialController {
27  
28      private final DropdownList actionBox = new DropdownList(ActionType.getValues());
29  
30      /**
31       * Constructor.
32       *
33       * @param programModel
34       */
35      public CredentialViewController(DataModel programModel, ViewContext viewContext, HandlerManager eventBus) {
36          super(programModel, viewContext, eventBus);
37          configurer = GWT.create(CredentialViewConfigurer.class);
38          bind();
39      }
40  
41      private void bind() {
42          actionBox.addChangeHandler(new ChangeHandler() {
43              @Override
44              public void onChange(ChangeEvent event) {
45                  ActionType actionType = ActionType.of(actionBox.getSelectedValue());
46                  ViewContext viewContext = getViewContext();
47                  if (actionType == ActionType.MODIFY) {
48                      ProgramRegistry.setSection(ProgramSections.getEditSection(getCurrentViewEnum()));
49                      HistoryManager.navigate(AppLocations.Locations.EDIT_BACC_PROGRAM.getLocation(), getViewContext());
50                  } else if (actionType == ActionType.MODIFY_VERSION) {
51                      String versionIndId = getStringProperty(ProgramConstants.VERSION_IND_ID);
52                      viewContext.setId(versionIndId);
53                      viewContext.setIdType(IdType.COPY_OF_OBJECT_ID);
54                      HistoryManager.navigate(AppLocations.Locations.EDIT_BACC_PROGRAM.getLocation(), viewContext);
55                  }
56              }
57          });
58          eventBus.addHandler(ProgramViewEvent.TYPE, new ProgramViewEvent.Handler() {
59              @Override
60              public void onEvent(ProgramViewEvent event) {
61                  actionBox.setSelectedIndex(0);
62              }
63          });
64          eventBus.addHandler(ModelLoadedEvent.TYPE, new ModelLoadedEvent.Handler() {
65              @Override
66              public void onEvent(ModelLoadedEvent event) {
67                  resetActionList();
68              }
69          });
70      }
71  
72      @Override
73      protected void configureView() {
74          super.configureView();
75          addContentWidget(actionBox);
76          initialized = true;
77      }
78  
79      protected void resetActionList() {
80          //Only allow modify with version option for an active course that id also the latest version
81          ProgramStatus status = ProgramStatus.of(programModel);
82          String versionIndId = getStringProperty(ProgramConstants.VERSION_IND_ID);
83          Long sequenceNumber = programModel.get(ProgramConstants.VERSION_SEQUENCE_NUMBER);
84  
85          actionBox.clear();
86          if (status == ProgramStatus.ACTIVE) {
87              programRemoteService.isLatestVersion(versionIndId, sequenceNumber, new KSAsyncCallback<Boolean>() {
88                  public void onSuccess(Boolean isLatest) {
89                      actionBox.setList(ActionType.getValues(isLatest));
90                  }
91              });
92          } else {
93              actionBox.setList(ActionType.getValues(false));
94          }
95      }
96  }