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

Reply via email to