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
25
26 public class CredentialViewController extends CredentialController {
27
28 private final DropdownList actionBox = new DropdownList(ActionType.getValues());
29
30
31
32
33
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
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 }