Revision: 1685 http://svn.sourceforge.net/spring-rich-c/?rev=1685&view=rev Author: mathiasbr Date: 2007-01-22 06:53:27 -0800 (Mon, 22 Jan 2007)
Log Message: ----------- applied patch from Rogan Dawes to support focus change events Modified Paths: -------------- trunk/spring-richclient/vldocking/src/main/java/org/springframework/richclient/application/vldocking/VLDockingApplicationPage.java Modified: trunk/spring-richclient/vldocking/src/main/java/org/springframework/richclient/application/vldocking/VLDockingApplicationPage.java =================================================================== --- trunk/spring-richclient/vldocking/src/main/java/org/springframework/richclient/application/vldocking/VLDockingApplicationPage.java 2007-01-22 14:52:47 UTC (rev 1684) +++ trunk/spring-richclient/vldocking/src/main/java/org/springframework/richclient/application/vldocking/VLDockingApplicationPage.java 2007-01-22 14:53:27 UTC (rev 1685) @@ -1,12 +1,12 @@ /* * Copyright 2002-2004 the original author or authors. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -39,6 +39,8 @@ import com.vlsolutions.swing.docking.DockableState; import com.vlsolutions.swing.docking.DockingContext; import com.vlsolutions.swing.docking.DockingDesktop; +import com.vlsolutions.swing.docking.event.DockableSelectionEvent; +import com.vlsolutions.swing.docking.event.DockableSelectionListener; import com.vlsolutions.swing.docking.event.DockableStateChangeEvent; import com.vlsolutions.swing.docking.event.DockableStateChangeListener; import com.vlsolutions.swing.docking.event.DockableStateWillChangeEvent; @@ -46,7 +48,7 @@ /** * @author rdawes - * + * */ public class VLDockingApplicationPage extends AbstractApplicationPage implements PageLayoutBuilder { @@ -61,8 +63,8 @@ private Resource initialLayout = null; - public VLDockingApplicationPage( ApplicationWindow window, PageDescriptor pageDescriptor ) { - super( window, pageDescriptor ); + public VLDockingApplicationPage(ApplicationWindow window, PageDescriptor pageDescriptor) { + super(window, pageDescriptor); if (pageDescriptor instanceof VLDockingPageDescriptor) { VLDockingPageDescriptor descriptor = (VLDockingPageDescriptor) pageDescriptor; setLayoutManager(descriptor.getLayoutManager()); @@ -78,7 +80,7 @@ protected Dockable getDockable(PageComponent pageComponent) { DockableState[] states = desktop.getDockables(); - for (int i=0; i<states.length; i++) { + for (int i = 0; i < states.length; i++) { Dockable dockable = states[i].getDockable(); PageComponent pc = getPageComponent(dockable); if (pc == pageComponent) @@ -87,9 +89,9 @@ return null; } - protected boolean giveFocusTo( PageComponent pageComponent ) { + protected boolean giveFocusTo(PageComponent pageComponent) { Dockable dockable = getDockable(pageComponent); - if( dockable == null ) { + if (dockable == null) { return false; } @@ -101,16 +103,18 @@ return pageComponent.getControl().requestFocusInWindow(); } - public void addView( String viewDescriptorId ) { - showView( viewDescriptorId ); + public void addView(String viewDescriptorId) { + showView(viewDescriptorId); } protected void doAddPageComponent(PageComponent pageComponent) { - if (resolving) return; + if (resolving) + return; pageComponent.getControl(); Dockable dockable = getDockable(pageComponent); - if (dockable != null) return; - dockable = createDockable( pageComponent ); + if (dockable != null) + return; + dockable = createDockable(pageComponent); getLayoutManager().addDockable(desktop, dockable); } @@ -124,18 +128,19 @@ protected void doRemovePageComponent(PageComponent pageComponent) { Dockable dockable = getDockable(pageComponent); - if( dockable != null ) { - getLayoutManager().removeDockable(desktop,dockable); + if (dockable != null) { + getLayoutManager().removeDockable(desktop, dockable); } } protected JComponent createControl() { - String name = getPageDescriptor().getId(); - desktop = new DockingDesktop(name, getDockingContext()); - desktop.setName(name); + String name = getPageDescriptor().getId(); + desktop = new DockingDesktop(name, getDockingContext()); + desktop.setName(name); DockableListener listener = new DockableListener(); desktop.addDockableStateChangeListener(listener); desktop.addDockableStateWillChangeListener(listener); + desktop.addDockableSelectionListener(listener); if (initialLayout != null) { try { @@ -144,44 +149,44 @@ in.close(); } catch (IOException ioe) { logger.warn("Error reading workspace layout " + initialLayout + ", using defaults", ioe); - getPageDescriptor().buildInitialLayout( this ); + getPageDescriptor().buildInitialLayout(this); } catch (SAXException saxe) { logger.warn("Error parsing workspace layout " + initialLayout + ", using defaults", saxe); - getPageDescriptor().buildInitialLayout( this ); + getPageDescriptor().buildInitialLayout(this); } catch (ParserConfigurationException pce) { logger.warn("Error parsing workspace layout " + initialLayout + ", using defaults", pce); - getPageDescriptor().buildInitialLayout( this ); + getPageDescriptor().buildInitialLayout(this); } if (desktop.getDockables().length == 0) { - getPageDescriptor().buildInitialLayout( this ); + getPageDescriptor().buildInitialLayout(this); } } else { - getPageDescriptor().buildInitialLayout( this ); + getPageDescriptor().buildInitialLayout(this); } return desktop; } - protected void updatePageComponentProperties( PageComponent pageComponent ) { - Dockable dockable = getDockable( pageComponent ); + protected void updatePageComponentProperties(PageComponent pageComponent) { + Dockable dockable = getDockable(pageComponent); DockKey dockKey = dockable.getDockKey(); - if( pageComponent.getIcon() != null ) { - dockKey.setIcon( pageComponent.getIcon() ); + if (pageComponent.getIcon() != null) { + dockKey.setIcon(pageComponent.getIcon()); } - dockKey.setName( pageComponent.getDisplayName() ); - dockKey.setTooltip( pageComponent.getCaption() ); + dockKey.setName(pageComponent.getDisplayName()); + dockKey.setTooltip(pageComponent.getCaption()); } - /** - * @return the dockingContext - */ - public DockingContext getDockingContext() { + /** + * @return the dockingContext + */ + public DockingContext getDockingContext() { if (this.dockingContext == null) { this.dockingContext = new DockingContext(); this.dockingContext.setDockableResolver(new ViewDescriptorResolver()); } - return this.dockingContext; - } + return this.dockingContext; + } /** * @return the layoutManager @@ -194,14 +199,16 @@ } /** - * @param layoutManager the layoutManager to set + * @param layoutManager + * the layoutManager to set */ public void setLayoutManager(VLDockingLayoutManager layoutManager) { this.layoutManager = layoutManager; } /** - * @param initialLayout the initialLayout to set + * @param initialLayout + * the initialLayout to set */ public void setInitialLayout(Resource initialLayout) { this.initialLayout = initialLayout; @@ -228,9 +235,12 @@ return super.close(); } - private class DockableListener implements DockableStateChangeListener, DockableStateWillChangeListener { + private class DockableListener implements DockableStateChangeListener, DockableStateWillChangeListener, + DockableSelectionListener { - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.vlsolutions.swing.docking.event.DockableStateWillChangeListener#dockableStateWillChange(com.vlsolutions.swing.docking.event.DockableStateWillChangeEvent) */ public void dockableStateWillChange(DockableStateWillChangeEvent event) { @@ -246,7 +256,9 @@ } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see com.vlsolutions.swing.docking.event.DockableStateChangeListener#dockableStateChanged(com.vlsolutions.swing.docking.event.DockableStateChangeEvent) */ public void dockableStateChanged(DockableStateChangeEvent event) { @@ -254,12 +266,27 @@ DockableState newState = event.getNewState(); Dockable dockable = newState.getDockable(); PageComponent pc = getPageComponent(dockable); - if (pc == null) return; - if ( previousState != null && !previousState.isClosed() && newState.isClosed()) { + if (pc == null) + return; + if (previousState != null && !previousState.isClosed() && newState.isClosed()) { pc.getContext().getPage().close(pc); } } + /* + * (non-Javadoc) + * + * @see com.vlsolutions.swing.docking.event.DockableSelectionListener#selectionChanged(com.vlsolutions.swing.docking.event.DockableSelectionEvent) + */ + public void selectionChanged(DockableSelectionEvent e) { + Dockable dockable = e.getSelectedDockable(); + if (dockable != null) { + PageComponent pc = getPageComponent(dockable); + if (pc != null) + setActiveComponent(pc); + } + } + } private class ViewDescriptorResolver implements DockableResolver { @@ -280,15 +307,21 @@ private class DefaultLayoutManager implements VLDockingLayoutManager { - /* (non-Javadoc) - * @see org.springframework.richclient.application.vldocking.VLDockingLayoutManager#addDockable(com.vlsolutions.swing.docking.DockingDesktop, com.vlsolutions.swing.docking.Dockable) + /* + * (non-Javadoc) + * + * @see org.springframework.richclient.application.vldocking.VLDockingLayoutManager#addDockable(com.vlsolutions.swing.docking.DockingDesktop, + * com.vlsolutions.swing.docking.Dockable) */ public void addDockable(DockingDesktop desktop, Dockable dockable) { desktop.addDockable(dockable); } - /* (non-Javadoc) - * @see org.springframework.richclient.application.vldocking.VLDockingLayoutManager#removeDockable(com.vlsolutions.swing.docking.DockingDesktop, com.vlsolutions.swing.docking.Dockable) + /* + * (non-Javadoc) + * + * @see org.springframework.richclient.application.vldocking.VLDockingLayoutManager#removeDockable(com.vlsolutions.swing.docking.DockingDesktop, + * com.vlsolutions.swing.docking.Dockable) */ public void removeDockable(DockingDesktop desktop, Dockable dockable) { desktop.remove(dockable); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ spring-rich-c-cvs mailing list spring-rich-c-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs