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/02/10 14:47:45 UTC

svn commit: r908502 - in /pivot/trunk: build.xml wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraSuggestionPopupSkin.java wtk/src/org/apache/pivot/wtk/SuggestionPopup.java

Author: gbrown
Date: Wed Feb 10 13:47:44 2010
New Revision: 908502

URL: http://svn.apache.org/viewvc?rev=908502&view=rev
Log:
Fade suggestion popup on close.

Modified:
    pivot/trunk/build.xml
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraSuggestionPopupSkin.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/SuggestionPopup.java

Modified: pivot/trunk/build.xml
URL: http://svn.apache.org/viewvc/pivot/trunk/build.xml?rev=908502&r1=908501&r2=908502&view=diff
==============================================================================
--- pivot/trunk/build.xml (original)
+++ pivot/trunk/build.xml Wed Feb 10 13:47:44 2010
@@ -37,7 +37,7 @@
 
     <!-- Compiler properties -->
     <property name="compiler.deprecation" value="true"/>
-    <property name="compiler.debug" value="true"/>
+    <property name="compiler.debug" value="false"/>
     <property name="compiler.target" value="1.6"/>
     <property name="compiler.encoding" value="UTF-8"/>
     <property name="compiler.indexJars" value="true"/>

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraSuggestionPopupSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraSuggestionPopupSkin.java?rev=908502&r1=908501&r2=908502&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraSuggestionPopupSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraSuggestionPopupSkin.java Wed Feb 10 13:47:44 2010
@@ -22,6 +22,7 @@
 import org.apache.pivot.collections.Dictionary;
 import org.apache.pivot.collections.List;
 import org.apache.pivot.collections.Sequence;
+import org.apache.pivot.util.Vote;
 import org.apache.pivot.wtk.Border;
 import org.apache.pivot.wtk.Component;
 import org.apache.pivot.wtk.ComponentKeyListener;
@@ -41,6 +42,9 @@
 import org.apache.pivot.wtk.TextInput;
 import org.apache.pivot.wtk.Theme;
 import org.apache.pivot.wtk.Window;
+import org.apache.pivot.wtk.effects.DropShadowDecorator;
+import org.apache.pivot.wtk.effects.Transition;
+import org.apache.pivot.wtk.effects.TransitionListener;
 import org.apache.pivot.wtk.skin.WindowSkin;
 
 /**
@@ -50,6 +54,9 @@
     private Border suggestionListViewBorder = new Border();
     private ListView suggestionListView = new ListView();
 
+    private DropShadowDecorator dropShadowDecorator = null;
+    private Transition closeTransition = null;
+
     private ContainerMouseListener displayMouseListener = new ContainerMouseListener.Adapter() {
         @Override
         public boolean mouseDown(Container container, Mouse.Button button, int x, int y) {
@@ -109,6 +116,9 @@
         }
     };
 
+    private static final int CLOSE_TRANSITION_DURATION = 150;
+    private static final int CLOSE_TRANSITION_RATE = 30;
+
     public TerraSuggestionPopupSkin () {
         suggestionListView.getListViewSelectionListeners().add(listViewSelectionListener);
         suggestionListViewBorder.setContent(suggestionListView);
@@ -125,6 +135,10 @@
 
         suggestionListView.setListData(suggestionPopup.getSuggestions());
         suggestionListView.setItemRenderer(suggestionPopup.getSuggestionRenderer());
+
+        // Attach the drop-shadow decorator
+        dropShadowDecorator = new DropShadowDecorator(3, 3, 3);
+        suggestionPopup.getDecorators().add(dropShadowDecorator);
     }
 
     public Font getFont() {
@@ -241,6 +255,38 @@
     }
 
     @Override
+    public Vote previewWindowClose(final Window window) {
+        if (closeTransition == null) {
+            suggestionListViewBorder.setEnabled(false);
+
+            closeTransition = new FadeWindowTransition(window,
+                CLOSE_TRANSITION_DURATION, CLOSE_TRANSITION_RATE,
+                dropShadowDecorator);
+
+            closeTransition.start(new TransitionListener() {
+                @Override
+                public void transitionCompleted(Transition transition) {
+                    window.close();
+                }
+            });
+        }
+
+        return (closeTransition != null
+            && closeTransition.isRunning()) ? Vote.DEFER : Vote.APPROVE;
+    }
+
+    @Override
+    public void windowCloseVetoed(Window window, Vote reason) {
+        if (reason == Vote.DENY
+            && closeTransition != null) {
+            closeTransition.stop();
+
+            suggestionListViewBorder.setEnabled(true);
+            closeTransition = null;
+        }
+    }
+
+    @Override
     public void windowClosed(Window window, Display display, Window owner) {
         display.getContainerMouseListeners().remove(displayMouseListener);
 
@@ -250,6 +296,9 @@
         TextInput textInput = suggestionPopup.getTextInput();
         textInput.getComponentKeyListeners().remove(textInputKeyListener);
 
+        suggestionListViewBorder.setEnabled(true);
+        closeTransition = null;
+
         super.windowClosed(window, display, owner);
 
         textInput.requestFocus();

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/SuggestionPopup.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/SuggestionPopup.java?rev=908502&r1=908501&r2=908502&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/SuggestionPopup.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/SuggestionPopup.java Wed Feb 10 13:47:44 2010
@@ -229,13 +229,13 @@
         this.textInput = textInput;
         this.suggestionPopupCloseListener = suggestionPopupCloseListener;
 
+        result = false;
+
         super.open(textInput.getWindow());
 
         if (!isOpen()) {
             this.textInput = null;
             this.suggestionPopupCloseListener = null;
-
-            result = false;
         }
     }