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/11 20:09:19 UTC
svn commit: r813966 - in /incubator/pivot/trunk:
tutorials/src/org/apache/pivot/tutorials/menus/
wtk/src/org/apache/pivot/wtk/ wtk/src/org/apache/pivot/wtk/skin/terra/
Author: gbrown
Date: Fri Sep 11 18:09:18 2009
New Revision: 813966
URL: http://svn.apache.org/viewvc?rev=813966&view=rev
Log:
Complete context menu tutorial; ensure that context menus remain within display bounds.
Added:
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/battery.png (with props)
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/edit-paste.png (with props)
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/emblem-favorite.png (with props)
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/face-smile.png (with props)
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/weather-clear.png (with props)
Modified:
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/ContextMenus.java
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/context_menus.wtkx
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuHandler.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java
Modified: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/ContextMenus.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/ContextMenus.java?rev=813966&r1=813965&r2=813966&view=diff
==============================================================================
--- incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/ContextMenus.java (original)
+++ incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/ContextMenus.java Fri Sep 11 18:09:18 2009
@@ -17,20 +17,49 @@
package org.apache.pivot.tutorials.menus;
import org.apache.pivot.collections.Map;
+import org.apache.pivot.wtk.Action;
import org.apache.pivot.wtk.Application;
+import org.apache.pivot.wtk.Component;
+import org.apache.pivot.wtk.DesktopApplicationContext;
import org.apache.pivot.wtk.Display;
+import org.apache.pivot.wtk.Menu;
+import org.apache.pivot.wtk.MenuHandler;
+import org.apache.pivot.wtk.Prompt;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtkx.WTKXSerializer;
public class ContextMenus implements Application {
private Window window = null;
+ private MenuHandler menuHandler = new MenuHandler.Adapter() {
+ @Override
+ public boolean configureContextMenu(Component component, Menu menu, int x, int y) {
+ final Component descendant = window.getDescendantAt(x, y);
+
+ Menu.Section menuSection = new Menu.Section();
+ menu.getSections().add(menuSection);
+
+ Menu.Item whatIsThisMenuItem = new Menu.Item("What is this?");
+ whatIsThisMenuItem.setAction(new Action() {
+ @Override
+ public void perform() {
+ String description = (String)descendant.getUserData().get("description");
+ String message = "This is a " + description + ".";
+
+ Prompt.prompt(message, window);
+ }
+ });
+
+ menuSection.add(whatIsThisMenuItem);
+
+ return false;
+ }
+ };
@Override
public void startup(Display display, Map<String, String> properties) throws Exception {
WTKXSerializer wtkxSerializer = new WTKXSerializer();
window = (Window)wtkxSerializer.readObject(this, "context_menus.wtkx");
-
- // TODO
+ window.setMenuHandler(menuHandler);
window.open(display);
}
@@ -51,4 +80,8 @@
@Override
public void resume() {
}
+
+ public static void main(String[] args) {
+ DesktopApplicationContext.main(ContextMenus.class, args);
+ }
}
Added: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/battery.png
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/battery.png?rev=813966&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/battery.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/context_menus.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/context_menus.wtkx?rev=813966&r1=813965&r2=813966&view=diff
==============================================================================
Binary files - no diff available.
Added: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/edit-paste.png
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/edit-paste.png?rev=813966&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/edit-paste.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/emblem-favorite.png
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/emblem-favorite.png?rev=813966&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/emblem-favorite.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/face-smile.png
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/face-smile.png?rev=813966&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/face-smile.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/weather-clear.png
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/weather-clear.png?rev=813966&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/menus/weather-clear.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuHandler.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuHandler.java?rev=813966&r1=813965&r2=813966&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuHandler.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuHandler.java Fri Sep 11 18:09:18 2009
@@ -39,7 +39,7 @@
}
/**
- * Called to allow an implementation to configure a menu bar.
+ * Called when a component to which this handler is attached gains the focus.
*
* @param component
* @param menuBar
@@ -47,7 +47,7 @@
public void configureMenuBar(Component component, MenuBar menuBar);
/**
- * Called to allow an implementation to perform cleanup on a menu bar.
+ * Called when a component to which this handler is attached loses the focus.
*
* @param component
* @param menuBar
@@ -55,7 +55,7 @@
public void cleanupMenuBar(Component component, MenuBar menuBar);
/**
- * Called to allow an implementation to configure a context menu.
+ * Called when the user right-clicks on a component to which this handler is attached.
*
* @param component
* @param menu
@@ -64,7 +64,7 @@
*
* @return
* <tt>true</tt> to stop propagation of context menu configuration;
- * <tt>false</tt> to allow it to continue
+ * <tt>false</tt> to allow it to continue.
*/
public boolean configureContextMenu(Component component, Menu menu, int x, int y);
}
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=813966&r1=813965&r2=813966&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 Fri Sep 11 18:09:18 2009
@@ -98,8 +98,6 @@
}
public void open(Display display, int x, int y) {
- // TODO Determine x, y and width, height based on display bounds
-
autoClose = true;
setLocation(x, y);
@@ -115,8 +113,6 @@
}
public void open(Window owner, int x, int y) {
- // TODO Determine x, y and width, height based on display bounds
-
autoClose = true;
setLocation(x, y);
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=813966&r1=813965&r2=813966&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 Fri Sep 11 18:09:18 2009
@@ -19,10 +19,12 @@
import java.awt.Color;
import org.apache.pivot.util.Vote;
+import org.apache.pivot.wtk.ApplicationContext;
import org.apache.pivot.wtk.Border;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.Container;
import org.apache.pivot.wtk.ContainerMouseListener;
+import org.apache.pivot.wtk.Dimensions;
import org.apache.pivot.wtk.Display;
import org.apache.pivot.wtk.Keyboard;
import org.apache.pivot.wtk.Menu;
@@ -32,6 +34,7 @@
import org.apache.pivot.wtk.MenuPopupStateListener;
import org.apache.pivot.wtk.Mouse;
import org.apache.pivot.wtk.Panorama;
+import org.apache.pivot.wtk.Point;
import org.apache.pivot.wtk.Theme;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtk.effects.DropShadowDecorator;
@@ -44,6 +47,29 @@
*/
public class TerraMenuPopupSkin extends WindowSkin implements MenuPopupListener,
MenuPopupStateListener {
+ private class RepositionCallback implements Runnable {
+ @Override
+ public void run() {
+ MenuPopup menuPopup = (MenuPopup)getComponent();
+ Display display = menuPopup.getDisplay();
+
+ Point location = menuPopup.getLocation();
+ Dimensions size = menuPopup.getSize();
+
+ int x = location.x;
+ if (x + size.width > display.getWidth()) {
+ x -= size.width;
+ }
+
+ int y = location.y;
+ if (y + size.height > display.getHeight()) {
+ y-= size.height;
+ }
+
+ menuPopup.setLocation(x, y);
+ }
+ }
+
private Panorama panorama;
private Border border;
@@ -204,6 +230,8 @@
menu.requestFocus();
}
+
+ ApplicationContext.queueCallback(new RepositionCallback());
}
@Override