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/11/03 12:48:20 UTC

svn commit: r832399 - in /incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin: ColorChooserButtonSkin.java terra/TerraColorChooserSkin.java

Author: tvolkert
Date: Tue Nov  3 11:48:17 2009
New Revision: 832399

URL: http://svn.apache.org/viewvc?rev=832399&view=rev
Log:
Made color chooser button respond to double clicks over the color chooser

Modified:
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ColorChooserButtonSkin.java
    incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserSkin.java

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ColorChooserButtonSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ColorChooserButtonSkin.java?rev=832399&r1=832398&r2=832399&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ColorChooserButtonSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/ColorChooserButtonSkin.java Tue Nov  3 11:48:17 2009
@@ -20,6 +20,7 @@
 
 import org.apache.pivot.wtk.Component;
 import org.apache.pivot.wtk.ComponentKeyListener;
+import org.apache.pivot.wtk.ComponentMouseButtonListener;
 import org.apache.pivot.wtk.Container;
 import org.apache.pivot.wtk.ContainerMouseListener;
 import org.apache.pivot.wtk.Direction;
@@ -38,12 +39,18 @@
  */
 public abstract class ColorChooserButtonSkin extends ButtonSkin
     implements ColorChooserButtonListener, ColorChooserButtonSelectionListener {
+    /**
+     * A focusable window class used by color chooser button skins.
+     */
     public final class ColorChooserPopup extends Window {
         private ColorChooserPopup() {
             setSkin(new ColorChooserPopupSkin());
         }
     }
 
+    /**
+     * The color chooser popup skin.
+     */
     public final class ColorChooserPopupSkin extends WindowSkin {
         private ColorChooserPopupSkin() {
         }
@@ -115,6 +122,25 @@
         }
     };
 
+    private ComponentMouseButtonListener colorChooserMouseButtonListener =
+        new ComponentMouseButtonListener.Adapter() {
+        @Override
+        public boolean mouseClick(Component component, Mouse.Button button, int x, int y,
+            int count) {
+            ColorChooserButton colorChooserButton = (ColorChooserButton)getComponent();
+
+            if (button == Mouse.Button.LEFT
+                && count == 2) {
+                colorChooserPopup.close();
+
+                Color color = colorChooser.getSelectedColor();
+                colorChooserButton.setSelectedColor(color);
+            }
+
+            return false;
+        }
+    };
+
     private ContainerMouseListener displayMouseListener = new ContainerMouseListener.Adapter() {
         @Override
         public boolean mouseDown(Container container, Mouse.Button button, int x, int y) {
@@ -147,6 +173,7 @@
 
     public ColorChooserButtonSkin() {
         colorChooser = new ColorChooser();
+        colorChooser.getComponentMouseButtonListeners().add(colorChooserMouseButtonListener);
 
         colorChooserPopup = new ColorChooserPopup();
         colorChooserPopup.getComponentKeyListeners().add(colorChooserPopupKeyListener);

Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserSkin.java?rev=832399&r1=832398&r2=832399&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraColorChooserSkin.java Tue Nov  3 11:48:17 2009
@@ -48,6 +48,8 @@
     }
 
     private class HueChooserSkin extends ComponentSkin {
+        private boolean capture = false;
+
         @Override
         public int getPreferredWidth(int height) {
             return 18;
@@ -77,7 +79,7 @@
 
             // Mark the selected hue
             float hue = hueChooser.getHue();
-            graphics.setXORMode(Color.getHSBColor(hue, 1f, 1f));
+            graphics.setXORMode(Color.getHSBColor(1 - hue, 1f, 1f));
             graphics.fillRect(0, Math.min((int)(height * (1f - hue)), height - 1), width, 1);
             graphics.setPaintMode();
         }
@@ -91,6 +93,11 @@
         public boolean mouseMove(Component component, int x, int y) {
             boolean consumed = super.mouseMove(component, x, y);
 
+            if (capture
+                && Mouse.getCapturer() != component) {
+                Mouse.capture(component);
+            }
+
             if (Mouse.getCapturer() == component) {
                 setSelectedColor(y);
             }
@@ -104,7 +111,7 @@
 
             if (button == Mouse.Button.LEFT) {
                 setSelectedColor(y);
-                Mouse.capture(component);
+                capture = true;
                 consumed = true;
             }
 
@@ -115,9 +122,12 @@
         public boolean mouseUp(Component component, Mouse.Button button, int x, int y) {
             boolean consumed = super.mouseUp(component, button, x, y);
 
-            if (button == Mouse.Button.LEFT
-                && Mouse.getCapturer() == component) {
-                Mouse.release();
+            if (button == Mouse.Button.LEFT) {
+                capture = false;
+
+                if (Mouse.getCapturer() == component) {
+                    Mouse.release();
+                }
             }
 
             return consumed;
@@ -169,6 +179,8 @@
     }
 
     private class SaturationValueChooserSkin extends ComponentSkin {
+        private boolean capture = false;
+
         @Override
         public int getPreferredWidth(int height) {
             return 140;
@@ -218,6 +230,11 @@
         public boolean mouseMove(Component component, int x, int y) {
             boolean consumed = super.mouseMove(component, x, y);
 
+            if (capture
+                && Mouse.getCapturer() != component) {
+                Mouse.capture(component);
+            }
+
             if (Mouse.getCapturer() == component) {
                 setSelectedColor(x, y);
             }
@@ -231,7 +248,7 @@
 
             if (button == Mouse.Button.LEFT) {
                 setSelectedColor(x, y);
-                Mouse.capture(component);
+                capture = true;
                 consumed = true;
             }
 
@@ -242,9 +259,12 @@
         public boolean mouseUp(Component component, Mouse.Button button, int x, int y) {
             boolean consumed = super.mouseUp(component, button, x, y);
 
-            if (button == Mouse.Button.LEFT
-                && Mouse.getCapturer() == component) {
-                Mouse.release();
+            if (button == Mouse.Button.LEFT) {
+                capture = false;
+
+                if (Mouse.getCapturer() == component) {
+                    Mouse.release();
+                }
             }
 
             return consumed;