You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2009/09/21 21:53:44 UTC

svn commit: r817388 - in /incubator/pivot/trunk: tutorials/src/org/apache/pivot/tutorials/ tutorials/src/org/apache/pivot/tutorials/layout/ tutorials/src/org/apache/pivot/tutorials/menus/ wtk/src/org/apache/pivot/wtk/ wtk/src/org/apache/pivot/wtk/conte...

Author: gbrown
Date: Mon Sep 21 19:53:42 2009
New Revision: 817388

URL: http://svn.apache.org/viewvc?rev=817388&view=rev
Log:
Reintroduce setting window owner via Window#open().

Modified:
    incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/KitchenSink.java
    incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/layout/TablePanes.java
    incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Palette.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Prompt.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.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/WindowStateListener.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/ListViewItemEditor.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewCellEditor.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewRowEditor.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeViewNodeEditor.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuBarItemSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraPaletteSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CardPaneTest.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/FileBrowserSheetTest.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SheetTest.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowTest.java
    incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx

Modified: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/KitchenSink.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/KitchenSink.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/KitchenSink.java (original)
+++ incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/KitchenSink.java Mon Sep 21 19:53:42 2009
@@ -42,8 +42,6 @@
 import org.apache.pivot.wtk.Button;
 import org.apache.pivot.wtk.ButtonPressListener;
 import org.apache.pivot.wtk.ComponentMouseButtonListener;
-import org.apache.pivot.wtk.Dialog;
-import org.apache.pivot.wtk.DialogCloseListener;
 import org.apache.pivot.wtk.ListButton;
 import org.apache.pivot.wtk.MenuHandler;
 import org.apache.pivot.wtk.DesktopApplicationContext;
@@ -64,8 +62,6 @@
 import org.apache.pivot.wtk.Display;
 import org.apache.pivot.wtk.Rollup;
 import org.apache.pivot.wtk.RollupStateListener;
-import org.apache.pivot.wtk.Sheet;
-import org.apache.pivot.wtk.SheetCloseListener;
 import org.apache.pivot.wtk.Slider;
 import org.apache.pivot.wtk.SliderValueListener;
 import org.apache.pivot.wtk.SortDirection;
@@ -858,14 +854,7 @@
                             alert.setTitle("Select Icon");
                             alert.setSelectedOption(0);
                             alert.getDecorators().update(0, new ReflectionDecorator());
-
-                            alert.setOwner(window);
-                            alert.open(window.getDisplay(), new DialogCloseListener() {
-                                @Override
-                                public void dialogClosed(Dialog dialog, boolean modal) {
-                                    dialog.setOwner(null);
-                                }
-                            });
+                            alert.open(window);
                         } else {
                             String message = (String)userData.get("message");
                             Alert.alert(MessageType.valueOf(messageType.toUpperCase()), message, window);
@@ -906,14 +895,7 @@
                             prompt.setTitle("Select Icon");
                             prompt.setSelectedOption(0);
                             prompt.getDecorators().update(0, new ReflectionDecorator());
-
-                            prompt.setOwner(window);
-                            prompt.open(window.getDisplay(), new SheetCloseListener() {
-                                @Override
-                                public void sheetClosed(Sheet sheet) {
-                                    sheet.setOwner(null);
-                                }
-                            });
+                            prompt.open(window);
                         } else {
                             String message = (String)userData.get("message");
                             Prompt.prompt(MessageType.valueOf(messageType.toUpperCase()), message, window);

Modified: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/layout/TablePanes.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/layout/TablePanes.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/layout/TablePanes.java (original)
+++ incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/layout/TablePanes.java Mon Sep 21 19:53:42 2009
@@ -111,13 +111,7 @@
                     throw new RuntimeException(exception);
                 }
 
-                sheet.setOwner(window);
-                sheet.open(window.getDisplay(), new SheetCloseListener() {
-                    @Override
-                    public void sheetClosed(Sheet sheet) {
-                        sheet.setOwner(null);
-                    }
-                });
+                sheet.open(window);
             }
         });
 
@@ -140,13 +134,7 @@
                     throw new RuntimeException(exception);
                 }
 
-                sheet.setOwner(window);
-                sheet.open(window.getDisplay(), new SheetCloseListener() {
-                    @Override
-                    public void sheetClosed(Sheet sheet) {
-                        sheet.setOwner(null);
-                    }
-                });
+                sheet.open(window);
             }
         });
 
@@ -180,13 +168,7 @@
                     throw new RuntimeException(exception);
                 }
 
-                sheet.setOwner(window);
-                sheet.open(window.getDisplay(), new SheetCloseListener() {
-                    @Override
-                    public void sheetClosed(Sheet sheet) {
-                        sheet.setOwner(null);
-                    }
-                });
+                sheet.open(window);
             }
         });
 
@@ -201,16 +183,13 @@
                 final Prompt prompt = new Prompt(MessageType.QUESTION, message, options, body);
                 prompt.setSelectedOption(0);
 
-                prompt.setOwner(window);
-                prompt.open(window.getDisplay(), new SheetCloseListener() {
+                prompt.open(window, new SheetCloseListener() {
                     @Override
                     public void sheetClosed(Sheet sheet) {
                         if (prompt.getResult() && prompt.getSelectedOption() == 0) {
                             int rowIndex = tablePane.getRowAt(contextMenuHandler.getY());
                             tablePane.getRows().remove(rowIndex, 1);
                         }
-
-                        prompt.setOwner(null);
                     }
                 });
             }
@@ -235,13 +214,7 @@
                     throw new RuntimeException(exception);
                 }
 
-                sheet.setOwner(window);
-                sheet.open(window.getDisplay(), new SheetCloseListener() {
-                    @Override
-                    public void sheetClosed(Sheet sheet) {
-                        sheet.setOwner(null);
-                    }
-                });
+                sheet.open(window);
             }
         });
 
@@ -276,13 +249,7 @@
                     throw new RuntimeException(exception);
                 }
 
-                sheet.setOwner(window);
-                sheet.open(window.getDisplay(), new SheetCloseListener() {
-                    @Override
-                    public void sheetClosed(Sheet sheet) {
-                        sheet.setOwner(null);
-                    }
-                });
+                sheet.open(window);
             }
         });
 
@@ -297,8 +264,7 @@
                 final Prompt prompt = new Prompt(MessageType.QUESTION, message, options, body);
                 prompt.setSelectedOption(0);
 
-                prompt.setOwner(window);
-                prompt.open(window.getDisplay(), new SheetCloseListener() {
+                prompt.open(window, new SheetCloseListener() {
                     @Override
                     public void sheetClosed(Sheet sheet) {
                         if (prompt.getResult() && prompt.getSelectedOption() == 0) {
@@ -311,8 +277,6 @@
 
                             tablePane.getColumns().remove(columnIndex, 1);
                         }
-
-                        prompt.setOwner(null);
                     }
                 });
             }

Modified: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java (original)
+++ incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/MenuBars.java Mon Sep 21 19:53:42 2009
@@ -82,7 +82,7 @@
         Action.getNamedActions().put("fileOpen", new Action() {
             @Override
             public void perform() {
-                fileBrowserSheet.open(window.getDisplay());
+                fileBrowserSheet.open(window);
             }
         });
 
@@ -120,7 +120,6 @@
         tabPane = (TabPane)wtkxSerializer.get("tabPane");
 
         fileBrowserSheet = new FileBrowserSheet(FileBrowserSheet.Mode.OPEN);
-        fileBrowserSheet.setOwner(window);
 
         window.open(display);
     }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Alert.java Mon Sep 21 19:53:42 2009
@@ -153,16 +153,7 @@
     public static void alert(MessageType messageType, String message, Component body, Window owner,
         DialogCloseListener dialogCloseListener) {
         Alert alert = createAlert(messageType, message, body);
-        alert.setOwner(owner);
-
-        alert.getDialogStateListeners().add(new DialogStateListener.Adapter() {
-            @Override
-            public void dialogClosed(Dialog dialog, boolean modal) {
-                dialog.setOwner(null);
-            }
-        });
-
-        alert.open(owner.getDisplay(), dialogCloseListener);
+        alert.open(owner.getDisplay(), owner, true, dialogCloseListener);
     }
 
     private static Alert createAlert(MessageType messageType, String message, Component body) {

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java Mon Sep 21 19:53:42 2009
@@ -845,8 +845,7 @@
 
                                     menuPopup.getWindowStateListeners().add(new WindowStateListener.Adapter() {
                                         @Override
-                                        public void windowClosed(Window window, Display display) {
-                                            window.setOwner(null);
+                                        public void windowClosed(Window window, Display display, Window owner) {
                                             menuPopup.getMenu().getSections().clear();
                                             menuPopup = null;
                                             window.getWindowStateListeners().remove(this);
@@ -860,11 +859,9 @@
                                         window = mouseOwner.getWindow();
                                     }
 
-                                    menuPopup.setOwner(window);
-
                                     Display display = window.getDisplay();
-                                    menuPopup.open(display, mouseOwner.mapPointToAncestor(display,
-                                        x, y));
+                                    Point location = mouseOwner.mapPointToAncestor(display, x, y);
+                                    menuPopup.open(window, location);
                                 }
                             }
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java Mon Sep 21 19:53:42 2009
@@ -77,61 +77,73 @@
         installSkin(Dialog.class);
     }
 
-    @Override
-    public final void setOwner(Window owner) {
-        if (isOpen()
-            && modal) {
-            throw new IllegalStateException("Dialog is open.");
-        }
-
-        super.setOwner(owner);
-    }
-
     /**
      * Opens the dialog.
      *
      * @param display
+     * The display on which the dialog will be opened.
+     *
+     * @param owner
+     * The window's owner. The dialog will be modal over this window.
      */
     @Override
-    public final void open(Display display) {
-        open(display, true, null);
+    public final void open(Display display, Window owner) {
+        open(display, owner, owner != null, null);
     }
 
     /**
      * Opens the dialog.
      *
      * @param display
-     * @param modal
+     * The display on which the dialog will be opened.
+     *
+     * @param dialogCloseListener
+     * A listener that will be called when the dialog is closed.
      */
-    public final void open(Display display, boolean modal) {
-        open(display, modal, null);
+    public final void open(Display display, DialogCloseListener dialogCloseListener) {
+        open(display, null, false, dialogCloseListener);
     }
 
     /**
      * Opens the dialog.
      *
-     * @param display
+     * @param owner
+     * The window's owner. The dialog will be modal over this window.
+     *
      * @param dialogCloseListener
+     * A listener that will be called when the dialog is closed.
      */
-    public final void open(Display display, DialogCloseListener dialogCloseListener) {
-        open(display, true, dialogCloseListener);
+    public final void open(Window owner, DialogCloseListener dialogCloseListener) {
+        if (owner == null) {
+            throw new IllegalArgumentException();
+        }
+
+        open(owner.getDisplay(), owner, true, dialogCloseListener);
     }
 
     /**
      * Opens the dialog.
      *
      * @param display
+     * The display on which the dialog will be opened.
+     *
+     * @param owner
+     * The window's owner, or <tt>null</tt> if the window has no owner. Required if the dialog
+     * is modal.
+     *
      * @param modal
+     * <tt>true</tt> if the dialog should be modal; <tt>false</tt>, otherwise.
+     *
      * @param dialogCloseListener
+     * A listener that will be called when the dialog is closed.
      */
-    public void open(Display display, boolean modal, DialogCloseListener dialogCloseListener) {
-        Window owner = getOwner();
+    public void open(Display display, Window owner, boolean modal, DialogCloseListener dialogCloseListener) {
         if (modal
             && owner == null) {
-            throw new IllegalStateException("Dialog does not have an owner.");
+            throw new IllegalArgumentException("Modal dialogs must have an owner.");
         }
 
-        super.open(display);
+        super.open(display, owner);
 
         if (isOpen()) {
             this.modal = modal;
@@ -158,6 +170,8 @@
             Vote vote = dialogStateListeners.previewDialogClose(this, result);
 
             if (vote == Vote.APPROVE) {
+                Window owner = getOwner();
+
                 super.close();
 
                 closing = super.isClosing();
@@ -169,7 +183,6 @@
                     this.modal = false;
 
                     // Move the owner to the front
-                    Window owner = getOwner();
                     if (owner != null
                         && owner.isOpen()) {
                         owner.moveToFront();
@@ -183,8 +196,11 @@
                         dialogCloseListener = null;
                     }
                 }
-            } else if (vote == Vote.DENY) {
-                closing = false;
+            } else {
+                if (vote == Vote.DENY) {
+                    closing = false;
+                }
+
                 dialogStateListeners.dialogCloseVetoed(this, vote);
             }
         }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java Mon Sep 21 19:53:42 2009
@@ -62,7 +62,7 @@
     }
 
     private Menu menu;
-    private boolean autoClose = false;
+    private boolean contextMenu = false;
 
     private boolean closing = false;
 
@@ -91,15 +91,12 @@
         }
     }
 
-    public boolean isAutoClose() {
-        return autoClose;
+    public boolean isContextMenu() {
+        return contextMenu;
     }
 
-    public void open(Display display, int x, int y) {
-        autoClose = true;
-
-        setLocation(x, y);
-        super.open(display);
+    public final void open(Display display, int x, int y) {
+        open(display, null, x, y);
     }
 
     public final void open(Display display, Point location) {
@@ -107,7 +104,30 @@
             throw new IllegalArgumentException("location is null.");
         }
 
-        open(display, location.x, location.y);
+        open(display, null, location.x, location.y);
+    }
+
+    public final void open(Window owner, int x, int y) {
+        if (owner == null) {
+            throw new IllegalArgumentException();
+        }
+
+        open(owner.getDisplay(), owner, x, y);
+    }
+
+    public final void open(Window owner, Point location) {
+        if (location == null) {
+            throw new IllegalArgumentException("location is null.");
+        }
+
+        open(owner, location.x, location.y);
+    }
+
+    public void open(Display display, Window owner, int x, int y) {
+        contextMenu = true;
+
+        setLocation(x, y);
+        super.open(display);
     }
 
     @Override
@@ -141,7 +161,7 @@
         }
 
         if (isClosed()) {
-            autoClose = false;
+            contextMenu = false;
         }
     }
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Palette.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Palette.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Palette.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Palette.java Mon Sep 21 19:53:42 2009
@@ -41,22 +41,11 @@
     }
 
     @Override
-    public final void setOwner(Window owner) {
-        if (isOpen()
-            && owner == null) {
-            throw new IllegalStateException("Palette is open.");
-        }
-
-        super.setOwner(owner);
-    }
-
-    @Override
-    public void open(Display display) {
-        Window owner = getOwner();
+    public void open(Display display, Window owner) {
         if (owner == null) {
-            throw new IllegalStateException("Palette does not have an owner.");
+            throw new IllegalStateException("Palettes must have an owner.");
         }
 
-        super.open(display);
+        super.open(display, owner);
     }
 }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Prompt.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Prompt.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Prompt.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Prompt.java Mon Sep 21 19:53:42 2009
@@ -140,16 +140,7 @@
     public static void prompt(MessageType messageType, String message, Component body, Window owner,
         SheetCloseListener sheetCloseListener) {
         Prompt prompt = createPrompt(messageType, message, body);
-        prompt.setOwner(owner);
-
-        prompt.getSheetStateListeners().add(new SheetStateListener.Adapter() {
-            @Override
-            public void sheetClosed(Sheet sheet) {
-                sheet.setOwner(null);
-            }
-        });
-
-        prompt.open(owner.getDisplay(), sheetCloseListener);
+        prompt.open(owner, sheetCloseListener);
     }
 
     private static Prompt createPrompt(MessageType messageType, String message, Component body) {

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java Mon Sep 21 19:53:42 2009
@@ -78,27 +78,25 @@
         installSkin(Sheet.class);
     }
 
-    @Override
-    public final void setOwner(Window owner) {
-        if (isOpen()) {
-            throw new IllegalStateException("Sheet is open.");
+    public final void open(Window owner, SheetCloseListener sheetCloseListener) {
+        if (owner == null) {
+            throw new IllegalArgumentException("owner is null");
         }
 
-        super.setOwner(owner);
+        open(owner.getDisplay(), owner, sheetCloseListener);
     }
 
     @Override
-    public final void open(Display display) {
-        open(display, null);
+    public final void open(Display display, Window owner) {
+        open(display, owner, null);
     }
 
-    public void open(Display display, SheetCloseListener sheetCloseListener) {
-        Window owner = getOwner();
+    public void open(Display display, Window owner, SheetCloseListener sheetCloseListener) {
         if (owner == null) {
-            throw new IllegalStateException("Sheet does not have an owner.");
+            throw new IllegalArgumentException("Sheets must have an owner.");
         }
 
-        super.open(display);
+        super.open(display, owner);
 
         if (isOpen()) {
             this.sheetCloseListener = sheetCloseListener;
@@ -122,6 +120,8 @@
             Vote vote = sheetStateListeners.previewSheetClose(this, result);
 
             if (vote == Vote.APPROVE) {
+                Window owner = getOwner();
+
                 super.close();
 
                 closing = super.isClosing();
@@ -130,7 +130,6 @@
                     this.result = result;
 
                     // Move the owner to the front
-                    Window owner = getOwner();
                     if (owner.isOpen()) {
                         owner.moveToFront();
                     }
@@ -143,8 +142,11 @@
                         sheetCloseListener = null;
                     }
                 }
-            } else if (vote == Vote.DENY) {
-                closing = false;
+            } else {
+                if (vote == Vote.DENY) {
+                    closing = false;
+                }
+
                 sheetStateListeners.sheetCloseVetoed(this, vote);
             }
         }

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=817388&r1=817387&r2=817388&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 Mon Sep 21 19:53:42 2009
@@ -249,13 +249,6 @@
         }
 
         @Override
-        public void ownerChanged(Window window, Window previousOwner) {
-            for (WindowListener listener : this) {
-                listener.ownerChanged(window, previousOwner);
-            }
-        }
-
-        @Override
         public void activeChanged(Window window, Window obverseWindow) {
             for (WindowListener listener : this) {
                 listener.activeChanged(window, obverseWindow);
@@ -316,9 +309,9 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             for (WindowStateListener listener : this) {
-                listener.windowClosed(window, display);
+                listener.windowClosed(window, display, owner);
             }
         }
     }
@@ -409,7 +402,7 @@
 
         if (parent == null
             && isActive()) {
-            setActiveWindow(null);
+            clearActive();
         }
 
         super.setParent(parent);
@@ -428,44 +421,23 @@
         return super.remove(index, count);
     }
 
-    /**
-     * Sets the visible state of this window and all of its owned
-     * descendant windows.
-     *
-     * @param visible
-     * If <tt>true</tt>, the window and its owned descendants are visible;
-     * otherwise, they are not visible.
-     */
     @Override
     public void setVisible(boolean visible) {
         super.setVisible(visible);
 
-        // Show/hide owned windows
-        for (Window ownedWindow : ownedWindows) {
-            ownedWindow.setVisible(visible);
+        if (visible
+            && isActive()) {
+            clearActive();
         }
     }
 
-    /**
-     * Sets the enabled state of this window and all of its owned
-     * descendant windows.
-     *
-     * @param enabled
-     * If <tt>true</tt>, the window and its owned descendants are enabled;
-     * otherwise, they are not enabled.
-     */
     @Override
     public void setEnabled(boolean enabled) {
         super.setEnabled(enabled);
 
         if (!enabled
             && isActive()) {
-            setActiveWindow(null);
-        }
-
-        // Enable/disable owned windows
-        for (Window ownedWindow : ownedWindows) {
-            ownedWindow.setEnabled(enabled);
+            clearActive();
         }
     }
 
@@ -473,37 +445,6 @@
         return owner;
     }
 
-    public void setOwner(Window owner) {
-        if (owner != null
-            && isOpen()
-            && !owner.isOpen()) {
-            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) {
-            if (previousOwner != null) {
-                previousOwner.ownedWindows.remove(this);
-            }
-
-            if (owner != null) {
-                owner.ownedWindows.add(this);
-                setVisible(owner.isVisible());
-                setEnabled(owner.isEnabled());
-            }
-
-            this.owner = owner;
-
-            windowListeners.ownerChanged(this, previousOwner);
-        }
-    }
-
     public Window getRootOwner() {
         return (owner == null) ? this : owner.getRootOwner();
     }
@@ -565,21 +506,57 @@
      * Opens the window.
      *
      * @param display
+     */
+    public final void open(Display display) {
+        open(display, null);
+    }
+
+    /**
+     * Opens the window.
+     *
+     * @param owner
+     * The window's owner. The window is opened on the owner's display.
+     */
+    public final void open(Window owner) {
+        if (owner == null) {
+            throw new IllegalArgumentException();
+        }
+
+        open(owner.getDisplay(), owner);
+    }
+
+    /**
+     * Opens the window.
+     *
+     * @param display
      * The display on which the window will be opened.
+     *
+     * @param owner
+     * The window's owner, or <tt>null<tt> if the window has no owner.
      */
-    public void open(Display display) {
+    public void open(Display display, Window owner) {
         if (display == null) {
             throw new IllegalArgumentException("display is null.");
         }
 
-        if (isOpen()
-            && getDisplay() != display) {
-            throw new IllegalStateException("Window is already open on a different display.");
+        if (owner != null) {
+            if (!owner.isOpen()) {
+                throw new IllegalArgumentException("owner is not open.");
+            }
+
+            if (isOwner(owner)) {
+                throw new IllegalArgumentException("owner is an owned descendant of this window.");
+            }
         }
 
-        if (owner != null
-            && !owner.isOpen()) {
-            throw new IllegalArgumentException("Owner is not open.");
+        if (isOpen()) {
+            if (getDisplay() != display) {
+                throw new IllegalStateException("Window is already open on a different display.");
+            }
+
+            if (this.owner != owner) {
+                throw new IllegalStateException("Window is already open with a different owner.");
+            }
         }
 
         if (!isOpen()) {
@@ -587,13 +564,26 @@
             Vote vote = windowStateListeners.previewWindowOpen(this, display);
 
             if (vote == Vote.APPROVE) {
+                // Add the window to the display
                 display.add(this);
+
+                // Set the owner and add to the owner's owned window list
+                this.owner = owner;
+
+                if (owner != null) {
+                    owner.ownedWindows.add(this);
+                }
+
+                // Notify listeners
                 opening = false;
                 windowStateListeners.windowOpened(this);
 
                 moveToFront();
-            } else if (vote == Vote.DENY) {
-                opening = false;
+            } else {
+                if (vote == Vote.DENY) {
+                    opening = false;
+                }
+
                 windowStateListeners.windowOpenVetoed(this, vote);
             }
         }
@@ -644,12 +634,27 @@
                 Vote vote = windowStateListeners.previewWindowClose(this);
 
                 if (vote == Vote.APPROVE) {
+                    // Remove the window from the display
                     Display display = getDisplay();
                     display.remove(this);
+
+                    // Clear the owner and remove from the owner's owned window list
+                    Window owner = this.owner;
+                    this.owner = null;
+
+                    if (owner != null) {
+                        owner.ownedWindows.remove(this);
+                    }
+
+                    // Notify listeners
                     closing = false;
-                    windowStateListeners.windowClosed(this, display);
-                } else if (vote == Vote.DENY) {
-                    closing = false;
+
+                    windowStateListeners.windowClosed(this, display, owner);
+                } else {
+                    if (vote == Vote.DENY) {
+                        closing = false;
+                    }
+
                     windowStateListeners.windowCloseVetoed(this, vote);
                 }
             }
@@ -791,6 +796,7 @@
      */
     public boolean requestActive() {
         if (isOpen()
+            && isVisible()
             && isEnabled()) {
             setActiveWindow(this);
         }
@@ -849,6 +855,13 @@
     }
 
     /**
+     * Clears the active window.
+     */
+    public static void clearActive() {
+        setActiveWindow(null);
+    }
+
+    /**
      * Returns the window descendant to which focus will be restored when this window
      * is moved to the front.
      */
@@ -951,7 +964,7 @@
         }
 
         if (isActive()) {
-            setActiveWindow(null);
+            clearActive();
         }
 
         if (containsFocus()) {

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=817388&r1=817387&r2=817388&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 Mon Sep 21 19:53:42 2009
@@ -39,10 +39,6 @@
         }
 
         @Override
-        public void ownerChanged(Window window, Window previousOwner) {
-        }
-
-        @Override
         public void activeChanged(Window window, Window obverseWindow) {
         }
 
@@ -76,14 +72,6 @@
     public void contentChanged(Window window, Component previousContent);
 
     /**
-     * Called when a window's owner has changed.
-     *
-     * @param window
-     * @param previousOwner
-     */
-    public void ownerChanged(Window window, Window previousOwner);
-
-    /**
      * Called when a window's active state has changed.
      *
      * @param window

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowStateListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowStateListener.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowStateListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/WindowStateListener.java Mon Sep 21 19:53:42 2009
@@ -49,7 +49,7 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
         }
     }
 
@@ -96,6 +96,7 @@
      *
      * @param window
      * @param display
+     * @param owner
      */
-    public void windowClosed(Window window, Display display);
+    public void windowClosed(Window window, Display display, Window owner);
 }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/ListViewItemEditor.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/ListViewItemEditor.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/ListViewItemEditor.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/ListViewItemEditor.java Mon Sep 21 19:53:42 2009
@@ -120,8 +120,6 @@
     private WindowStateListener popupWindowStateHandler = new WindowStateListener.Adapter() {
         @Override
         public void windowOpened(Window window) {
-            window.setOwner(listView.getWindow());
-
             Display display = window.getDisplay();
             display.getContainerMouseListeners().add(displayMouseHandler);
 
@@ -131,15 +129,14 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             display.getContainerMouseListeners().remove(displayMouseHandler);
 
             listView.getComponentListeners().remove(componentListener);
             listView.getListViewListeners().remove(listViewListener);
             listView.getListViewItemListeners().remove(listViewItemListener);
 
-            window.getOwner().moveToFront();
-            window.setOwner(null);
+            owner.moveToFront();
 
             listView = null;
             index = -1;
@@ -205,7 +202,7 @@
         // Create and open the popup
         popup = new Window(textInput);
         popup.getWindowStateListeners().add(popupWindowStateHandler);
-        popup.open(listView.getDisplay());
+        popup.open(listView.getWindow());
         reposition();
 
         textInput.selectAll();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewCellEditor.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewCellEditor.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewCellEditor.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewCellEditor.java Mon Sep 21 19:53:42 2009
@@ -132,8 +132,6 @@
     private WindowStateListener popupWindowStateHandler = new WindowStateListener.Adapter() {
         @Override
         public void windowOpened(Window window) {
-            window.setOwner(tableView.getWindow());
-
             Display display = window.getDisplay();
             display.getContainerMouseListeners().add(displayMouseHandler);
 
@@ -143,7 +141,7 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             // Clean up
             display.getContainerMouseListeners().remove(displayMouseHandler);
 
@@ -152,8 +150,7 @@
             tableView.getTableViewRowListeners().remove(tableViewRowListener);
 
             // Move the owner to front
-            window.getOwner().moveToFront();
-            window.setOwner(null);
+            owner.moveToFront();
 
             // Free memory
             tableView = null;
@@ -251,7 +248,7 @@
             // Create and open the popup
             popup = new Window(textInput);
             popup.getWindowStateListeners().add(popupWindowStateHandler);
-            popup.open(tableView.getDisplay());
+            popup.open(tableView.getWindow());
             reposition();
 
             textInput.selectAll();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewRowEditor.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewRowEditor.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewRowEditor.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TableViewRowEditor.java Mon Sep 21 19:53:42 2009
@@ -204,13 +204,11 @@
         }
 
         @Override
-        public void open(Display display) {
+        public void open(Display display, Window owner) {
             if (!isOpen()) {
-                super.open(display);
+                super.open(display, owner);
 
                 if (isOpen()) {
-                    setOwner(tableView.getWindow());
-
                     display.getContainerMouseListeners().add(this);
                     tableView.getComponentListeners().add(this);
                     tableView.getTableViewListeners().add(this);
@@ -258,12 +256,13 @@
                     Display display = getDisplay();
                     display.getContainerMouseListeners().remove(this);
 
+                    Window owner = getOwner();
+
                     super.close();
                     closing = false;
 
                     // Move the owner to front
-                    getOwner().moveToFront();
-                    setOwner(null);
+                    owner.moveToFront();
 
                     // Clear the table pane row so the custom cell editors
                     // can be re-used in the next editor popup
@@ -324,7 +323,7 @@
         }
 
         public void editRow() {
-            open(tableView.getDisplay());
+            open(tableView.getWindow());
             reposition();
         }
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeViewNodeEditor.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeViewNodeEditor.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeViewNodeEditor.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/content/TreeViewNodeEditor.java Mon Sep 21 19:53:42 2009
@@ -78,8 +78,6 @@
     private WindowStateListener popupStateHandler = new WindowStateListener.Adapter() {
         @Override
         public void windowOpened(Window window) {
-            window.setOwner(treeView.getWindow());
-
             Display display = window.getDisplay();
             display.getContainerMouseListeners().add(displayMouseHandler);
 
@@ -89,7 +87,7 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             // Clean up
             display.getContainerMouseListeners().remove(displayMouseHandler);
 
@@ -98,8 +96,7 @@
             treeView.getTreeViewNodeListeners().remove(treeViewNodeHandler);
 
             // Move the owner to front
-            window.getOwner().moveToFront();
-            window.setOwner(null);
+            owner.moveToFront();
 
             // Free memory
             treeView = null;
@@ -235,7 +232,7 @@
 
         popup = new Window(textInput);
         popup.getWindowStateListeners().add(popupStateHandler);
-        popup.open(treeView.getDisplay());
+        popup.open(treeView.getWindow());
         reposition();
 
         textInput.selectAll();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java Mon Sep 21 19:53:42 2009
@@ -106,7 +106,7 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             display.getContainerMouseListeners().remove(displayMouseListener);
             getComponent().getWindow().moveToFront();
         }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ComponentSkin.java Mon Sep 21 19:53:42 2009
@@ -38,8 +38,6 @@
 import org.apache.pivot.wtk.Point;
 import org.apache.pivot.wtk.Skin;
 import org.apache.pivot.wtk.Tooltip;
-import org.apache.pivot.wtk.Window;
-import org.apache.pivot.wtk.WindowStateListener;
 
 /**
  * Abstract base class for component skins.
@@ -70,18 +68,7 @@
                 }
 
                 tooltip.setLocation(x + 16, y);
-
-                Window window = component.getWindow();
-                tooltip.setOwner(window);
-
-                tooltip.getWindowStateListeners().add(new WindowStateListener.Adapter() {
-                    @Override
-                    public void windowClosed(Window window, Display display) {
-                        tooltip.setOwner(null);
-                    }
-                });
-
-                tooltip.open(window.getDisplay());
+                tooltip.open(component.getWindow());
             }
         }
     }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ListButtonSkin.java Mon Sep 21 19:53:42 2009
@@ -103,7 +103,7 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             display.getContainerMouseListeners().remove(displayMouseListener);
             getComponent().getWindow().moveToFront();
         }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuBarItemSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuBarItemSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuBarItemSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuBarItemSkin.java Mon Sep 21 19:53:42 2009
@@ -64,14 +64,12 @@
     private WindowStateListener menuPopupWindowStateListener = new WindowStateListener.Adapter() {
         @Override
         public void windowOpened(Window window) {
-            window.setOwner(getComponent().getWindow());
-
             Display display = window.getDisplay();
             display.getContainerMouseListeners().add(displayMouseListener);
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             MenuBar.Item menuBarItem = (MenuBar.Item)getComponent();
             menuBarItem.setActive(false);
 
@@ -86,8 +84,6 @@
                 }
             }
 
-            window.setOwner(null);
-
             display.getContainerMouseListeners().remove(displayMouseListener);
 
             closeMenuPopup = false;
@@ -205,7 +201,7 @@
             // TODO Ensure that the popup remains within the bounds of the display
 
             menuPopup.setLocation(menuBarItemLocation.x, menuBarItemLocation.y);
-            menuPopup.open(menuBarItem.getDisplay());
+            menuPopup.open(menuBarItem.getWindow());
             menuPopup.requestFocus();
         } else {
             menuPopup.close(true);

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java Mon Sep 21 19:53:42 2009
@@ -45,7 +45,7 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             display.getContainerMouseListeners().remove(displayMouseListener);
 
             Window menuButtonWindow = getComponent().getWindow();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java Mon Sep 21 19:53:42 2009
@@ -38,16 +38,12 @@
     private WindowStateListener menuPopupWindowStateListener = new WindowStateListener.Adapter() {
         @Override
         public void windowOpened(Window window) {
-            window.setOwner(getComponent().getWindow());
-
             Display display = window.getDisplay();
             display.getContainerMouseListeners().add(displayMouseListener);
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
-            window.setOwner(null);
-
+        public void windowClosed(Window window, Display display, Window owner) {
             display.getContainerMouseListeners().remove(displayMouseListener);
         }
     };
@@ -178,7 +174,7 @@
             // TODO Ensure that the popup remains within the bounds of the display
 
             menuPopup.setLocation(location.x, location.y);
-            menuPopup.open(menuItem.getDisplay());
+            menuPopup.open(menuItem.getWindow());
             menuPopup.requestFocus();
         }
     }

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=817388&r1=817387&r2=817388&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 Mon Sep 21 19:53:42 2009
@@ -152,11 +152,6 @@
     }
 
     @Override
-    public void ownerChanged(Window window, Window previousOwner) {
-        // No-op
-    }
-
-    @Override
     public void activeChanged(Window window, Window obverseWindow) {
         // No-op
     }
@@ -192,6 +187,7 @@
     }
 
     @Override
-    public void windowClosed(Window window, Display display) {
+    public void windowClosed(Window window, Display display, Window owner) {
+        // No-op
     }
 }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java Mon Sep 21 19:53:42 2009
@@ -52,22 +52,7 @@
  * TODO Calendar pass-through styles
  */
 public class TerraCalendarButtonSkin extends CalendarButtonSkin {
-    private WindowStateListener calendarPopupStateListener = new WindowStateListener() {
-        @Override
-        public Vote previewWindowOpen(Window window, Display display) {
-            return Vote.APPROVE;
-        }
-
-        @Override
-        public void windowOpenVetoed(Window window, Vote reason) {
-            // No-op
-        }
-
-        @Override
-        public void windowOpened(Window window) {
-            window.setOwner(getComponent().getWindow());
-        }
-
+    private WindowStateListener calendarPopupStateListener = new WindowStateListener.Adapter() {
         @Override
         public Vote previewWindowClose(final Window window) {
             Vote vote = Vote.APPROVE;
@@ -102,9 +87,8 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             closeTransition = null;
-            window.setOwner(null);
         }
     };
 
@@ -532,7 +516,7 @@
 
                 calendarPopup.setLocation(x, y);
                 calendarPopup.setPreferredSize(popupWidth, popupHeight);
-                calendarPopup.open(calendarButton.getDisplay());
+                calendarPopup.open(calendarButton.getWindow());
 
                 calendar.requestFocus();
             }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java Mon Sep 21 19:53:42 2009
@@ -159,8 +159,8 @@
     }
 
     @Override
-    public void windowClosed(Window window, Display display) {
-        super.windowClosed(window, display);
+    public void windowClosed(Window window, Display display, Window owner) {
+        super.windowClosed(window, display, owner);
 
         display.getContainerMouseListeners().remove(displayMouseListener);
     }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListButtonSkin.java Mon Sep 21 19:53:42 2009
@@ -52,22 +52,7 @@
  * Terra list button skin.
  */
 public class TerraListButtonSkin extends ListButtonSkin {
-    private WindowStateListener listViewPopupStateListener = new WindowStateListener() {
-        @Override
-        public Vote previewWindowOpen(Window window, Display display) {
-            return Vote.APPROVE;
-        }
-
-        @Override
-        public void windowOpenVetoed(Window window, Vote reason) {
-            // No-op
-        }
-
-        @Override
-        public void windowOpened(Window window) {
-            window.setOwner(getComponent().getWindow());
-        }
-
+    private WindowStateListener listViewPopupStateListener = new WindowStateListener.Adapter() {
         @Override
         public Vote previewWindowClose(final Window window) {
             Vote vote = Vote.APPROVE;
@@ -102,9 +87,8 @@
         }
 
         @Override
-        public void windowClosed(Window window, Display display) {
+        public void windowClosed(Window window, Display display, Window owner) {
             closeTransition = null;
-            window.setOwner(null);
         }
     };
 

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java Mon Sep 21 19:53:42 2009
@@ -64,13 +64,7 @@
 
     private WindowStateListener menuPopupWindowStateListener = new WindowStateListener.Adapter() {
         @Override
-        public void windowOpened(Window window) {
-            window.setOwner(getComponent().getWindow());
-        }
-
-        @Override
-        public void windowClosed(Window window, Display display) {
-            window.setOwner(null);
+        public void windowClosed(Window window, Display display, Window owner) {
             repaintComponent();
         }
     };
@@ -525,7 +519,7 @@
 
                 menuPopup.setLocation(x, y);
                 menuPopup.setPreferredSize(popupWidth, popupHeight);
-                menuPopup.open(menuButton.getDisplay());
+                menuPopup.open(menuButton.getWindow());
 
                 menuPopup.requestFocus();
             }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java Mon Sep 21 19:53:42 2009
@@ -81,7 +81,7 @@
         public boolean mouseDown(Container container, Mouse.Button button, int x, int y) {
             MenuPopup menuPopup = (MenuPopup)getComponent();
 
-            if (menuPopup.isAutoClose()) {
+            if (menuPopup.isContextMenu()) {
                 Display display = (Display)container;
                 Component descendant = display.getDescendantAt(x, y);
 
@@ -231,18 +231,17 @@
             menu.requestFocus();
         }
 
-        if (menuPopup.isAutoClose()) {
+        if (menuPopup.isContextMenu()) {
             ApplicationContext.queueCallback(new RepositionCallback());
         }
     }
 
     @Override
-    public void windowClosed(Window window, Display display) {
-        super.windowClosed(window, display);
+    public void windowClosed(Window window, Display display, Window owner) {
+        super.windowClosed(window, display, owner);
 
         display.getContainerMouseListeners().remove(displayMouseListener);
 
-        Window owner = window.getOwner();
         if (owner != null
             && owner.isOpen()) {
             owner.moveToFront();

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraPaletteSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraPaletteSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraPaletteSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraPaletteSkin.java Mon Sep 21 19:53:42 2009
@@ -184,7 +184,6 @@
         dropShadowDecorator = new DropShadowDecorator(3, 3, 3);
         palette.getDecorators().add(dropShadowDecorator);
 
-        ownerChanged(palette, null);
         titleChanged(palette, null);
     }
 
@@ -447,26 +446,27 @@
     }
 
     @Override
-    public void ownerChanged(Window window, Window previousOwner) {
-        super.ownerChanged(window, previousOwner);
+    public void titleChanged(Window window, String previousTitle) {
+        super.titleChanged(window, previousTitle);
 
-        if (previousOwner != null) {
-            previousOwner.getWindowListeners().remove(ownerListener);
-        }
+        String title = window.getTitle();
+        titleLabel.setVisible(title != null);
+        titleLabel.setText(title);
+    }
+
+    @Override
+    public void windowOpened(Window window) {
+        super.windowOpened(window);
 
         Window owner = window.getOwner();
-        if (owner != null) {
-            window.setVisible(owner.isActive());
-            owner.getWindowListeners().add(ownerListener);
-        }
+        window.setVisible(owner.isActive());
+        owner.getWindowListeners().add(ownerListener);
     }
 
     @Override
-    public void titleChanged(Window window, String previousTitle) {
-        super.titleChanged(window, previousTitle);
+    public void windowClosed(Window window, Display display, Window owner) {
+        super.windowClosed(window, display, owner);
 
-        String title = window.getTitle();
-        titleLabel.setVisible(title != null);
-        titleLabel.setText(title);
+        owner.getWindowListeners().remove(ownerListener);
     }
 }

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java Mon Sep 21 19:53:42 2009
@@ -424,10 +424,12 @@
     }
 
     @Override
-    public void windowClosed(Window window, Display display) {
-        super.windowClosed(window, display);
+    public void windowClosed(Window window, Display display, Window owner) {
+        super.windowClosed(window, display, owner);
 
         display.getContainerMouseListeners().remove(displayMouseListener);
+
+        owner.getComponentListeners().remove(ownerListener);
     }
 
     @Override
@@ -479,8 +481,7 @@
 
     @Override
     public void sheetClosed(Sheet sheet) {
-        Window owner = sheet.getOwner();
-        owner.getComponentListeners().remove(ownerListener);
+        // No-op
     }
 
     public void alignToOwner() {

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTooltipSkin.java Mon Sep 21 19:53:42 2009
@@ -187,8 +187,8 @@
     }
 
     @Override
-    public void windowClosed(Window window, Display display) {
-        super.windowClosed(window, display);
+    public void windowClosed(Window window, Display display, Window owner) {
+        super.windowClosed(window, display, owner);
 
         // Remove this as a display mouse and key listener
         display.getContainerMouseListeners().remove(displayMouseListener);

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CardPaneTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CardPaneTest.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CardPaneTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/CardPaneTest.java Mon Sep 21 19:53:42 2009
@@ -86,9 +86,7 @@
         });
 
         frame.open(display);
-
-        sheet.setOwner(frame);
-        sheet.open(display);
+        sheet.open(frame);
     }
 
     @Override

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/FileBrowserSheetTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/FileBrowserSheetTest.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/FileBrowserSheetTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/FileBrowserSheetTest.java Mon Sep 21 19:53:42 2009
@@ -36,8 +36,6 @@
         wtkxSerializer.put("fileOpenSheet", fileOpenSheet);
 
         frame = (Frame)wtkxSerializer.readObject(getClass().getResource("file_browser_sheet_test.wtkx"));
-        fileOpenSheet.setOwner(frame);
-
         frame.open(display);
     }
 

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SheetTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SheetTest.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SheetTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SheetTest.java Mon Sep 21 19:53:42 2009
@@ -18,7 +18,6 @@
 
 import org.apache.pivot.collections.ArrayList;
 import org.apache.pivot.collections.Map;
-import org.apache.pivot.util.Vote;
 import org.apache.pivot.wtk.Alert;
 import org.apache.pivot.wtk.Application;
 import org.apache.pivot.wtk.Button;
@@ -75,7 +74,6 @@
 
         final Prompt prompt = new Prompt(MessageType.INFO, "Prompt", new ArrayList<String>("OK"), promptBody);
         prompt.setTitle("Prompt");
-        prompt.setOwner(frame);
 
         Label alertBody = new Label("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.");
         alertBody.getStyles().put("wrapText", true);
@@ -104,37 +102,15 @@
         windowContent.getButtonPressListeners().add(new ButtonPressListener() {
             @Override
             public void buttonPressed(Button button) {
-                prompt.open(display);
+                prompt.open(frame);
             }
         });
 
-        sheet.getWindowStateListeners().add(new WindowStateListener() {
-            @Override
-            public Vote previewWindowOpen(Window window, Display display) {
-                return Vote.APPROVE;
-            }
-
-            @Override
-            public void windowOpenVetoed(Window window, Vote reason) {
-            }
-
+        sheet.getWindowStateListeners().add(new WindowStateListener.Adapter() {
             @Override
             public void windowOpened(Window window) {
                 closeButton.requestFocus();
             }
-
-            @Override
-            public Vote previewWindowClose(Window window) {
-                return Vote.APPROVE;
-            }
-
-            @Override
-            public void windowCloseVetoed(Window window, Vote reason) {
-            }
-
-            @Override
-            public void windowClosed(Window window, Display display) {
-            }
         });
     }
 

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowTest.java?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowTest.java Mon Sep 21 19:53:42 2009
@@ -60,58 +60,49 @@
 
         Sheet sheet = new Sheet();
         sheet.setContent(new Label("Hello Foo"));
-        sheet.setOwner(window1);
-        sheet.open(display);
+        sheet.open(window1);
 
         Frame window1a = new Frame();
         window1a.setTitle("Window 1 A");
         window1a.setPreferredSize(160, 120);
-        window1a.setOwner(window1);
-        window1a.open(display);
+        window1a.open(window1);
 
         Frame window1ai = new Frame();
         window1ai.setTitle("Window 1 A I");
         window1ai.setPreferredSize(160, 60);
-        window1ai.setOwner(window1a);
-        window1ai.open(display);
+        window1ai.open(window1a);
         window1ai.getDecorators().update(0, new ReflectionDecorator());
 
         Frame window1aii = new Frame();
         window1aii.setTitle("Window 1 A II");
         window1aii.setPreferredSize(160, 60);
-        window1aii.setOwner(window1a);
-        window1aii.open(display);
+        window1aii.open(window1a);
 
         Frame window1b = new Frame();
         window1b.setTitle("Window 1 B");
         window1b.setPreferredSize(160, 120);
         window1b.setLocation(20, 20);
-        window1b.setOwner(window1);
-        window1b.open(display);
+        window1b.open(window1);
 
         Frame window1bi = new Frame();
         window1bi.setTitle("Window 1 B I");
         window1bi.setPreferredSize(160, 60);
-        window1bi.setOwner(window1b);
-        window1bi.open(display);
+        window1bi.open(window1b);
 
         Frame window1bii = new Frame();
         window1bii.setTitle("Window 1 B II");
         window1bii.setPreferredSize(160, 60);
-        window1bii.setOwner(window1b);
-        window1bii.open(display);
+        window1bii.open(window1b);
 
         Palette palette1 = new Palette();
         palette1.setTitle("Palette 1bii 1");
         palette1.setPreferredSize(160, 60);
-        palette1.setOwner(window1bii);
-        palette1.open(display);
+        palette1.open(window1bii);
 
         Palette palette2 = new Palette();
         palette2.setTitle("Palette 1bii 2");
         palette2.setPreferredSize(160, 60);
-        palette2.setOwner(window1bii);
-        palette2.open(display);
+        palette2.open(window1bii);
 
         Frame dialogOwner = new Frame();
         dialogOwner.setTitle("Dialog Owner");
@@ -121,14 +112,12 @@
         Dialog dialog = new Dialog();
         dialog.setTitle("Dialog 1");
         dialog.setPreferredSize(160, 60);
-        dialog.setOwner(dialogOwner);
-        dialog.open(display, true);
+        dialog.open(dialogOwner);
 
         Dialog dialog2 = new Dialog();
         dialog2.setTitle("Dialog 2");
         dialog2.setPreferredSize(160, 60);
-        dialog2.setOwner(dialog);
-        dialog2.open(display, true);
+        dialog2.open(dialog);
     }
 
     @Override

Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/file_browser_sheet_test.wtkx?rev=817388&r1=817387&r2=817388&view=diff
==============================================================================
Binary files - no diff available.



Re: svn commit: r817388

Posted by Greg Brown <gk...@mac.com>.
Hi all,

This change re-introduces the ability specify a window's owner via the  
open() method. The previous approach, which relied on a separate  
setOwner() method, was a bit cumbersome and didn't seem like the right  
solution. It made the window's open state and owner seem as though  
they were not related, when in fact they really should be.

I apologize for recent the API thrashing, but I think we're in good  
shape now. Let me know if you have any questions.

Greg