001package org.kuali.student.lum.program.client.versions;
002
003import org.kuali.student.common.ui.client.application.ViewContext;
004import org.kuali.student.common.ui.client.configurable.mvc.layouts.BasicLayoutWithContentHeader;
005import org.kuali.student.common.ui.client.mvc.Callback;
006import org.kuali.student.common.ui.client.mvc.DataModel;
007import org.kuali.student.lum.program.client.ProgramConstants;
008import org.kuali.student.lum.program.client.widgets.ProgramSideBar.Type;
009
010import com.google.gwt.event.shared.HandlerManager;
011
012public class ProgramVersionsController extends BasicLayoutWithContentHeader{
013        
014        public static enum Views{VERSION_SELECT}
015        
016        private ProgramSelectVersionsView programSelectVersionView;
017        private DataModel programModel;
018
019    protected HandlerManager eventBus;
020        private boolean initialized = false;
021
022        private Type type;
023        
024        public ProgramVersionsController(DataModel dataModel, Type type, ViewContext viewContext, HandlerManager eventBus) {
025                super(ProgramVersionsController.class.toString());
026        this.setDefaultView(Views.VERSION_SELECT);
027        this.viewContainer.addStyleName("standard-content-padding");
028        this.eventBus = eventBus;
029        this.programModel = dataModel;
030        this.type = type;
031        setViewContext(viewContext);
032        initialize();
033    }   
034        
035        private void initialize() {
036        super.setDefaultModelId("Model");
037        programSelectVersionView = new ProgramSelectVersionsView(programModel, this, "Versions", Views.VERSION_SELECT);
038                this.addView(programSelectVersionView);
039        }
040         
041        
042    @Override
043    public void showDefaultView(final Callback<Boolean> onReadyCallback) {
044        init(new Callback<Boolean>() {
045
046            @Override
047            public void exec(Boolean result) {
048                if (result) {
049                        ProgramVersionsController.super.showDefaultView(onReadyCallback);
050                } else {
051                    onReadyCallback.exec(false);
052                }
053            }
054        });
055    }
056    
057    @Override
058    public void beforeShow(Callback<Boolean> onReadyCallback) {
059        this.getHeader().showPrint(false);
060        onReadyCallback.exec(true);
061    }
062    
063    private void init(final Callback<Boolean> onReadyCallback) {
064        onReadyCallback.exec(true);
065    }
066        
067        @Override
068        public <V extends Enum<?>> void showView(V viewType, Callback<Boolean> onReadyCallback) {
069        String programTitle = programModel.get(ProgramConstants.LONG_TITLE);
070                this.setName(programTitle);     
071        this.getHeader().setTitle(programTitle);
072                super.showView(viewType, onReadyCallback);              
073        }
074
075        public void setCurrentTitle(String currentTitle) {
076        this.getHeader().setTitle(currentTitle);
077        }
078
079        public Type getType() {
080                return type;
081        }
082
083        public void setType(Type type) {
084                this.type = type;
085        }
086                
087}