]> source.dussan.org Git - vaadin-framework.git/commitdiff
Window close and position management
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Mon, 12 Mar 2007 08:36:04 +0000 (08:36 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Mon, 12 Mar 2007 08:36:04 +0000 (08:36 +0000)
svn changeset:843/svn branch:trunk

src/com/itmill/toolkit/ui/Window.java

index 974990f48ccd658290741c8fd4452c60d2c7ee04..5a3f09a16368dff1aceeedc193cd4bb1623c941d 100644 (file)
@@ -94,6 +94,13 @@ public class Window extends Panel implements URIHandler, ParameterHandler {
 
        /** Focused component */
        private Focusable focusedComponent;
+       
+       /** Distance of Window top border in pixels from top border of the containing (main window) or -1 if unspecified */
+       private int positionY = -1;
+
+       /** Distance of Window left border in pixels from left border of the containing (main window) or -1 if unspecified */
+       private int positionX = -1;
+
 
        /* ********************************************************************* */
 
@@ -370,6 +377,13 @@ public class Window extends Panel implements URIHandler, ParameterHandler {
                // Contents of the window panel is painted
                super.paintContent(target);
 
+               // Window position
+               target.addVariable(this, "positionx", getPositionX());
+               target.addVariable(this, "positiony", getPositionY());
+               
+               // Window closing
+               target.addVariable(this, "close", false);
+
                // Set focused component
                if (this.focusedComponent != null)
                        target.addVariable(this, "focused", ""
@@ -644,7 +658,26 @@ public class Window extends Panel implements URIHandler, ParameterHandler {
                                // We ignore invalid focusable ids
                        }
                }
-
+               
+               // Positioning
+               Integer positionx = (Integer) variables.get("positionx");
+               if (positionx != null) {
+                       int x = positionx.intValue();
+                       setPositionX(x<0?-1:x);
+               }
+               Integer positiony = (Integer) variables.get("positiony");
+               if (positiony != null) {
+                       int y = positiony.intValue();
+                       setPositionY(y<0?-1:y);
+               }
+                       
+               // Closing
+               Boolean close = (Boolean) variables.get("close");
+               if (close != null && close.booleanValue()) {
+                       
+                       // TODO We should also throw an event to listeners
+                       this.setVisible(false);
+               }
        }
 
        /**
@@ -700,4 +733,38 @@ public class Window extends Panel implements URIHandler, ParameterHandler {
                ref.clear();
                focusableComponents.remove(id);
        }
+
+       /** Get the distance of Window left border in pixels from left border of the containing (main window).
+        * @return Distance of Window left border in pixels from left border of the containing (main window). or -1 if unspecified.
+        * @since 4.0.0
+        */
+       public int getPositionX() {
+               return positionX;
+       }
+
+       /** Set the distance of Window left border in pixels from left border of the containing (main window).
+        * @param positionX Distance of Window left border in pixels from left border of the containing (main window). or -1 if unspecified 
+        * @since 4.0.0
+        */
+       public void setPositionX(int positionX) {
+               this.positionX = positionX;
+       }
+
+       /** Get the distance of Window top border in pixels from top border of the containing (main window).
+        * @return Distance of Window top border in pixels from top border of the containing (main window). or -1 if unspecified 
+        * 
+        * @since 4.0.0
+        */
+       public int getPositionY() {
+               return positionY;
+       }
+
+       /** Set the distance of Window top border in pixels from top border of the containing (main window).
+        * @param positionY of Window top border in pixels from top border of the containing (main window). or -1 if unspecified 
+        * 
+        * @since 4.0.0
+        */
+       public void setPositionY(int positionY) {
+               this.positionY = positionY;
+       }
 }