1 package org.kuali.student.lum.program.client.major.edit;
2
3 import com.google.gwt.event.dom.client.ClickEvent;
4 import com.google.gwt.event.dom.client.ClickHandler;
5 import com.google.gwt.user.client.ui.FlexTable;
6
7 import org.kuali.student.common.ui.client.configurable.mvc.Configurer;
8 import org.kuali.student.common.ui.client.configurable.mvc.sections.VerticalSection;
9 import org.kuali.student.common.ui.client.configurable.mvc.views.VerticalSectionView;
10 import org.kuali.student.common.ui.client.mvc.DataModel;
11 import org.kuali.student.common.ui.client.widgets.KSButton;
12 import org.kuali.student.common.ui.client.widgets.KSCheckBox;
13 import org.kuali.student.common.ui.client.widgets.KSButtonAbstract.ButtonStyle;
14 import org.kuali.student.common.ui.client.widgets.field.layout.element.MessageKeyInfo;
15 import org.kuali.student.lum.common.client.configuration.AbstractSectionConfiguration;
16 import org.kuali.student.lum.common.client.widgets.AppLocations;
17 import org.kuali.student.lum.program.client.ProgramConstants;
18 import org.kuali.student.lum.program.client.ProgramMsgConstants;
19 import org.kuali.student.lum.program.client.ProgramSections;
20 import org.kuali.student.lum.program.client.events.AddSpecializationEvent;
21 import org.kuali.student.lum.program.client.major.MajorManager;
22 import org.kuali.student.lum.program.client.permissions.ModelPermissionType;
23 import org.kuali.student.lum.program.client.variation.VariationsBinding;
24
25
26
27
28 public class SpecializationsEditConfiguration extends AbstractSectionConfiguration {
29
30 private final KSButton addSpecializationButton;
31
32 public SpecializationsEditConfiguration(Configurer configurer) {
33 this.setConfigurer(configurer);
34 addSpecializationButton = new KSButton(getLabel(ProgramMsgConstants.VARIATIONINFORMATION_BUTTON_ADDSPECIALIZATION), ButtonStyle.SECONDARY);
35 rootSection = new VerticalSectionView(ProgramSections.SPECIALIZATIONS_EDIT, getLabel(ProgramMsgConstants.PROGRAM_MENU_SECTIONS_SPECIALIZATIONS), ProgramConstants.PROGRAM_MODEL_ID);
36 bind();
37 }
38
39 private void bind() {
40 addSpecializationButton.addClickHandler(new ClickHandler() {
41 @Override
42 public void onClick(ClickEvent event) {
43 MajorManager.getEventBus().fireEvent(new AddSpecializationEvent());
44 }
45 });
46 }
47
48 @Override
49 protected void buildLayout() {
50 VerticalSection section = new VerticalSection();
51 KSCheckBox isVariationRequiredCheckBox = new KSCheckBox(getLabel(ProgramMsgConstants.PROGRAMSPECIALIZATION_INSTRUCTIONS));
52 configurer.addField(section, ProgramConstants.IS_VARIATION_REQUIRED, null, isVariationRequiredCheckBox);
53 configurer.addField(section, ProgramConstants.VARIATIONS, new MessageKeyInfo(""), new FlexTable()).setWidgetBinding(new VariationsBinding(AppLocations.Locations.EDIT_VARIATION.getLocation(), true, this));
54 configurer.addField(section, ProgramConstants.DEGREE_TYPE, generateMessageInfo(ProgramMsgConstants.PROGRAMINFORMATION_DEGREETYPE)).getFieldElement().setVisible(false);
55 section.addWidget(addSpecializationButton);
56 rootSection.addSection(section);
57 }
58
59 @Override
60 public boolean checkPermission(DataModel model) {
61 return ModelPermissionType.DRAFT_STATUS.check(model);
62 }
63
64 @Override
65 public void applyRestrictions() {
66 addSpecializationButton.setEnabled(false);
67 }
68
69 @Override
70 public void removeRestrictions() {
71 addSpecializationButton.setEnabled(true);
72 }
73 }