Revision: 1227
Author:   heuermh
Date:     Tue Nov 26 22:54:38 2013 UTC
Log:      Issue 166 ; refactor PNode moveToBack and related
http://code.google.com/p/piccolo2d/source/detail?r=1227

Modified:
/piccolo2d.java/branches/3.0-spike/core/src/main/java/org/piccolo2d/PNode.java /piccolo2d.java/branches/3.0-spike/core/src/main/java/org/piccolo2d/event/PDragEventHandler.java /piccolo2d.java/branches/3.0-spike/core/src/test/java/org/piccolo2d/PNodeTest.java /piccolo2d.java/branches/3.0-spike/core/src/test/java/org/piccolo2d/event/PDragEventHandlerTest.java /piccolo2d.java/branches/3.0-spike/examples/src/main/java/org/piccolo2d/examples/GridExample.java /piccolo2d.java/branches/3.0-spike/examples/src/main/java/org/piccolo2d/tutorial/PiccoloPresentation.java

=======================================
--- /piccolo2d.java/branches/3.0-spike/core/src/main/java/org/piccolo2d/PNode.java Tue Sep 4 16:10:27 2012 UTC +++ /piccolo2d.java/branches/3.0-spike/core/src/main/java/org/piccolo2d/PNode.java Tue Nov 26 22:54:38 2013 UTC
@@ -3234,7 +3234,7 @@

     /**
      * Return true if this node descends from the root.
-     *
+     *
      * @return whether this node descends from root node
      */
     public boolean isDescendentOfRoot() {
@@ -3242,37 +3242,43 @@
     }

     /**
- * Change the order of this node in its parent's children list so that it
-     * will draw in back of all of its other sibling nodes.
+     * Raise this node within the Z-order of its parent.
+     *
+     * @since 3.0
      */
-    public void moveToBack() {
+    public void raise() {
         final PNode p = parent;
         if (p != null) {
-            p.removeChild(this);
-            p.addChild(0, this);
+            final int index = parent.indexOfChild(this);
+ final int siblingIndex = Math.min(parent.getChildrenCount() - 1, index + 1);
+            if (siblingIndex != index) {
+                raiseAbove(parent.getChild(siblingIndex));
+            }
         }
     }

     /**
- * Change the order of this node in its parent's children list so that it
-     * will draw in back of the specified sibling node.
-     *
-     * @param sibling sibling to move in back of
+     * Lower this node within the Z-order of its parent.
+     *
+     * @since 3.0
      */
-    public void moveInBackOf(final PNode sibling) {
+    public void lower() {
         final PNode p = parent;
-        if (p != null && p == sibling.getParent()) {
-            p.removeChild(this);
-            final int index = p.indexOfChild(sibling);
-            p.addChild(index, this);
+        if (p != null) {
+            final int index = parent.indexOfChild(this);
+            final int siblingIndex = Math.max(0, index - 1);
+            if (siblingIndex != index) {
+                lowerBelow(parent.getChild(siblingIndex));
+            }
         }
     }

     /**
- * Change the order of this node in its parent's children list so that it
-     * will draw in front of all of its other sibling nodes.
+     * Raise this node within the Z-order of its parent to the top.
+     *
+     * @since 3.0
      */
-    public void moveToFront() {
+    public void raiseToTop() {
         final PNode p = parent;
         if (p != null) {
             p.removeChild(this);
@@ -3281,19 +3287,95 @@
     }

     /**
- * Change the order of this node in its parent's children list so that it
-     * will draw in front of the specified sibling node.
-     *
-     * @param sibling sibling to move in front of
+     * Lower this node within the Z-order of its parent to the bottom.
+     *
+     * @since 3.0
      */
-    public void moveInFrontOf(final PNode sibling) {
+    public void lowerToBottom() {
         final PNode p = parent;
+        if (p != null) {
+            p.removeChild(this);
+            p.addChild(0, this);
+        }
+    }
+
+    /**
+ * Raise this node within the Z-order of its parent above the specified sibling node.
+     *
+     * @since 3.0
+     * @param sibling sibling node to raise this node above
+     */
+    public void raiseAbove(final PNode sibling) {
+        final PNode p = parent;
         if (p != null && p == sibling.getParent()) {
             p.removeChild(this);
             final int index = p.indexOfChild(sibling);
             p.addChild(index + 1, this);
         }
     }
+
+    /**
+ * Lower this node within the Z-order of its parent below the specified sibling node.
+     *
+     * @since 3.0
+     * @param sibling sibling node to lower this node below
+     */
+    public void lowerBelow(final PNode sibling) {
+        final PNode p = parent;
+        if (p != null && p == sibling.getParent()) {
+            p.removeChild(this);
+            final int index = p.indexOfChild(sibling);
+            p.addChild(index, this);
+        }
+    }
+
+    /**
+     * Raise the specified child node within the Z-order of this.
+     *
+     * @since 3.0
+     * @param child child node to raise
+     */
+    public void raise(final PNode child) {
+ if (children != null && children.contains(child) && this.equals(child.getParent())) {
+            child.raise();
+        }
+    }
+
+    /**
+     * Lower the specified child node within the Z-order of this.
+     *
+     * @since 3.0
+     * @param child child node to lower
+     */
+    public void lower(final PNode child) {
+ if (children != null && children.contains(child) && this.equals(child.getParent())) {
+            child.lower();
+        }
+    }
+
+    /**
+ * Raise the specified child node within the Z-order of this to the top.
+     *
+     * @since 3.0
+     * @param child child node to raise to the top
+     */
+    public void raiseToTop(final PNode child) {
+ if (children != null && children.contains(child) && this.equals(child.getParent())) {
+            child.raiseToTop();
+        }
+    }
+
+    /**
+ * Lower the specified child node within the Z-order of this to the bottom.
+     *
+     * @since 3.0
+     * @param child child node to lower to the bottom
+     */
+    public void lowerToBottom(final PNode child) {
+ if (children != null && children.contains(child) && this.equals(child.getParent())) {
+            child.lowerToBottom();
+        }
+    }

     /**
* Return the parent of this node. This will be null if this node has not
=======================================
--- /piccolo2d.java/branches/3.0-spike/core/src/main/java/org/piccolo2d/event/PDragEventHandler.java Tue Mar 15 22:23:53 2011 UTC +++ /piccolo2d.java/branches/3.0-spike/core/src/main/java/org/piccolo2d/event/PDragEventHandler.java Tue Nov 26 22:54:38 2013 UTC
@@ -44,15 +44,15 @@
 public class PDragEventHandler extends PDragSequenceEventHandler {

     private PNode draggedNode;
-    private boolean moveToFrontOnPress;
+    private boolean raiseToTopOnPress;

     /**
- * Constructs a drag event handler which defaults to not moving the node to
-     * the front on drag.
+ * Constructs a drag event handler which defaults to not raising the node to
+     * the top on drag.
      */
     public PDragEventHandler() {
         draggedNode = null;
-        moveToFrontOnPress = false;
+        raiseToTopOnPress = false;

         setEventFilter(new PInputEventFilter(InputEvent.BUTTON1_MASK));
     }
@@ -88,15 +88,15 @@

     /**
      * Starts a drag event and moves the dragged node to the front if this
- * handler has been directed to do so with a call to setMoveToFrontOnDrag. + * handler has been directed to do so with a call to setRaiseToTopOnDrag.
      *
      * @param event The Event responsible for the start of the drag
      */
     protected void startDrag(final PInputEvent event) {
         super.startDrag(event);
         draggedNode = event.getPickedNode();
-        if (moveToFrontOnPress) {
-            draggedNode.moveToFront();
+        if (raiseToTopOnPress) {
+            draggedNode.raiseToTop();
         }
     }

@@ -124,23 +124,23 @@
     }

     /**
- * Returns whether this drag event handler has been informed to move nodes
-     * to the front of all other on drag.
+ * Returns whether this drag event handler has been informed to raise nodes
+     * to the top of all other on drag.
      *
-     * @return true if dragging a node will move it to the front
+     * @return true if dragging a node will raise it to the top
      */
-    public boolean getMoveToFrontOnPress() {
-        return moveToFrontOnPress;
+    public boolean getRaiseToTopOnPress() {
+        return raiseToTopOnPress;
     }

     /**
- * Informs this drag event handler whether it should move nodes to the front + * Informs this drag event handler whether it should raise nodes to the top
      * when they are dragged. Default is false.
      *
- * @param moveToFrontOnPress true if dragging a node should move it to the
-     *            front
+ * @param raiseToTopOnPress true if dragging a node should raise it to the
+     *            top
      */
-    public void setMoveToFrontOnPress(final boolean moveToFrontOnPress) {
-        this.moveToFrontOnPress = moveToFrontOnPress;
+    public void setRaiseToTopOnPress(final boolean raiseToTopOnPress) {
+        this.raiseToTopOnPress = raiseToTopOnPress;
     }
 }
=======================================
--- /piccolo2d.java/branches/3.0-spike/core/src/test/java/org/piccolo2d/PNodeTest.java Tue Mar 15 22:23:53 2011 UTC +++ /piccolo2d.java/branches/3.0-spike/core/src/test/java/org/piccolo2d/PNodeTest.java Tue Nov 26 22:54:38 2013 UTC
@@ -1315,38 +1315,166 @@
         assertFalse(grandChild.isDescendentOf(unrelated));
     }

-    public void testMoveToBackMovesNodeToBeFirstChild() {
+    public void testRaise() {
         final PNode parent = new PNode();
+        parent.addChild(node);
         parent.addChild(new PNode());
         parent.addChild(new PNode());
+        node.raise();
+        assertEquals(1, parent.indexOfChild(node));
+    }
+
+    public void testRaiseOnly() {
+        final PNode parent = new PNode();
         parent.addChild(node);
-        node.moveToBack();
+        node.raise();
         assertEquals(0, parent.indexOfChild(node));
     }

-    public void testMoveToFrontMovesNodeToBeLastChild() {
+    public void testLower() {
         final PNode parent = new PNode();
+        parent.addChild(new PNode());
+        parent.addChild(new PNode());
         parent.addChild(node);
+        node.lower();
+        assertEquals(1, parent.indexOfChild(node));
+    }
+
+    public void testLowerOnly() {
+        final PNode parent = new PNode();
+        parent.addChild(node);
+        node.lower();
+        assertEquals(0, parent.indexOfChild(node));
+    }
+
+    public void testRaiseToTop() {
+        final PNode parent = new PNode();
+        parent.addChild(node);
         parent.addChild(new PNode());
         parent.addChild(new PNode());
-        node.moveToFront();
+        node.raiseToTop();
         assertEquals(2, parent.indexOfChild(node));
     }

-    public void testMoveInBackOfMovesNodeToBeforeSibling() {
+    public void testRaiseToTopOnly() {
         final PNode parent = new PNode();
+        parent.addChild(node);
+        node.raiseToTop();
+        assertEquals(0, parent.indexOfChild(node));
+    }
+
+    public void testLowerToBottom() {
+        final PNode parent = new PNode();
+        parent.addChild(new PNode());
+        parent.addChild(new PNode());
+        parent.addChild(node);
+        node.lowerToBottom();
+        assertEquals(0, parent.indexOfChild(node));
+    }
+
+    public void testLowerToBottomOnly() {
+        final PNode parent = new PNode();
+        parent.addChild(node);
+        node.lowerToBottom();
+        assertEquals(0, parent.indexOfChild(node));
+    }
+
+    public void testRaiseAbove() {
+        final PNode parent = new PNode();
+        parent.addChild(node);
         final PNode sibling = new PNode();
+        parent.addChild(sibling);
+        parent.addChild(new PNode());
+        node.raiseAbove(sibling);
+        assertEquals(1, parent.indexOfChild(node));
+    }

+    public void testLowerBelow() {
+        final PNode parent = new PNode();
+        parent.addChild(new PNode());
+        final PNode sibling = new PNode();
+        parent.addChild(sibling);
+        parent.addChild(node);
+        node.lowerBelow(sibling);
+        assertEquals(1, parent.indexOfChild(node));
+    }
+
+    public void testRaiseChild() {
+        final PNode child0 = new PNode();
+        final PNode child1 = new PNode();
+        final PNode child2 = new PNode();
+        node.addChild(child0);
+        node.addChild(child1);
+        node.addChild(child2);
+        node.raise(child0);
+        assertEquals(1, node.indexOfChild(child0));
+    }
+
+    public void testLowerChild() {
+        final PNode child0 = new PNode();
+        final PNode child1 = new PNode();
+        final PNode child2 = new PNode();
+        node.addChild(child0);
+        node.addChild(child1);
+        node.addChild(child2);
+        node.lower(child2);
+        assertEquals(1, node.indexOfChild(child2));
+    }
+
+    public void testRaiseChildToTop() {
+        final PNode child0 = new PNode();
+        final PNode child1 = new PNode();
+        final PNode child2 = new PNode();
+        node.addChild(child0);
+        node.addChild(child1);
+        node.addChild(child2);
+        node.raiseToTop(child0);
+        assertEquals(2, node.indexOfChild(child0));
+    }
+
+    public void testLowerChildToBottom() {
+        final PNode child0 = new PNode();
+        final PNode child1 = new PNode();
+        final PNode child2 = new PNode();
+        node.addChild(child0);
+        node.addChild(child1);
+        node.addChild(child2);
+        node.lowerToBottom(child2);
+        assertEquals(0, node.indexOfChild(child2));
+    }
+
+    public void testLowerToBottomMovesNodeToBeFirstChild() {
+        final PNode parent = new PNode();
+        parent.addChild(new PNode());
+        parent.addChild(new PNode());
+        parent.addChild(node);
+        node.lowerToBottom();
+        assertEquals(0, parent.indexOfChild(node));
+    }
+
+    public void testRaiseToTopMovesNodeToBeLastChild() {
+        final PNode parent = new PNode();
+        parent.addChild(node);
+        parent.addChild(new PNode());
+        parent.addChild(new PNode());
+        node.raiseToTop();
+        assertEquals(2, parent.indexOfChild(node));
+    }
+
+    public void testLowerBelowMovesNodeToBeforeSibling() {
+        final PNode parent = new PNode();
+        final PNode sibling = new PNode();
+
         parent.addChild(node);
         parent.addChild(new PNode());
         parent.addChild(new PNode());
         parent.addChild(sibling);

-        node.moveInBackOf(sibling);
+        node.lowerBelow(sibling);
         assertEquals(2, parent.indexOfChild(node));
     }

-    public void testMoveInFrontOfMovesNodeToAfterSibling() {
+    public void testRaiseAboveMovesNodeToAfterSibling() {
         final PNode parent = new PNode();
         final PNode sibling = new PNode();

@@ -1355,11 +1483,11 @@
         parent.addChild(new PNode());
         parent.addChild(sibling);

-        node.moveInFrontOf(sibling);
+        node.raiseAbove(sibling);
         assertEquals(3, parent.indexOfChild(node));
     }

-    public void testMoveInFrontOfDoesNothingIfNotSibling() {
+    public void testRaiseAboveDoesNothingIfNotSibling() {
         final PNode parent = new PNode();
         final PNode stranger = new PNode();

@@ -1367,11 +1495,11 @@
         parent.addChild(new PNode());
         parent.addChild(new PNode());

-        node.moveInFrontOf(stranger);
+        node.raiseAbove(stranger);
         assertEquals(0, parent.indexOfChild(node));
     }

-    public void testMoveInBackOfDoesNothingIfNotSibling() {
+    public void testLowerBelowDoesNothingIfNotSibling() {
         final PNode parent = new PNode();
         final PNode stranger = new PNode();

@@ -1379,7 +1507,7 @@
         parent.addChild(new PNode());
         parent.addChild(new PNode());

-        node.moveInBackOf(stranger);
+        node.lowerBelow(stranger);
         assertEquals(0, parent.indexOfChild(node));
     }

=======================================
--- /piccolo2d.java/branches/3.0-spike/core/src/test/java/org/piccolo2d/event/PDragEventHandlerTest.java Tue Mar 15 22:23:53 2011 UTC +++ /piccolo2d.java/branches/3.0-spike/core/src/test/java/org/piccolo2d/event/PDragEventHandlerTest.java Tue Nov 26 22:54:38 2013 UTC
@@ -42,13 +42,13 @@
         handler = new PDragEventHandler();
     }

-    public void testMoveToFrontOnPressDefaultToFalse() {
-        assertFalse(handler.getMoveToFrontOnPress());
+    public void testRaiseToTopOnPressDefaultToFalse() {
+        assertFalse(handler.getRaiseToTopOnPress());
     }

-    public void testMoveToFrontOnPressPersists() {
-        handler.setMoveToFrontOnPress(true);
-        assertTrue(handler.getMoveToFrontOnPress());
+    public void testRaiseToTopOnPressPersists() {
+        handler.setRaiseToTopOnPress(true);
+        assertTrue(handler.getRaiseToTopOnPress());
     }

 }
=======================================
--- /piccolo2d.java/branches/3.0-spike/examples/src/main/java/org/piccolo2d/examples/GridExample.java Tue Mar 15 22:23:53 2011 UTC +++ /piccolo2d.java/branches/3.0-spike/examples/src/main/java/org/piccolo2d/examples/GridExample.java Tue Nov 26 22:54:38 2013 UTC
@@ -155,7 +155,7 @@
             protected void startDrag(final PInputEvent event) {
                 super.startDrag(event);
                 draggedNode = event.getPickedNode();
-                draggedNode.moveToFront();
+                draggedNode.raiseToTop();
                 nodeStartPosition = draggedNode.getOffset();
             }

=======================================
--- /piccolo2d.java/branches/3.0-spike/examples/src/main/java/org/piccolo2d/tutorial/PiccoloPresentation.java Tue Mar 15 22:23:53 2011 UTC +++ /piccolo2d.java/branches/3.0-spike/examples/src/main/java/org/piccolo2d/tutorial/PiccoloPresentation.java Tue Nov 26 22:54:38 2013 UTC
@@ -74,7 +74,7 @@
                 final PNode picked = event.getPickedNode();

                 if (picked.getParent() == slideBar) {
-                    picked.moveToFront();
+                    picked.raiseToTop();
                     if (picked.getScale() == 1) {
                         goToSlide(null);
                     }
@@ -100,7 +100,7 @@
         currentSlide = slide;

         if (currentSlide != null) {
-            currentSlide.moveToFront();
+            currentSlide.raiseToTop();
currentSlide.animateToTransform((AffineTransform) currentSlide.getAttribute("large"), 1000);
         }
     }

--
--
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
--- You received this message because you are subscribed to the Google Groups "Piccolo2D Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to piccolo2d-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to