001    package org.kuali.student.lum.program.client.widgets;
002    
003    import com.google.gwt.event.dom.client.ClickEvent;
004    import com.google.gwt.event.dom.client.ClickHandler;
005    import com.google.gwt.event.shared.HandlerManager;
006    import com.google.gwt.user.client.ui.Composite;
007    import com.google.gwt.user.client.ui.FlowPanel;
008    import org.kuali.student.common.ui.client.widgets.KSButton;
009    import org.kuali.student.common.ui.client.widgets.KSButtonAbstract;
010    import org.kuali.student.common.ui.client.widgets.KSLabel;
011    import org.kuali.student.lum.program.client.events.ChangeViewEvent;
012    import org.kuali.student.lum.program.client.properties.ProgramProperties;
013    
014    /**
015     * @author Igor
016     */
017    public class EditableHeader extends Composite {
018    
019        private FlowPanel content = new FlowPanel();
020    
021        private KSLabel sectionTitle;
022    
023        private KSButton editButton = new KSButton(ProgramProperties.get().common_edit(), KSButtonAbstract.ButtonStyle.DEFAULT_ANCHOR);
024    
025        private Enum<?> viewToken;
026    
027        private HandlerManager eventBus;
028    
029        public EditableHeader(String title, Enum<?> viewToken, HandlerManager eventBus) {
030            initWidget(content);
031            this.eventBus = eventBus;
032            this.viewToken = viewToken;
033            sectionTitle = new KSLabel(title);
034            buildLayout();
035            setStyles();
036            bind();
037        }
038    
039        private void bind() {
040            editButton.addClickHandler(new ClickHandler() {
041                @Override
042                public void onClick(ClickEvent event) {
043                    eventBus.fireEvent(new ChangeViewEvent(viewToken));
044                }
045            });
046        }
047    
048        private void setStyles() {
049            sectionTitle.addStyleName("sectionTitle");
050            content.addStyleName("editableHeader");
051            editButton.addStyleName("sectionEditLink");
052        }
053    
054        private void buildLayout() {
055            content.add(sectionTitle);
056            content.add(editButton);
057        }
058    }