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/08/10 19:25:19 UTC
svn commit: r802868 - in /incubator/pivot/trunk/wtk:
src/org/apache/pivot/wtk/ src/org/apache/pivot/wtk/skin/
src/org/apache/pivot/wtk/skin/terra/ test/org/apache/pivot/wtk/test/
Author: gbrown
Date: Mon Aug 10 17:25:18 2009
New Revision: 802868
URL: http://svn.apache.org/viewvc?rev=802868&view=rev
Log:
Preliminary work on PIVOT-215. Container are now theoretically focusable, but focus traversal logic will not currently respect it.
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ComponentStateListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Frame.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuBar.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuPopup.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/skin/ButtonSkin.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/ContainerSkin.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/PushButtonSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFrameSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.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/TerraRollupSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSpinnerSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java
incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowFocusTest.java
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -676,7 +676,7 @@
if (focusedComponent != null
&& focusedComponent.isShowing()
&& !focusedComponent.isBlocked()) {
- focusedComponent.requestFocus(true);
+ focusedComponent.requestFocus();
}
break;
@@ -684,7 +684,7 @@
case FocusEvent.FOCUS_LOST: {
focusedComponent = Component.getFocusedComponent();
- Component.clearFocus(true);
+ Component.clearFocus();
break;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java Mon Aug 10 17:25:18 2009
@@ -389,9 +389,9 @@
}
}
- public void focusedChanged(Component component, boolean temporary) {
+ public void focusedChanged(Component component, Component obverseComponent) {
for (ComponentStateListener listener : this) {
- listener.focusedChanged(component, temporary);
+ listener.focusedChanged(component, obverseComponent);
}
}
}
@@ -2182,31 +2182,26 @@
* <tt>true</tt> if the component has received the input focus;
* <tt>false</tt> if the component has lost the focus.
*
- * @param temporary
- * <tt>true</tt> if this focus change is temporary; <tt>false</tt>,
- * otherwise.
+ * @param obverseComponent
+ * If <tt>focused</tt> is true, the component that has lost the focus;
+ * otherwise, the component that has gained the focus.
*/
- protected void setFocused(boolean focused, boolean temporary) {
- componentStateListeners.focusedChanged(this, temporary);
- }
+ protected void setFocused(boolean focused, Component obverseComponent) {
+ componentStateListeners.focusedChanged(this, obverseComponent);
- /**
- * Requests that focus be given to this component.
- */
- public final boolean requestFocus() {
- return requestFocus(false);
+ if (focused) {
+ parent.descendantGainedFocus(this);
+ } else {
+ parent.descendantLostFocus(this);
+ }
}
/**
* Requests that focus be given to this component.
- *
- * @param temporary
- * If <tt>true</tt>, indicates that focus is being restored from a
- * temporary loss.
*/
- protected boolean requestFocus(boolean temporary) {
+ public boolean requestFocus() {
if (isFocusable()) {
- setFocusedComponent(this, temporary);
+ setFocusedComponent(this);
}
return isFocused();
@@ -2258,7 +2253,7 @@
&& !component.isFocusable());
// Focus the component (which may be null)
- setFocusedComponent(component, false);
+ setFocusedComponent(component);
}
/**
@@ -2282,25 +2277,18 @@
* <tt>true</tt> if this focus change is or was temporary; <tt>false</tt>,
* if it is permanent.
*/
- private static void setFocusedComponent(Component focusedComponent, boolean temporary) {
+ private static void setFocusedComponent(Component focusedComponent) {
Component previousFocusedComponent = Component.focusedComponent;
if (previousFocusedComponent != focusedComponent) {
- // Set the focused component
Component.focusedComponent = focusedComponent;
- if (focusedComponent == null) {
- if (previousFocusedComponent != null
- && !temporary) {
- previousFocusedComponent.getWindow().setFocusDescendant(null);
- }
- } else {
- focusedComponent.getWindow().setFocusDescendant(focusedComponent);
- focusedComponent.setFocused(true, temporary);
+ if (previousFocusedComponent != null) {
+ previousFocusedComponent.setFocused(false, focusedComponent);
}
- if (previousFocusedComponent != null) {
- previousFocusedComponent.setFocused(false, temporary);
+ if (focusedComponent != null) {
+ focusedComponent.setFocused(true, previousFocusedComponent);
}
componentClassListeners.focusedComponentChanged(previousFocusedComponent);
@@ -2311,17 +2299,7 @@
* Clears the focus.
*/
public static void clearFocus() {
- clearFocus(false);
- }
-
- /**
- * Clears the focus.
- *
- * @param temporary
- * If <tt>true</tt>, the focus is being cleared temporarily.
- */
- protected static void clearFocus(boolean temporary) {
- setFocusedComponent(null, temporary);
+ setFocusedComponent(null);
}
/**
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ComponentStateListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ComponentStateListener.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ComponentStateListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ComponentStateListener.java Mon Aug 10 17:25:18 2009
@@ -32,7 +32,7 @@
public void enabledChanged(Component component) {
}
- public void focusedChanged(Component component, boolean temporary) {
+ public void focusedChanged(Component component, Component obverseComponent) {
}
}
@@ -47,7 +47,7 @@
* Called when a component's focused state has changed.
*
* @param component
- * @param temporary
+ * @param obverseComponent
*/
- public void focusedChanged(Component component, boolean temporary);
+ public void focusedChanged(Component component, Component obverseComponent);
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java Mon Aug 10 17:25:18 2009
@@ -254,7 +254,7 @@
// and contains the focused component, clear the focus
if (parent == null
&& containsFocus()) {
- clearFocus(false);
+ clearFocus();
}
super.setParent(parent);
@@ -303,7 +303,7 @@
public void setVisible(boolean visible) {
if (!visible
&& containsFocus()) {
- clearFocus(false);
+ clearFocus();
}
super.setVisible(visible);
@@ -431,20 +431,11 @@
}
/**
- * @return
- * <tt>false</tt>; containers are not focusable.
- */
- @Override
- public final boolean isFocusable() {
- return false;
- }
-
- /**
* Requests that focus be set to the first focusable descendant in this
* container.
*/
@Override
- protected boolean requestFocus(boolean temporary) {
+ public boolean requestFocus() {
boolean success = false;
if (isShowing()
@@ -462,7 +453,7 @@
// yields false when requestFocus() is called on it
if (component != null) {
- success = component.requestFocus(temporary);
+ success = component.requestFocus();
}
} while (component != null
&& !success);
@@ -508,6 +499,22 @@
&& isAncestor(focusedComponent));
}
+ protected void descendantGainedFocus(Component descendant) {
+ Container parent = getParent();
+
+ if (parent != null) {
+ parent.descendantGainedFocus(descendant);
+ }
+ }
+
+ protected void descendantLostFocus(Component descendant) {
+ Container parent = getParent();
+
+ if (parent != null) {
+ parent.descendantLostFocus(descendant);
+ }
+ }
+
/**
* Returns the container's context key.
*
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Frame.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Frame.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Frame.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Frame.java Mon Aug 10 17:25:18 2009
@@ -81,52 +81,50 @@
}
@Override
- protected void setFocusDescendant(Component focusDescendant) {
+ protected void descendantGainedFocus(Component descendant) {
+ super.descendantGainedFocus(descendant);
+
+ // Walk down descendant hierarchy and call configureMenuBar()
if (menuBar != null) {
- // Walk down previous focus descendant hierarchy and call cleanupMenuBar()
- Component previousFocusDescendant = getFocusDescendant();
+ LinkedList<Component> path = new LinkedList<Component>();
- if (previousFocusDescendant != null
- && !(previousFocusDescendant instanceof MenuBar.Item)) {
- LinkedList<Component> previousFocusDescendantPath = new LinkedList<Component>();
-
- Component previousFocusAncestor = previousFocusDescendant;
- while (!(previousFocusAncestor instanceof Display)) {
- previousFocusDescendantPath.insert(previousFocusAncestor, 0);
- previousFocusAncestor = previousFocusAncestor.getParent();
- }
+ Component ancestor = descendant;
+ while (!(ancestor instanceof Display)) {
+ path.insert(ancestor, 0);
+ ancestor = ancestor.getParent();
+ }
- for (Component component : previousFocusDescendantPath) {
- MenuHandler menuHandler = component.getMenuHandler();
+ for (Component component : path) {
+ MenuHandler menuHandler = component.getMenuHandler();
- if (menuHandler != null) {
- menuHandler.cleanupMenuBar(component, menuBar);
- }
+ if (menuHandler != null) {
+ menuHandler.configureMenuBar(component, menuBar);
}
}
+ }
+ }
- // Walk down focus descendant hierarchy and call configureMenuBar()
- if (focusDescendant != null
- && !(previousFocusDescendant instanceof MenuBar.Item)) {
- LinkedList<Component> focusDescendantPath = new LinkedList<Component>();
-
- Component focusAncestor = focusDescendant;
- while (!(focusAncestor instanceof Display)) {
- focusDescendantPath.insert(focusAncestor, 0);
- focusAncestor = focusAncestor.getParent();
- }
+ protected void descendantLostFocus(Component descendant) {
+ super.descendantLostFocus(descendant);
- for (Component component : focusDescendantPath) {
- MenuHandler menuHandler = component.getMenuHandler();
+ // Walk down descendant hierarchy and call configureMenuBar()
+ if (menuBar != null) {
+ LinkedList<Component> path = new LinkedList<Component>();
+
+ Component ancestor = descendant;
+ while (!(ancestor instanceof Display)) {
+ path.insert(ancestor, 0);
+ ancestor = ancestor.getParent();
+ }
- if (menuHandler != null) {
- menuHandler.configureMenuBar(component, menuBar);
- }
+ for (Component component : path) {
+ MenuHandler menuHandler = component.getMenuHandler();
+
+ if (menuHandler != null) {
+ menuHandler.cleanupMenuBar(component, menuBar);
}
}
}
-
- super.setFocusDescendant(focusDescendant);
}
@Override
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuBar.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuBar.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuBar.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MenuBar.java Mon Aug 10 17:25:18 2009
@@ -232,10 +232,6 @@
if (this.active != active) {
this.active = active;
- if (!active) {
- getWindow().setFocusDescendant(null);
- }
-
menuBarListeners.activeChanged(this);
}
}
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -134,7 +134,6 @@
super.close();
if (isClosed()) {
- setFocusDescendant(null);
affiliate = null;
}
}
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -247,9 +247,9 @@
}
}
- public void activeChanged(Window window) {
+ public void activeChanged(Window window, Window obverseWindow) {
for (WindowListener listener : this) {
- listener.activeChanged(window);
+ listener.activeChanged(window, obverseWindow);
}
}
@@ -814,9 +814,10 @@
* Called to notify a window that its active state has changed.
*
* @param active
+ * @param obverseWindow
*/
- protected void setActive(boolean active) {
- windowListeners.activeChanged(this);
+ protected void setActive(boolean active, Window obverseWindow) {
+ windowListeners.activeChanged(this, obverseWindow);
}
/**
@@ -861,12 +862,12 @@
// Notify the windows of the state change
if (previousActiveWindow != null) {
- previousActiveWindow.setActive(false);
+ previousActiveWindow.setActive(false, activeWindow);
}
// Activate the window
if (activeWindow != null) {
- activeWindow.setActive(true);
+ activeWindow.setActive(true, previousActiveWindow);
}
windowClassListeners.activeWindowChanged(previousActiveWindow);
@@ -881,17 +882,11 @@
return focusDescendant;
}
- /**
- * Sets the window descendant to which focus will be restored by a call to
- * {@link #restoreFocus()}.
- *
- * @param focusDescendant
- */
- protected void setFocusDescendant(Component focusDescendant) {
- assert(focusDescendant == null
- || focusDescendant.getWindow() == this);
+ @Override
+ protected void descendantGainedFocus(Component descendant) {
+ super.descendantGainedFocus(descendant);
- this.focusDescendant = focusDescendant;
+ this.focusDescendant = descendant;
}
/**
@@ -903,14 +898,14 @@
if (focusDescendant != null) {
if (isAncestor(focusDescendant)) {
- focusDescendant.requestFocus(true);
+ focusDescendant.requestFocus();
} else {
focusDescendant = null;
}
}
if (focusDescendant == null) {
- Component.clearFocus(false);
+ Component.clearFocus();
}
}
@@ -1016,7 +1011,7 @@
}
if (containsFocus()) {
- clearFocus(true);
+ clearFocus();
}
Display display = getDisplay();
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -42,7 +42,7 @@
public void ownerChanged(Window window, Window previousOwner) {
}
- public void activeChanged(Window window) {
+ public void activeChanged(Window window, Window obverseWindow) {
}
public void maximizedChanged(Window window) {
@@ -88,8 +88,9 @@
* Called when a window's active state has changed.
*
* @param window
+ * @param obverseWindow
*/
- public void activeChanged(Window window);
+ public void activeChanged(Window window, Window obverseWindow);
/**
* Called when a window's maximized state has changed.
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ButtonSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ButtonSkin.java Mon Aug 10 17:25:18 2009
@@ -71,8 +71,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
repaintComponent(!component.isFocused());
}
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -223,8 +223,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
// Close the popup if focus was transferred to a component whose
// window is not the popup
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -204,10 +204,9 @@
// No-op
}
- public void focusedChanged(Component component, boolean temporary) {
+ public void focusedChanged(Component component, Component obverseComponent) {
// Ensure that the component is visible if it is in a viewport
- if (component.isFocused()
- && !temporary) {
+ if (component.isFocused()) {
component.scrollAreaToVisible(0, 0, getWidth(), getHeight());
}
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ContainerSkin.java Mon Aug 10 17:25:18 2009
@@ -167,10 +167,10 @@
/**
* @return
- * <tt>false</tt>; containers are not focusable.
+ * <tt>false</tt>; by default, containers are not focusable.
*/
@Override
- public final boolean isFocusable() {
+ public boolean isFocusable() {
return false;
}
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -226,8 +226,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
// Close the popup if focus was transferred to a component whose
// window is not the popup
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -200,8 +200,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
if (component.isFocused()) {
if (!menuPopup.isOpen()) {
@@ -215,8 +215,7 @@
menuPopup.open(menuBarItem);
}
} else {
- if (!temporary
- && !menuPopup.containsFocus()) {
+ if (!menuPopup.containsFocus()) {
menuPopup.close();
}
}
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -69,8 +69,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
// Close the popup if focus was transferred to a component whose
// window is not the popup
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/PushButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/PushButtonSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/PushButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/PushButtonSkin.java Mon Aug 10 17:25:18 2009
@@ -37,8 +37,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
pressed = false;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/TextAreaSkin.java Mon Aug 10 17:25:18 2009
@@ -1585,8 +1585,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
TextArea textArea = (TextArea)getComponent();
showCaret(textArea.isFocused()
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -134,7 +134,7 @@
// No-op
}
- public void activeChanged(Window window) {
+ public void activeChanged(Window window, Window obverseWindow) {
// No-op
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java Mon Aug 10 17:25:18 2009
@@ -186,10 +186,10 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
+ public void focusedChanged(Component component, Component obverseComponent) {
highlighted = component.isFocused();
- super.focusedChanged(component, temporary);
+ super.focusedChanged(component, obverseComponent);
}
@Override
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraExpanderSkin.java Mon Aug 10 17:25:18 2009
@@ -391,9 +391,9 @@
titleBarTablePane.setSize(Math.max(width - 2, 0), titleBarHeight);
titleBarTablePane.setLocation(1, 1);
- if (expander.isExpanded()
- || expandTransition != null) {
- if (content != null) {
+ if (content != null) {
+ if (expander.isExpanded()
+ || expandTransition != null) {
int contentWidth = Math.max(width - (2 + padding.left + padding.right), 0);
int contentHeight = Math.max(height - (3 + padding.top + padding.bottom + titleBarHeight), 0);
content.setSize(contentWidth, contentHeight);
@@ -401,6 +401,10 @@
int contentX = 1 + padding.left;
int contentY = 2 + padding.top + titleBarHeight;
content.setLocation(contentX, contentY);
+
+ content.setVisible(true);
+ } else {
+ content.setVisible(false);
}
}
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFrameSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFrameSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFrameSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFrameSkin.java Mon Aug 10 17:25:18 2009
@@ -341,7 +341,7 @@
iconChanged(frame, null);
titleChanged(frame, null);
- activeChanged(frame);
+ activeChanged(frame, null);
updateMaximizedState();
}
@@ -770,7 +770,7 @@
}
@Override
- public void activeChanged(Window window) {
+ public void activeChanged(Window window, Window obverseWindow) {
boolean active = window.isActive();
titleLabel.getStyles().put("color", active ?
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraListViewSkin.java Mon Aug 10 17:25:18 2009
@@ -788,8 +788,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
repaintComponent(!component.isFocused());
}
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=802868&r1=802867&r2=802868&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 Aug 10 17:25:18 2009
@@ -100,7 +100,7 @@
private Insets padding = new Insets(4);
private WindowListener ownerListener = new WindowListener.Adapter() {
- public void activeChanged(Window owner) {
+ public void activeChanged(Window owner, Window obverseWindow) {
Window window = (Window)getComponent();
window.setVisible(owner.isActive());
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraRollupSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraRollupSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraRollupSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraRollupSkin.java Mon Aug 10 17:25:18 2009
@@ -342,7 +342,12 @@
content.setLocation(x, y);
content.setSize(contentWidth, contentHeight);
+
+ content.setVisible(true);
+ } else {
+ content.setVisible(false);
}
+
}
y = (heading == null ? 0 : (heading.getHeight() - rollupButtonSize.height) / 2 + 1);
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSpinnerSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSpinnerSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSpinnerSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSpinnerSkin.java Mon Aug 10 17:25:18 2009
@@ -243,8 +243,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
repaintComponent(!component.isFocused());
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTableViewSkin.java Mon Aug 10 17:25:18 2009
@@ -1027,8 +1027,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
repaintComponent(!component.isFocused());
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java Mon Aug 10 17:25:18 2009
@@ -45,6 +45,7 @@
import org.apache.pivot.wtk.TextInputListener;
import org.apache.pivot.wtk.TextInputSelectionListener;
import org.apache.pivot.wtk.Theme;
+import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtk.skin.ComponentSkin;
import org.apache.pivot.wtk.text.TextNode;
import org.apache.pivot.wtk.text.validation.Validator;
@@ -1215,21 +1216,32 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
TextInput textInput = (TextInput)getComponent();
TextNode textNode = textInput.getTextNode();
- if (component.isFocused()) {
- showCaret(textInput.getSelectionLength() == 0);
+ Window window = component.getWindow();
- if (!temporary
- && Mouse.getCapturer() != component) {
- textInput.setSelection(0, textNode.getCharacterCount());
+ if (component.isFocused()) {
+ // If focus is not being restored or the focus was permanently
+ // transferred within this window, select all
+ if ((obverseComponent == null
+ && window.getFocusDescendant() != component)
+ || (obverseComponent != null
+ && obverseComponent.getWindow() == window)) {
+ if (Mouse.getCapturer() != component) {
+ textInput.setSelection(0, textNode.getCharacterCount());
+ }
}
+
+ showCaret(textInput.getSelectionLength() == 0);
} else {
- if (!temporary) {
+ // If focus is being permanently transferred within this window,
+ // clear the selection
+ if (obverseComponent != null
+ && obverseComponent.getWindow() == window) {
textInput.setSelection(textInput.getSelectionStart()
+ textInput.getSelectionLength(), 0);
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraTreeViewSkin.java Mon Aug 10 17:25:18 2009
@@ -1665,8 +1665,8 @@
}
@Override
- public void focusedChanged(Component component, boolean temporary) {
- super.focusedChanged(component, temporary);
+ public void focusedChanged(Component component, Component obverseComponent) {
+ super.focusedChanged(component, obverseComponent);
repaintComponent(!component.isFocused());
}
Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowFocusTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowFocusTest.java?rev=802868&r1=802867&r2=802868&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowFocusTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/WindowFocusTest.java Mon Aug 10 17:25:18 2009
@@ -22,6 +22,7 @@
import org.apache.pivot.wtk.Display;
import org.apache.pivot.wtk.BoxPane;
import org.apache.pivot.wtk.Frame;
+import org.apache.pivot.wtk.Orientation;
import org.apache.pivot.wtk.TextInput;
public class WindowFocusTest implements Application {
@@ -30,13 +31,17 @@
@Override
public void startup(Display display, Map<String, String> properties) throws Exception {
- BoxPane boxPane1 = new BoxPane();
+ BoxPane boxPane1 = new BoxPane(Orientation.VERTICAL);
+ boxPane1.add(new TextInput());
+ boxPane1.add(new TextInput());
boxPane1.add(new TextInput());
frame1 = new Frame(boxPane1);
frame1.setPreferredSize(320, 240);
frame1.open(display);
- BoxPane boxPane2 = new BoxPane();
+ BoxPane boxPane2 = new BoxPane(Orientation.VERTICAL);
+ boxPane2.add(new TextInput());
+ boxPane2.add(new TextInput());
boxPane2.add(new TextInput());
frame2 = new Frame(boxPane2);
frame2.setPreferredSize(320, 240);