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 2010/09/16 22:03:58 UTC

svn commit: r997903 - in /pivot/trunk: wtk-terra/src/org/apache/pivot/wtk/skin/terra/ wtk/src/org/apache/pivot/wtk/ wtk/src/org/apache/pivot/wtk/skin/

Author: gbrown
Date: Thu Sep 16 20:03:58 2010
New Revision: 997903

URL: http://svn.apache.org/viewvc?rev=997903&view=rev
Log:
Update MenuButton skins for PIVOT-458.

Modified:
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButton.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButtonListener.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java?rev=997903&r1=997902&r2=997903&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuButtonSkin.java Thu Sep 16 20:03:58 2010
@@ -66,6 +66,52 @@ public class TerraMenuButtonSkin extends
 
     private WindowStateListener menuPopupWindowStateListener = new WindowStateListener.Adapter() {
         @Override
+        public void windowOpened(Window window) {
+            MenuButton menuButton = (MenuButton)getComponent();
+
+            // Determine the popup's location and preferred size, relative
+            // to the button
+            Display display = menuButton.getDisplay();
+
+            if (display != null) {
+                int width = getWidth();
+                int height = getHeight();
+
+                // Ensure that the popup remains within the bounds of the display
+                Point buttonLocation = menuButton.mapPointToAncestor(display, 0, 0);
+
+                Dimensions displaySize = display.getSize();
+                menuPopup.setPreferredSize(-1, -1);
+                Dimensions popupSize = menuPopup.getPreferredSize();
+                int popupWidth = Math.max(popupSize.width, menuButton.getWidth());
+                int popupHeight = popupSize.height;
+
+                int x = buttonLocation.x;
+                if (popupWidth > width
+                    && x + popupWidth > displaySize.width) {
+                    x = buttonLocation.x + width - popupWidth;
+                }
+
+                int y = buttonLocation.y + height - 1;
+                if (y + popupSize.height > displaySize.height) {
+                    if (buttonLocation.y - popupSize.height > 0) {
+                        y = buttonLocation.y - popupSize.height + 1;
+                    } else {
+                        popupHeight = displaySize.height - y;
+                    }
+                } else {
+                    popupHeight = -1;
+                }
+
+                menuPopup.setLocation(x, y);
+                menuPopup.setPreferredSize(popupWidth, popupHeight);
+                menuPopup.open(menuButton.getWindow());
+
+                menuPopup.requestFocus();
+            }
+        }
+
+        @Override
         public void windowClosed(Window window, Display display, Window owner) {
             repaintComponent();
         }
@@ -643,57 +689,4 @@ public class TerraMenuButtonSkin extends
 
         return super.mouseClick(component, button, x, y, count);
     }
-
-    // Button events
-    @Override
-    public void buttonPressed(Button button) {
-        if (menuPopup.isOpen()) {
-            menuPopup.close();
-        } else {
-            MenuButton menuButton = (MenuButton)getComponent();
-
-            // Determine the popup's location and preferred size, relative
-            // to the button
-            Window window = menuButton.getWindow();
-
-            if (window != null) {
-                int width = getWidth();
-                int height = getHeight();
-
-                Display display = menuButton.getDisplay();
-
-                // Ensure that the popup remains within the bounds of the display
-                Point buttonLocation = menuButton.mapPointToAncestor(display, 0, 0);
-
-                Dimensions displaySize = display.getSize();
-                menuPopup.setPreferredSize(-1, -1);
-                Dimensions popupSize = menuPopup.getPreferredSize();
-                int popupWidth = Math.max(popupSize.width, menuButton.getWidth());
-                int popupHeight = popupSize.height;
-
-                int x = buttonLocation.x;
-                if (popupWidth > width
-                    && x + popupWidth > displaySize.width) {
-                    x = buttonLocation.x + width - popupWidth;
-                }
-
-                int y = buttonLocation.y + height - 1;
-                if (y + popupSize.height > displaySize.height) {
-                    if (buttonLocation.y - popupSize.height > 0) {
-                        y = buttonLocation.y - popupSize.height + 1;
-                    } else {
-                        popupHeight = displaySize.height - y;
-                    }
-                } else {
-                    popupHeight = -1;
-                }
-
-                menuPopup.setLocation(x, y);
-                menuPopup.setPreferredSize(popupWidth, popupHeight);
-                menuPopup.open(menuButton.getWindow());
-
-                menuPopup.requestFocus();
-            }
-        }
-    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButton.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButton.java?rev=997903&r1=997902&r2=997903&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButton.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButton.java Thu Sep 16 20:03:58 2010
@@ -41,13 +41,6 @@ public class MenuButton extends Button {
                 listener.menuChanged(menuButton, previousMenu);
             }
         }
-
-        @Override
-        public void repeatableChanged(MenuButton menuButton) {
-            for (MenuButtonListener listener : this) {
-                listener.repeatableChanged(menuButton);
-            }
-        }
     }
 
     /**
@@ -60,7 +53,6 @@ public class MenuButton extends Button {
     }
 
     private Menu menu = null;
-    private boolean repeatable = false;
 
     private MenuButtonListenerList menuButtonListeners = new MenuButtonListenerList();
 
@@ -111,17 +103,6 @@ public class MenuButton extends Button {
         }
     }
 
-    public boolean isRepeatable() {
-        return repeatable;
-    }
-
-    public void setRepeatable(boolean repeatable) {
-        if (this.repeatable != repeatable) {
-            this.repeatable = repeatable;
-            menuButtonListeners.repeatableChanged(this);
-        }
-    }
-
     public ListenerList<MenuButtonListener> getMenuButtonListeners() {
         return menuButtonListeners;
     }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButtonListener.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButtonListener.java?rev=997903&r1=997902&r2=997903&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButtonListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuButtonListener.java Thu Sep 16 20:03:58 2010
@@ -21,30 +21,10 @@ package org.apache.pivot.wtk;
  */
 public interface MenuButtonListener {
     /**
-     * Menu button listener adapter.
-     */
-    public static class Adapter implements MenuButtonListener {
-        @Override
-        public void menuChanged(MenuButton menuButton, Menu previousMenu) {
-        }
-
-        @Override
-        public void repeatableChanged(MenuButton menuButton) {
-        }
-    }
-
-    /**
      * Called when a menu button's menu has changed.
      *
      * @param menuButton
      * @param previousMenu
      */
     public void menuChanged(MenuButton menuButton, Menu previousMenu);
-
-    /**
-     * Called when a menu button's repeatable flag has changed.
-     *
-     * @param menuButton
-     */
-    public void repeatableChanged(MenuButton menuButton);
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java?rev=997903&r1=997902&r2=997903&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuButtonSkin.java Thu Sep 16 20:03:58 2010
@@ -91,22 +91,25 @@ public abstract class MenuButtonSkin ext
     public void enabledChanged(Component component) {
         super.enabledChanged(component);
 
-        menuPopup.close();
         pressed = false;
+        repaintComponent();
+
+        menuPopup.close();
     }
 
     @Override
     public void focusedChanged(Component component, Component obverseComponent) {
         super.focusedChanged(component, obverseComponent);
 
+        pressed = false;
+        repaintComponent();
+
         // Close the popup if focus was transferred to a component whose
         // window is not the popup
         if (!component.isFocused()
             && !menuPopup.containsFocus()) {
             menuPopup.close();
         }
-
-        pressed = false;
     }
 
     // Component mouse events
@@ -115,18 +118,22 @@ public abstract class MenuButtonSkin ext
         super.mouseOut(component);
 
         pressed = false;
+        repaintComponent();
     }
 
     @Override
     public boolean mouseDown(Component component, Mouse.Button button, int x, int y) {
         boolean consumed = super.mouseDown(component, button, x, y);
 
-        // TODO Consume the event if the menu button is repeatable and the event
-        // occurs over the trigger
-
         pressed = true;
         repaintComponent();
 
+        if (menuPopup.isOpen()) {
+            menuPopup.close();
+        } else {
+            menuPopup.open(component.getWindow());
+        }
+
         return consumed;
     }
 
@@ -166,6 +173,13 @@ public abstract class MenuButtonSkin ext
         if (keyCode == Keyboard.KeyCode.SPACE) {
             pressed = true;
             repaintComponent();
+
+            if (menuPopup.isOpen()) {
+                menuPopup.close();
+            } else {
+                menuPopup.open(component.getWindow());
+            }
+
             consumed = true;
         } else {
             consumed = super.keyPressed(component, keyCode, keyLocation);
@@ -199,9 +213,4 @@ public abstract class MenuButtonSkin ext
     public void menuChanged(MenuButton menuButton, Menu previousMenu) {
         menuPopup.setMenu(menuButton.getMenu());
     }
-
-    @Override
-    public void repeatableChanged(MenuButton menuButton) {
-        invalidateComponent();
-    }
 }