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 }