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();
- }
}