001    package org.springframework.richclient.taskpane;
002    
003    import org.springframework.richclient.application.ApplicationPage;
004    import org.springframework.richclient.application.config.NavigatorApplicationLifecycleAdvisor;
005    import org.springframework.richclient.application.support.DefaultApplicationWindow;
006    import org.springframework.richclient.command.AbstractCommand;
007    import org.springframework.richclient.command.CommandGroup;
008    
009    import javax.swing.*;
010    
011    public class TaskPaneNavigatorApplicationWindow extends DefaultApplicationWindow
012    {
013        private JSplitPane framedPage;
014    
015        private boolean onlyOneExpanded;
016    
017        private IconGenerator<AbstractCommand> taskPaneIconGenerator;
018    
019        @Override
020        protected JComponent createWindowContentPane()
021        {
022            CommandGroup navigationCommandGroup = ((NavigatorApplicationLifecycleAdvisor) getAdvisor())
023                    .getNavigationCommandGroup();
024            TaskPaneNavigatorView taskPaneNavigatorView = new TaskPaneNavigatorView(navigationCommandGroup);
025            taskPaneNavigatorView.setIconGenerator(getTaskPaneIconGenerator());
026            taskPaneNavigatorView.setOnlyOneExpanded(onlyOneExpanded);
027    
028            framedPage = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, new JScrollPane(taskPaneNavigatorView.getControl(), JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER),
029                    null);
030            framedPage.setOneTouchExpandable(true);
031    
032            return framedPage;
033        }
034    
035        public boolean hasOnlyOneExpanded()
036        {
037            return onlyOneExpanded;
038        }
039    
040        public void setOnlyOneExpanded(boolean onlyOneExpanded)
041        {
042            this.onlyOneExpanded = onlyOneExpanded;
043        }
044    
045        @Override
046        protected void setActivePage(ApplicationPage page)
047        {
048            framedPage.setRightComponent(page.getControl());
049            framedPage.revalidate();
050        }
051    
052        public IconGenerator<AbstractCommand> getTaskPaneIconGenerator()
053        {
054            return taskPaneIconGenerator;
055        }
056    
057        public void setTaskPaneIconGenerator(IconGenerator<AbstractCommand> taskPaneIconGenerator)
058        {
059            this.taskPaneIconGenerator = taskPaneIconGenerator;
060        }
061    }
062