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 }