001 package org.kuali.student.lum.program.client;
002
003 import java.util.ArrayList;
004
005 import org.kuali.student.common.ui.client.configurable.mvc.Configurer;
006 import org.kuali.student.common.ui.client.mvc.DataModel;
007 import org.kuali.student.lum.common.client.configuration.AbstractControllerConfiguration;
008 import org.kuali.student.lum.common.client.configuration.Configuration;
009 import org.kuali.student.lum.common.client.configuration.ConfigurationManager;
010 import org.kuali.student.lum.program.client.major.edit.MajorSummaryConfiguration;
011
012 /**
013 * @author Igor
014 */
015 public abstract class AbstractProgramConfigurer extends Configurer {
016
017 protected ProgramController programController;
018
019 protected ConfigurationManager programSectionConfigManager;
020
021 public static final String PROPOSAL_PATH = "proposal";
022
023 {
024 groupName = ProgramMsgConstants.PROGRAM_MSG_GROUP;
025 }
026
027 public void configure(ProgramController viewController) {
028 this.programController = viewController;
029 configureProgramSections();
030 }
031
032 public String getProposalPath() {
033 return PROPOSAL_PATH;
034 }
035 /**
036 * Configures menu for Program Sections
037 */
038 private void configureProgramSections() {
039 String programSectionLabel = getLabel(ProgramMsgConstants.PROGRAM_MENU_SECTIONS);
040 programController.addMenu(programSectionLabel);
041 ArrayList<Configuration> configurations = getProgramSectionConfigManager().getConfigurations();
042 for (Configuration configuration : configurations) {
043 if (configuration instanceof AbstractControllerConfiguration) {
044 ((AbstractControllerConfiguration) configuration).setController(programController);
045 }
046 if (configuration instanceof MajorSummaryConfiguration) {
047 programController.addSpecialMenuItem(configuration.getView(), programSectionLabel);
048 } else {
049 programController.addMenuItem(programSectionLabel, configuration.getView());
050 }
051 }
052 }
053
054 public ProgramController getProgramController() {
055 return programController;
056 }
057
058 public void applyPermissions() {
059 DataModel dataModel = programController.getProgramModel();
060 for (Configuration configuration : programSectionConfigManager.getConfigurations()) {
061 if (configuration.checkPermission(dataModel)) {
062 configuration.applyRestrictions();
063 }else{
064 configuration.removeRestrictions();
065 }
066 }
067 }
068
069 public ConfigurationManager getProgramSectionConfigManager() {
070 return programSectionConfigManager;
071 }
072 }