You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/09/17 19:54:55 UTC
svn commit: r816305 - in
/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: Container.java
ContainerListener.java DesktopApplicationContext.java Window.java
WindowListener.java skin/ContainerSkin.java skin/WindowSkin.java
Author: tvolkert
Date: Thu Sep 17 17:54:55 2009
New Revision: 816305
URL: http://svn.apache.org/viewvc?rev=816305&view=rev
Log:
Made Container.move() public, moved WindowListener.windowMoved() to be ContainerListener.componentMoved(), made DesktopApplicationContext set the host frame title based on the root owner of the top window, as opposed to the root owner of the active window
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.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/ContainerSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java
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=816305&r1=816304&r2=816305&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 Thu Sep 17 17:54:55 2009
@@ -51,6 +51,13 @@
}
@Override
+ public void componentMoved(Container container, int from, int to) {
+ for (ContainerListener listener : this) {
+ listener.componentMoved(container, from, to);
+ }
+ }
+
+ @Override
public void contextKeyChanged(Container container, String previousContextKey) {
for (ContainerListener listener : this) {
listener.contextKeyChanged(container, previousContextKey);
@@ -215,22 +222,31 @@
}
/**
- * Moves a component within the component sequence. This method does not
- * fire any events; it is the caller's responsibility to ensure that
- * appropriate events are fired (see
- * {@link WindowListener#windowMoved(Window, int, int)} as an example).
+ * Moves a component within the component sequence.
*
* @param from
* @param to
*/
- protected void move(int from, int to) {
+ public void move(int from, int to) {
if (from != to) {
+ int n = components.getLength();
+
+ if (from < 0
+ || from >= n
+ || to < 0
+ || to >= n) {
+ throw new IndexOutOfBoundsException();
+ }
+
Sequence<Component> removed = components.remove(from, 1);
Component component = removed.get(0);
components.insert(component, to);
// Repaint the area occupied by the component
repaint(component.getDecoratedBounds());
+
+ // Notify listeners
+ containerListeners.componentMoved(this, from, to);
}
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/ContainerListener.java Thu Sep 17 17:54:55 2009
@@ -23,6 +23,32 @@
*/
public interface ContainerListener {
/**
+ * Container listener adapter.
+ */
+ public static class Adapter implements ContainerListener {
+ @Override
+ public void componentInserted(Container container, int index) {
+ }
+
+ @Override
+ public void componentsRemoved(Container container, int index, Sequence<Component> removed) {
+ }
+
+ @Override
+ public void componentMoved(Container container, int from, int to) {
+ }
+
+ @Override
+ public void contextKeyChanged(Container container, String previousContextKey) {
+ }
+
+ @Override
+ public void focusTraversalPolicyChanged(Container container,
+ FocusTraversalPolicy previousFocusTraversalPolicy) {
+ }
+ }
+
+ /**
* Called when a component has been inserted into a container's component
* sequence.
*
@@ -42,6 +68,16 @@
public void componentsRemoved(Container container, int index, Sequence<Component> removed);
/**
+ * Called when a component has moved from one z-index to another within a
+ * container.
+ *
+ * @param container
+ * @param from
+ * @param to
+ */
+ public void componentMoved(Container container, int from, int to);
+
+ /**
* Called when a container's context key has changed.
*
* @param container
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java?rev=816305&r1=816304&r2=816305&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/DesktopApplicationContext.java Thu Sep 17 17:54:55 2009
@@ -33,6 +33,7 @@
import java.util.prefs.Preferences;
import org.apache.pivot.collections.HashMap;
+import org.apache.pivot.collections.Sequence;
import org.apache.pivot.collections.immutable.ImmutableMap;
import org.apache.pivot.wtk.media.Image;
import org.apache.pivot.wtk.media.Picture;
@@ -393,44 +394,68 @@
}
}
- // Add a listener for active window changes
- final WindowListener rootOwnerListener = new WindowListener.Adapter() {
- @Override
- public void titleChanged(Window window, String previousTitle) {
- updateFrameTitleBar(window);
- }
+ // Create the application context
+ applicationContext = new DesktopApplicationContext();
+ DisplayHost displayHost = applicationContext.getDisplayHost();
+
+ // Create the windowed host frame
+ windowedHostFrame = new HostFrame();
+ windowedHostFrame.add(displayHost);
+
+ windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
+ windowedHostFrame.setSize(width, height);
+ windowedHostFrame.setResizable(resizable);
+ if (center) {
+ java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+ windowedHostFrame.setLocation((screenSize.width - width) / 2,
+ (screenSize.height - height) / 2);
+ } else {
+ windowedHostFrame.setLocation(x, y);
+ }
+
+ applicationContext.getDisplay().getContainerListeners().add(new ContainerListener.Adapter() {
@Override
- public void iconChanged(Window window, Image previousIcon) {
- updateFrameTitleBar(window);
+ public void componentInserted(Container container, int index) {
+ if (index == container.getLength() - 1) {
+ topWindowChanged((Display)container,
+ (index > 0) ? (Window)container.get(index - 1) : null);
+ }
}
- };
- Window.getWindowClassListeners().add(new WindowClassListener() {
@Override
- public void activeWindowChanged(Window previousActiveWindow) {
- if (previousActiveWindow != null) {
- Window previousRootOwner = previousActiveWindow.getRootOwner();
- previousRootOwner.getWindowListeners().remove(rootOwnerListener);
+ public void componentsRemoved(Container container, int index,
+ Sequence<Component> removed) {
+ if (index == container.getLength()) {
+ topWindowChanged((Display)container,
+ (Window)removed.get(removed.getLength() - 1));
}
+ }
- Window activeWindow = Window.getActiveWindow();
-
- if (activeWindow != null) {
- Window rootOwner = activeWindow.getRootOwner();
- rootOwner.getWindowListeners().add(rootOwnerListener);
+ @Override
+ public void componentMoved(Container container, int from, int to) {
+ int n = container.getLength();
+ if (from == n) {
+ topWindowChanged((Display)container, (Window)container.get(from));
+ } else if (to == n) {
+ topWindowChanged((Display)container, (Window)container.get(n - 1));
}
+ }
+ private void topWindowChanged(Display display, Window previousTopWindow) {
if (updateFrameTitleBarCallback == null) {
updateFrameTitleBarCallback = new Runnable() {
@Override
public void run() {
- Window activeWindow = Window.getActiveWindow();
- if (activeWindow == null) {
+ Display display = applicationContext.getDisplay();
+ int n = display.getLength();
+
+ if (n == 0) {
windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
windowedHostFrame.setIconImage(null);
} else {
- Window rootOwner = activeWindow.getRootOwner();
+ Window topWindow = (Window)display.get(n - 1);
+ Window rootOwner = topWindow.getRootOwner();
updateFrameTitleBar(rootOwner);
}
@@ -443,25 +468,6 @@
}
});
- // Create the application context
- applicationContext = new DesktopApplicationContext();
- DisplayHost displayHost = applicationContext.getDisplayHost();
-
- // Create the windowed host frame
- windowedHostFrame = new HostFrame();
- windowedHostFrame.add(displayHost);
-
- windowedHostFrame.setTitle(DEFAULT_HOST_FRAME_TITLE);
- windowedHostFrame.setSize(width, height);
- windowedHostFrame.setResizable(resizable);
-
- if (center) {
- java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
- windowedHostFrame.setLocation((screenSize.width - width) / 2, (screenSize.height - height) / 2);
- } else {
- windowedHostFrame.setLocation(x, y);
- }
-
// Add a key listener to the display host to toggle between full-screen
// and windowed mode
displayHost.addKeyListener(new KeyAdapter() {
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=816305&r1=816304&r2=816305&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 Thu Sep 17 17:54:55 2009
@@ -249,13 +249,6 @@
}
@Override
- public void windowMoved(Window window, int from, int to) {
- for (WindowListener listener : this) {
- listener.windowMoved(window, from, to);
- }
- }
-
- @Override
public void ownerChanged(Window window, Window previousOwner) {
for (WindowListener listener : this) {
listener.ownerChanged(window, previousOwner);
@@ -487,6 +480,11 @@
throw new IllegalArgumentException("Owner is not open.");
}
+ if (owner != null
+ && isOwner(owner)) {
+ throw new IllegalArgumentException("Owner is already an owned descendant");
+ }
+
Window previousOwner = this.owner;
if (previousOwner != owner) {
@@ -910,7 +908,6 @@
int i = display.indexOf(this);
if (i < n) {
display.move(i, n);
- windowListeners.windowMoved(this, i, n);
}
// Restore focus
@@ -941,10 +938,6 @@
for (Window ownedWindow : sortedOwnedWindows) {
ownedWindow.moveToFront();
}
-
- if (owner == null) {
- requestActive();
- }
}
/**
@@ -972,7 +965,6 @@
int i = display.indexOf(this);
if (i > 0) {
display.move(i, 0);
- windowListeners.windowMoved(this, i, 0);
}
if (owner != null) {
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=816305&r1=816304&r2=816305&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 Thu Sep 17 17:54:55 2009
@@ -49,10 +49,6 @@
@Override
public void maximizedChanged(Window window) {
}
-
- @Override
- public void windowMoved(Window window, int from, int to) {
- }
}
/**
@@ -101,13 +97,4 @@
* @param window
*/
public void maximizedChanged(Window window);
-
- /**
- * Called when a window's position has changed.
- *
- * @param window
- * @param from
- * @param to
- */
- public void windowMoved(Window window, int from, int to);
}
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=816305&r1=816304&r2=816305&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 Thu Sep 17 17:54:55 2009
@@ -242,6 +242,10 @@
}
@Override
+ public void componentMoved(Container container, int from, int to) {
+ }
+
+ @Override
public void contextKeyChanged(Container container, String previousContextKey) {
// No-op
}
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=816305&r1=816304&r2=816305&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 Thu Sep 17 17:54:55 2009
@@ -166,11 +166,6 @@
// No-op
}
- @Override
- public void windowMoved(Window window, int from, int to) {
- // No-op
- }
-
// Window state events
@Override
public Vote previewWindowOpen(Window window, Display display) {