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/02 16:45:37 UTC
svn commit: r810533 - in
/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: Dialog.java Sheet.java
Window.java skin/WindowSkin.java skin/terra/TerraDialogSkin.java
skin/terra/TerraFileBrowserSheetSkin.java skin/terra/TerraSheetSkin.java
Author: gbrown
Date: Wed Sep 2 14:45:36 2009
New Revision: 810533
URL: http://svn.apache.org/viewvc?rev=810533&view=rev
Log:
Initial work towards resolving PIVOT-265:
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Window.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/WindowSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java?rev=810533&r1=810532&r2=810533&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Dialog.java Wed Sep 2 14:45:36 2009
@@ -52,7 +52,6 @@
private boolean modal = false;
private DialogCloseListener dialogCloseListener = null;
- private Window disabledOwner = null;
private boolean result = false;
private DialogStateListenerList dialogStateListeners = new DialogStateListenerList();
@@ -151,36 +150,6 @@
if (isOpen()) {
this.dialogCloseListener = dialogCloseListener;
this.modal = modal;
-
- if (modal) {
- if (!owner.isEnabled()) {
- throw new IllegalStateException("Owner is already disabled.");
- }
-
- // Walk owner tree to find the nearest enabled owning ancestor
- // and disable it
- Window disabledOwner = null;
-
- while (owner != null
- && owner.isEnabled()) {
- disabledOwner = owner;
- owner = owner.getOwner();
- }
-
- // Disable the ancestor and maintain a reference to it so we can
- // enable it when this dialog is closed
- if (disabledOwner != null) {
- disabledOwner.setEnabled(false);
- }
-
- this.disabledOwner = disabledOwner;
-
- // Disabling the owner tree also disabled this dialog; re-enable it
- // and make it the active window
- setEnabled(true);
- requestActive();
- restoreFocus();
- }
}
}
@@ -199,19 +168,12 @@
if (isClosed()) {
this.result = result;
- // Enable the ancestor that was disabled when this dialog
- // was opened
- if (disabledOwner != null) {
- disabledOwner.setEnabled(true);
-
- // Move the owner to the front
- if (modal) {
- disabledOwner.moveToFront();
- }
+ Window owner = getOwner();
+ if (owner.isOpen()) {
+ owner.moveToFront();
}
modal = false;
- disabledOwner = null;
// Notify listeners
if (dialogCloseListener != null) {
@@ -235,10 +197,6 @@
return dialogCloseListener;
}
- public Window getDisabledOwner() {
- return disabledOwner;
- }
-
public boolean getResult() {
return result;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java?rev=810533&r1=810532&r2=810533&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Sheet.java Wed Sep 2 14:45:36 2009
@@ -52,25 +52,6 @@
private boolean result = false;
private SheetCloseListener sheetCloseListener = null;
- private ComponentMouseButtonListener ownerMouseButtonListener =
- new ComponentMouseButtonListener.Adapter() {
- @Override
- public boolean mouseDown(Component component, Mouse.Button button, int x, int y) {
- Window owner = (Window)component;
- Component ownerContent = owner.getContent();
-
- if (ownerContent != null
- && !ownerContent.isEnabled()
- && owner.getComponentAt(x, y) == ownerContent) {
- ApplicationContext.beep();
-
- moveToFront();
- }
-
- return false;
- }
- };
-
private SheetStateListenerList sheetStateListeners = new SheetStateListenerList();
/**
@@ -113,17 +94,6 @@
}
super.open(display);
-
- if (isOpen()) {
- Component content = owner.getContent();
- if (!content.isEnabled()) {
- throw new IllegalStateException("Owner content is already disabled.");
- }
-
- content.setEnabled(false);
-
- owner.getComponentMouseButtonListeners().add(ownerMouseButtonListener);
- }
}
@Override
@@ -155,11 +125,6 @@
this.result = result;
Window owner = getOwner();
- owner.getComponentMouseButtonListeners().remove(ownerMouseButtonListener);
-
- Component content = owner.getContent();
- content.setEnabled(true);
-
if (owner.isOpen()) {
owner.moveToFront();
}
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=810533&r1=810532&r2=810533&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 Wed Sep 2 14:45:36 2009
@@ -966,11 +966,13 @@
window = window.owner;
}
} else {
- // Activate the window
+ // Activate/restore the window
if (window.isShowing()
- && window.isEnabled()
- && !window.isAuxilliary()) {
- setActiveWindow(window);
+ && window.isEnabled()) {
+ if (!window.isAuxilliary()) {
+ setActiveWindow(window);
+ }
+
window.restoreFocus();
}
@@ -1104,26 +1106,6 @@
}
@Override
- protected boolean mouseDown(Mouse.Button button, int x, int y) {
- // NOTE This is done here rather than in WindowSkin because the
- // user input methods are not called on the skin when the component
- // is disabled
-
- if (isEnabled()) {
- // Bring this window to the front
- moveToFront();
- } else {
- ApplicationContext.beep();
-
- // Bring the window's owner tree to the front
- Window rootOwner = getRootOwner();
- rootOwner.moveToFront();
- }
-
- return super.mouseDown(button, x, y);
- }
-
- @Override
public boolean keyReleased(int keyCode, Keyboard.KeyLocation keyLocation) {
boolean consumed = super.keyReleased(keyCode, keyLocation);
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=810533&r1=810532&r2=810533&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 Wed Sep 2 14:45:36 2009
@@ -25,6 +25,7 @@
import org.apache.pivot.wtk.Direction;
import org.apache.pivot.wtk.Display;
import org.apache.pivot.wtk.FocusTraversalPolicy;
+import org.apache.pivot.wtk.Mouse;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtk.WindowListener;
import org.apache.pivot.wtk.WindowStateListener;
@@ -118,6 +119,16 @@
}
}
+ @Override
+ public boolean mouseDown(Component component, Mouse.Button button, int x, int y) {
+ boolean consumed = super.mouseDown(component, button, x, y);
+
+ Window window = (Window)component;
+ window.moveToFront();
+
+ return consumed;
+ }
+
// Window events
@Override
public void titleChanged(Window window, String previousTitle) {
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java?rev=810533&r1=810532&r2=810533&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraDialogSkin.java Wed Sep 2 14:45:36 2009
@@ -20,12 +20,14 @@
import org.apache.pivot.wtk.ApplicationContext;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.Container;
+import org.apache.pivot.wtk.ContainerMouseListener;
import org.apache.pivot.wtk.Dialog;
import org.apache.pivot.wtk.DialogStateListener;
+import org.apache.pivot.wtk.Display;
import org.apache.pivot.wtk.Keyboard;
+import org.apache.pivot.wtk.Mouse;
import org.apache.pivot.wtk.Window;
-
/**
* Dialog skin.
*/
@@ -51,6 +53,33 @@
}
}
+ private ContainerMouseListener displayMouseListener = new ContainerMouseListener.Adapter() {
+ public boolean mouseDown(Container container, Mouse.Button button, int x, int y) {
+ boolean consumed = false;
+
+ Dialog dialog = (Dialog)getComponent();
+
+ if (dialog.isModal()) {
+ Display display = (Display)container;
+ Component descendant = display.getDescendantAt(x, y);
+
+ if (descendant != display) {
+ Window window = descendant.getWindow();
+
+ if (window.isOwner(dialog)) {
+ ApplicationContext.beep();
+ window = window.getRootOwner();
+ window.moveToFront();
+
+ consumed = true;
+ }
+ }
+ }
+
+ return consumed;
+ }
+ };
+
@Override
public void install(Component component) {
super.install(component);
@@ -93,9 +122,19 @@
public void windowOpened(Window window) {
super.windowOpened(window);
+ Display display = window.getDisplay();
+ display.getContainerMouseListeners().add(displayMouseListener);
+
ApplicationContext.queueCallback(new RepositionCallback());
}
+ @Override
+ public void windowClosed(Window window, Display display) {
+ super.windowClosed(window, display);
+
+ display.getContainerMouseListeners().remove(displayMouseListener);
+ }
+
public Vote previewDialogClose(Dialog dialog, boolean result) {
return Vote.APPROVE;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java?rev=810533&r1=810532&r2=810533&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraFileBrowserSheetSkin.java Wed Sep 2 14:45:36 2009
@@ -262,7 +262,9 @@
public void windowOpened(Window window) {
super.windowOpened(window);
- window.requestFocus();
+ if (window.isOpen()) {
+ window.requestFocus();
+ }
}
@Override
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java?rev=810533&r1=810532&r2=810533&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSheetSkin.java Wed Sep 2 14:45:36 2009
@@ -21,12 +21,17 @@
import org.apache.pivot.collections.Dictionary;
import org.apache.pivot.util.Vote;
+import org.apache.pivot.wtk.ApplicationContext;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.ComponentListener;
+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.GraphicsUtilities;
import org.apache.pivot.wtk.Insets;
import org.apache.pivot.wtk.Keyboard;
+import org.apache.pivot.wtk.Mouse;
import org.apache.pivot.wtk.Orientation;
import org.apache.pivot.wtk.Point;
import org.apache.pivot.wtk.Sheet;
@@ -64,6 +69,7 @@
private OpenTransition openTransition = null;
private Quadratic easing = new Quadratic();
+ // TODO Eliminate these and replace with a window component listener
private ComponentListener ownerComponentListener = new ComponentListener.Adapter() {
public void locationChanged(Component component, int previousX, int previousY) {
alignToOwnerContent();
@@ -76,6 +82,32 @@
}
};
+ private ContainerMouseListener displayMouseListener = new ContainerMouseListener.Adapter() {
+ public boolean mouseDown(Container container, Mouse.Button button, int x, int y) {
+ boolean consumed = false;
+
+ Sheet sheet = (Sheet)getComponent();
+
+ Display display = (Display)container;
+ Component descendant = display.getDescendantAt(x, y);
+
+ if (descendant != display) {
+ Window window = descendant.getWindow();
+
+ if (window.isOwner(sheet)) {
+ // TODO Block for mouse over the client area only
+
+ ApplicationContext.beep();
+ window.moveToFront();
+
+ consumed = true;
+ }
+ }
+
+ return consumed;
+ }
+ };
+
private DropShadowDecorator dropShadowDecorator = null;
private static final int TRANSITION_DURATION = 300;
@@ -341,6 +373,9 @@
public void windowOpened(final Window window) {
super.windowOpened(window);
+ Display display = window.getDisplay();
+ display.getContainerMouseListeners().add(displayMouseListener);
+
dropShadowDecorator.setShadowOpacity(DropShadowDecorator.DEFAULT_SHADOW_OPACITY);
Window owner = window.getOwner();
@@ -357,6 +392,13 @@
});
}
+ @Override
+ public void windowClosed(Window window, Display display) {
+ super.windowClosed(window, display);
+
+ display.getContainerMouseListeners().remove(displayMouseListener);
+ }
+
public Vote previewSheetClose(final Sheet sheet, final boolean result) {
// Start a close transition, return false, and close the window
// when the transition is complete