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.vldocking; 017 018 import java.awt.Component; 019 020 import org.springframework.core.style.ToStringCreator; 021 import org.springframework.richclient.application.PageComponent; 022 import org.springframework.richclient.application.ViewDescriptor; 023 024 import com.vlsolutions.swing.docking.DockKey; 025 import com.vlsolutions.swing.docking.Dockable; 026 import com.vlsolutions.swing.docking.DockingConstants.Hide; 027 028 /** 029 * @author Rogan Dawes 030 */ 031 public class ViewDescriptorDockable implements Dockable { 032 033 private ViewDescriptor viewDescriptor; 034 035 private PageComponent pageComponent; 036 037 private DockKey dockKey; 038 039 public ViewDescriptorDockable(ViewDescriptor viewDescriptor) { 040 this(viewDescriptor, null); 041 } 042 043 public ViewDescriptorDockable(ViewDescriptor viewDescriptor, 044 PageComponent pageComponent) { 045 this.viewDescriptor = viewDescriptor; 046 this.pageComponent = pageComponent; 047 this.dockKey = new DockKey(viewDescriptor.getId()); 048 049 dockKey.setName(viewDescriptor.getDisplayName()); 050 dockKey.setTooltip(viewDescriptor.getCaption()); 051 dockKey.setIcon(viewDescriptor.getIcon()); 052 053 boolean autoHideEnabled = VLDockingViewDescriptor.DEFAULT_AUTOHIDEENABLED; 054 Hide autoHideBorder = VLDockingViewDescriptor.DEFAULT_AUTOHIDEBORDER; 055 boolean closeEnabled = VLDockingViewDescriptor.DEFAULT_CLOSEENABLED; 056 boolean floatEnabled = VLDockingViewDescriptor.DEFAULT_FLOATENABLED; 057 boolean maximizeEnabled = VLDockingViewDescriptor.DEFAULT_MAXIMIZEENABLED; 058 059 if (viewDescriptor instanceof VLDockingViewDescriptor) { 060 VLDockingViewDescriptor dockingViewDescriptor = (VLDockingViewDescriptor) viewDescriptor; 061 autoHideEnabled = dockingViewDescriptor.isAutoHideEnabled(); 062 autoHideBorder = dockingViewDescriptor.getAutoHideBorder(); 063 closeEnabled = dockingViewDescriptor.isCloseEnabled(); 064 floatEnabled = dockingViewDescriptor.isFloatEnabled(); 065 maximizeEnabled = dockingViewDescriptor.isMaximizeEnabled(); 066 } 067 dockKey.setAutoHideEnabled(autoHideEnabled); 068 dockKey.setAutoHideBorder(autoHideBorder); 069 dockKey.setCloseEnabled(closeEnabled); 070 dockKey.setFloatEnabled(floatEnabled); 071 dockKey.setMaximizeEnabled(maximizeEnabled); 072 } 073 074 public PageComponent getPageComponent() { 075 if (pageComponent == null) 076 pageComponent = viewDescriptor.createPageComponent(); 077 return pageComponent; 078 } 079 080 /* 081 * (non-Javadoc) 082 * 083 * @see com.vlsolutions.swing.docking.Dockable#getComponent() 084 */ 085 public Component getComponent() { 086 return getPageComponent().getControl(); 087 } 088 089 /* 090 * (non-Javadoc) 091 * 092 * @see com.vlsolutions.swing.docking.Dockable#getDockKey() 093 */ 094 public DockKey getDockKey() { 095 return dockKey; 096 } 097 098 public String toString() { 099 return new ToStringCreator(this).append("viewDescriptor", 100 viewDescriptor.getId()).toString(); 101 } 102 }