001 /*
002 * Copyright 2002-2008 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005 * use this file except in compliance with the License. You may obtain a copy of
006 * the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013 * License for the specific language governing permissions and limitations under
014 * the License.
015 */
016 package org.springframework.richclient.application.docking.flexdock;
017
018 import org.flexdock.docking.DockingManager;
019 import org.flexdock.docking.drag.effects.DragPreview;
020 import org.flexdock.docking.drag.effects.EffectsManager;
021 import org.flexdock.perspective.PerspectiveFactory;
022 import org.flexdock.perspective.PerspectiveManager;
023 import org.springframework.beans.factory.InitializingBean;
024 import org.springframework.richclient.application.ApplicationPage;
025 import org.springframework.richclient.application.ApplicationPageFactory;
026 import org.springframework.richclient.application.ApplicationWindow;
027 import org.springframework.richclient.application.PageDescriptor;
028
029 /**
030 * Factory for <code>FlexDockApplicationPage</code> instances
031 *
032 * @author Peter De Bruycker
033 */
034 public class FlexDockApplicationPageFactory implements ApplicationPageFactory, InitializingBean {
035
036 private PerspectiveFactory perspectiveFactory;
037 private String defaultPerspective;
038 private DragPreview dragPreview;
039 private boolean floatingEnabled;
040 private boolean singleTabsAllowed;
041
042 public String getDefaultPerspective() {
043 return defaultPerspective;
044 }
045
046 public void setDefaultPerspective( String defaultPerspective ) {
047 this.defaultPerspective = defaultPerspective;
048 }
049
050 public ApplicationPage createApplicationPage( ApplicationWindow window, PageDescriptor descriptor ) {
051 final FlexDockApplicationPage page = new FlexDockApplicationPage();
052 page.setApplicationWindow( window );
053 page.setDescriptor( descriptor );
054
055 DockingManager.setDockableFactory( page );
056 // TODO uncomment for persistence
057 // DockingManager.setAutoPersist(true);
058
059 PerspectiveManager.setFactory( perspectiveFactory );
060 PerspectiveManager.getInstance().setCurrentPerspective( defaultPerspective, true );
061 // TODO define how the file name or persister will be passed in the app context
062 // PersistenceHandler persister = FilePersistenceHandler.createDefault(
063 // "test-flexdock.xml" );
064 // PerspectiveManager.setPersistenceHandler( persister );
065
066 page.loadLayout();
067
068 return page;
069 }
070
071 public void setPerspectiveFactory( PerspectiveFactory perspectiveFactory ) {
072 this.perspectiveFactory = perspectiveFactory;
073 }
074
075 public PerspectiveFactory getPerspectiveFactory() {
076 return perspectiveFactory;
077 }
078
079 public void afterPropertiesSet() throws Exception {
080 if( dragPreview != null ) {
081 EffectsManager.setPreview( dragPreview );
082 }
083
084 DockingManager.setFloatingEnabled( floatingEnabled );
085 DockingManager.setSingleTabsAllowed( singleTabsAllowed );
086 }
087
088 public DragPreview getDragPreview() {
089 return dragPreview;
090 }
091
092 public void setDragPreview( DragPreview dragPreview ) {
093 this.dragPreview = dragPreview;
094 }
095
096 public boolean isFloatingEnabled() {
097 return floatingEnabled;
098 }
099
100 public void setFloatingEnabled( boolean floatingEnabled ) {
101 this.floatingEnabled = floatingEnabled;
102 }
103 }