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 }