001    package org.springframework.richclient.application.support;
002    
003    import com.jgoodies.forms.layout.CellConstraints;
004    import com.jgoodies.forms.layout.FormLayout;
005    import org.springframework.richclient.command.CommandGroup;
006    import org.springframework.richclient.command.CommandGroupJComponentBuilder;
007    
008    import javax.swing.*;
009    
010    /**
011     * Abstract class for views that use some sort of navigation component for the overall application.
012     */
013    public abstract class AbstractNavigatorView extends AbstractView
014    {
015        private CommandGroup currentNavigation;
016    
017        protected AbstractNavigatorView(CommandGroup currentNavigation)
018        {
019            this.currentNavigation = currentNavigation;
020        }
021    
022        public abstract CommandGroupJComponentBuilder getNavigationBuilder();
023    
024        protected JComponent createControl()
025        {
026            JPanel navigationView = new JPanel(new FormLayout("fill:pref:grow", "fill:pref:grow"));
027            navigationView.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
028            CellConstraints cc = new CellConstraints();
029            navigationView.add(getNavigationBuilder().buildComponent(this.currentNavigation), cc.xy(1, 1));
030            return navigationView;
031        }
032    }