You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/09/17 19:54:55 UTC

svn commit: r816305 - in /incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: Container.java ContainerListener.java DesktopApplicationContext.java Window.java WindowListener.java skin/ContainerSkin.java skin/WindowSkin.java

Author: tvolkert
Date: Thu Sep 17 17:54:55 2009
New Revision: 816305

URL: http://svn.apache.org/viewvc?rev=816305&view=rev
Log:
Made Container.move() public, moved WindowListener.windowMoved() to be ContainerListener.componentMoved(), made DesktopApplicationContext set the host frame title based on the root owner of the top window, as opposed to the root owner of the active window

Modified:
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowListener.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java Thu Sep 17 17:54:55 2009
@@ -51,6 +51,13 @@
         }
 
         @Override
+        public void componentMoved(Container container, int from, int to) {
+            for (ContainerListener listener : this) {
+                listener.componentMoved(container, from, to);
+            }
+        }
+
+        @Override
         public void contextKeyChanged(Container container, String previousContextKey) {
             for (ContainerListener listener : this) {
                 listener.contextKeyChanged(container, previousContextKey);
@@ -215,22 +222,31 @@
     }
 
     /**
-     * Moves a component within the component sequence. This method does not
-     * fire any events; it is the caller's responsibility to ensure that
-     * appropriate events are fired (see
-     * {@link WindowListener#windowMoved(Window, int, int)} as an example).
+     * Moves a component within the component sequence.
      *
      * @param from
      * @param to
      */
-    protected void move(int from, int to) {
+    public void move(int from, int to) {
         if (from != to) {
+            int n = components.getLength();
+
+            if (from < 0
+                || from >= n
+                || to < 0
+                || to >= n) {
+                throw new IndexOutOfBoundsException();
+            }
+
             Sequence<Component> removed = components.remove(from, 1);
             Component component = removed.get(0);
             components.insert(component, to);
 
             // Repaint the area occupied by the component
             repaint(component.getDecoratedBounds());
+
+            // Notify listeners
+            containerListeners.componentMoved(this, from, to);
         }
     }
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java Thu Sep 17 17:54:55 2009
@@ -23,6 +23,32 @@
  */
 public interface ContainerListener  {
     /**
+     * Container listener adapter.
+     */
+    public static class Adapter implements ContainerListener {
+        @Override
+        public void componentInserted(Container container, int index) {
+        }
+
+        @Override
+        public void componentsRemoved(Container container, int index, Sequence<Component> removed) {
+        }
+
+        @Override
+        public void componentMoved(Container container, int from, int to) {
+        }
+
+        @Override
+        public void contextKeyChanged(Container container, String previousContextKey) {
+        }
+
+        @Override
+        public void focusTraversalPolicyChanged(Container container,
+            FocusTraversalPolicy previousFocusTraversalPolicy) {
+        }
+    }
+
+    /**
      * Called when a component has been inserted into a container's component
      * sequence.
      *
@@ -42,6 +68,16 @@
     public void componentsRemoved(Container container, int index, Sequence<Component> removed);
 
     /**
+     * Called when a component has moved from one z-index to another within a
+     * container.
+     *
+     * @param container
+     * @param from
+     * @param to
+     */
+    public void componentMoved(Container container, int from, int to);
+
+    /**
      * Called when a container's context key has changed.
      *
      * @param container

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java Thu Sep 17 17:54:55 2009
@@ -33,6 +33,7 @@
 import java.util.prefs.Preferences;
 
 import org.apache.pivot.collections.HashMap;
+import org.apache.pivot.collections.Sequence;
 import org.apache.pivot.collections.immutable.ImmutableMap;
 import org.apache.pivot.wtk.media.Image;
 import org.apache.pivot.wtk.media.Picture;
@@ -393,44 +394,68 @@
             }
         }
 
-        // Add a listener for active window changes
-        final WindowListener rootOwnerListener = new WindowListener.Adapter() {
-            @Override
-            public void titleChanged(Window window, String previousTitle) {
-                updateFrameTitleBar(window);
-            }
+        // Create the application context
+        applicationContext = new DesktopApplicationContext();
+        DisplayHost displayHost = applicationContext.getDisplayHost();
+
+        // Create the windowed host frame
+        windowedHostFrame = new HostFrame();
+        windowedHostFrame.add(displayHost);
+
+        windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
+        windowedHostFrame.setSize(width, height);
+        windowedHostFrame.setResizable(resizable);
 
+        if (center) {
+            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+            windowedHostFrame.setLocation((screenSize.width - width) / 2,
+                (screenSize.height - height) / 2);
+        } else {
+            windowedHostFrame.setLocation(x, y);
+        }
+
+        applicationContext.getDisplay().getContainerListeners().add(new ContainerListener.Adapter() {
             @Override
-            public void iconChanged(Window window, Image previousIcon) {
-                updateFrameTitleBar(window);
+            public void componentInserted(Container container, int index) {
+                if (index == container.getLength() - 1) {
+                    topWindowChanged((Display)container,
+                        (index > 0) ? (Window)container.get(index - 1) : null);
+                }
             }
-        };
 
-        Window.getWindowClassListeners().add(new WindowClassListener() {
             @Override
-            public void activeWindowChanged(Window previousActiveWindow) {
-                if (previousActiveWindow != null) {
-                    Window previousRootOwner = previousActiveWindow.getRootOwner();
-                    previousRootOwner.getWindowListeners().remove(rootOwnerListener);
+            public void componentsRemoved(Container container, int index,
+                Sequence<Component> removed) {
+                if (index == container.getLength()) {
+                    topWindowChanged((Display)container,
+                        (Window)removed.get(removed.getLength() - 1));
                 }
+            }
 
-                Window activeWindow = Window.getActiveWindow();
-
-                if (activeWindow != null) {
-                    Window rootOwner = activeWindow.getRootOwner();
-                    rootOwner.getWindowListeners().add(rootOwnerListener);
+            @Override
+            public void componentMoved(Container container, int from, int to) {
+                int n = container.getLength();
+                if (from == n) {
+                    topWindowChanged((Display)container, (Window)container.get(from));
+                } else if (to == n) {
+                    topWindowChanged((Display)container, (Window)container.get(n - 1));
                 }
+            }
 
+            private void topWindowChanged(Display display, Window previousTopWindow) {
                 if (updateFrameTitleBarCallback == null) {
                     updateFrameTitleBarCallback = new Runnable() {
                         @Override
                         public void run() {
-                            Window activeWindow = Window.getActiveWindow();
-                            if (activeWindow == null) {
+                            Display display = applicationContext.getDisplay();
+                            int n = display.getLength();
+
+                            if (n == 0) {
                                 windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
                                 windowedHostFrame.setIconImage(null);
                             } else {
-                                Window rootOwner = activeWindow.getRootOwner();
+                                Window topWindow = (Window)display.get(n - 1);
+                                Window rootOwner = topWindow.getRootOwner();
                                 updateFrameTitleBar(rootOwner);
                             }
 
@@ -443,25 +468,6 @@
             }
         });
 
-        // Create the application context
-        applicationContext = new DesktopApplicationContext();
-        DisplayHost displayHost = applicationContext.getDisplayHost();
-
-        // Create the windowed host frame
-        windowedHostFrame = new HostFrame();
-        windowedHostFrame.add(displayHost);
-
-        windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
-        windowedHostFrame.setSize(width, height);
-        windowedHostFrame.setResizable(resizable);
-
-        if (center) {
-            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
-            windowedHostFrame.setLocation((screenSize.width - width) / 2, (screenSize.height - height) / 2);
-        } else {
-            windowedHostFrame.setLocation(x, y);
-        }
-
         // Add a key listener to the display host to toggle between full-screen
         // and windowed mode
         displayHost.addKeyListener(new KeyAdapter() {

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java Thu Sep 17 17:54:55 2009
@@ -249,13 +249,6 @@
         }
 
         @Override
-        public void windowMoved(Window window, int from, int to) {
-            for (WindowListener listener : this) {
-                listener.windowMoved(window, from, to);
-            }
-        }
-
-        @Override
         public void ownerChanged(Window window, Window previousOwner) {
             for (WindowListener listener : this) {
                 listener.ownerChanged(window, previousOwner);
@@ -487,6 +480,11 @@
             throw new IllegalArgumentException("Owner is not open.");
         }
 
+        if (owner != null
+            && isOwner(owner)) {
+            throw new IllegalArgumentException("Owner is already an owned descendant");
+        }
+
         Window previousOwner = this.owner;
 
         if (previousOwner != owner) {
@@ -910,7 +908,6 @@
         int i = display.indexOf(this);
         if (i < n) {
             display.move(i, n);
-            windowListeners.windowMoved(this, i, n);
         }
 
         // Restore focus
@@ -941,10 +938,6 @@
         for (Window ownedWindow : sortedOwnedWindows) {
             ownedWindow.moveToFront();
         }
-
-        if (owner == null) {
-            requestActive();
-        }
     }
 
     /**
@@ -972,7 +965,6 @@
         int i = display.indexOf(this);
         if (i > 0) {
             display.move(i, 0);
-            windowListeners.windowMoved(this, i, 0);
         }
 
         if (owner != null) {

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowListener.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowListener.java Thu Sep 17 17:54:55 2009
@@ -49,10 +49,6 @@
         @Override
         public void maximizedChanged(Window window) {
         }
-
-        @Override
-        public void windowMoved(Window window, int from, int to) {
-        }
     }
 
     /**
@@ -101,13 +97,4 @@
      * @param window
      */
     public void maximizedChanged(Window window);
-
-    /**
-     * Called when a window's position has changed.
-     *
-     * @param window
-     * @param from
-     * @param to
-     */
-    public void windowMoved(Window window, int from, int to);
 }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java Thu Sep 17 17:54:55 2009
@@ -242,6 +242,10 @@
     }
 
     @Override
+    public void componentMoved(Container container, int from, int to) {
+    }
+
+    @Override
     public void contextKeyChanged(Container container, String previousContextKey) {
         // No-op
     }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java Thu Sep 17 17:54:55 2009
@@ -166,11 +166,6 @@
         // No-op
     }
 
-    @Override
-    public void windowMoved(Window window, int from, int to) {
-        // No-op
-    }
-
     // Window state events
     @Override
     public Vote previewWindowOpen(Window window, Display display) {