You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by nd...@apache.org on 2006/11/30 05:15:57 UTC

svn commit: r480828 - in /harmony/enhanced/classlib/trunk/modules/swing/src: main/java/common/javax/swing/text/CompositeView.java test/api/java/common/javax/swing/text/CompositeViewTest.java

Author: ndbeyer
Date: Wed Nov 29 20:15:56 2006
New Revision: 480828

URL: http://svn.apache.org/viewvc?view=rev&rev=480828
Log:
Apply patch for HARMONY-2189: [classlib][swing] j.s.text.CompositeView.getInsideAllocation doesn't call inset getters

Modified:
    harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/CompositeView.java
    harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/CompositeViewTest.java

Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/CompositeView.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/CompositeView.java?view=diff&rev=480828&r1=480827&r2=480828
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/CompositeView.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/CompositeView.java Wed Nov 29 20:15:56 2006
@@ -20,20 +20,21 @@
  */
 package javax.swing.text;
 
-import java.awt.Insets;
 import java.awt.Rectangle;
 import java.awt.Shape;
 
 import javax.swing.text.Position.Bias;
 
 import org.apache.harmony.awt.text.TextUtils;
-import org.apache.harmony.x.swing.Utilities;
 
 
 public abstract class CompositeView extends View {
     private View[] children;
-    private final Insets insets = new Insets(0, 0, 0, 0);
     private final Rectangle rect = new Rectangle();
+    private short topInset;
+    private short leftInset;
+    private short bottomInset;
+    private short rightInset;
 
     public CompositeView(final Element element) {
         super(element);
@@ -45,6 +46,7 @@
     protected abstract boolean isBefore(int x, int y, Rectangle rc);
     protected abstract View getViewAtPoint(int x, int y, Rectangle alloc);
 
+    @Override
     public Shape getChildAllocation(final int index, final Shape shape) {
         Rectangle rc = getInsideAllocation(shape);
         childAllocation(index, rc);
@@ -52,10 +54,12 @@
         return rc;
     }
 
+    @Override
     public View getView(final int index) {
         return children[index];
     }
 
+    @Override
     public int getViewIndex(final int pos, final Bias bias) {
         int offset = bias == Bias.Backward ? pos - 1 : pos;
         if (offset < getStartOffset() || offset >= getEndOffset()) {
@@ -65,10 +69,12 @@
         return getViewIndexAtPosition(offset);
     }
 
+    @Override
     public int getViewCount() {
         return children.length;
     }
 
+    @Override
     public void replace(final int index, final int length, final View[] views) {
         int toAdd = views != null ? views.length : 0;
 
@@ -100,6 +106,7 @@
         }
     }
 
+    @Override
     public void setParent(final View parentView) {
         super.setParent(parentView);
 
@@ -108,6 +115,7 @@
         }
     }
 
+    @Override
     public Shape modelToView(final int pos, final Shape shape, final Bias bias)
             throws BadLocationException {
         int index = getViewIndexAtPosition(bias == Bias.Backward ? pos - 1
@@ -121,6 +129,7 @@
                                        + " not found", pos);
     }
 
+    @Override
     public Shape modelToView(final int p1, final Bias b1,
                              final int p2, final Bias b2, final Shape shape)
         throws BadLocationException {
@@ -170,6 +179,7 @@
         return rc1.union(rc2);
     }
 
+    @Override
     public int viewToModel(final float x,
                            final float y,
                            final Shape shape,
@@ -194,6 +204,7 @@
         }
     }
 
+    @Override
     public int getNextVisualPositionFrom(final int pos,
                                          final Bias bias,
                                          final Shape shape,
@@ -259,29 +270,29 @@
     }
 
     protected short getTopInset() {
-        return (short)insets.top;
+        return topInset;
     }
 
     protected short getLeftInset() {
-        return (short)insets.left;
+        return leftInset;
     }
 
     protected short getBottomInset() {
-        return (short)insets.bottom;
+        return bottomInset;
     }
 
     protected short getRightInset() {
-        return (short)insets.right;
+        return rightInset;
     }
 
     protected void setInsets(final short top,
                              final short left,
                              final short bottom,
                              final short right) {
-        insets.top    = top;
-        insets.left   = left;
-        insets.bottom = bottom;
-        insets.right  = right;
+        topInset    = top;
+        leftInset   = left;
+        bottomInset = bottom;
+        rightInset  = right;
     }
 
     protected void setParagraphInsets(final AttributeSet attrs) {
@@ -297,7 +308,11 @@
         }
 
         rect.setBounds(shape.getBounds());
-        return Utilities.subtractInsets(rect, insets);
+        rect.x += getLeftInset();
+        rect.y += getTopInset();
+        rect.width  -= (getLeftInset() + getRightInset());
+        rect.height -= (getTopInset() + getBottomInset());
+        return rect;
     }
 
     protected int getNextEastWestVisualPositionFrom(final int pos,

Modified: harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/CompositeViewTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/CompositeViewTest.java?view=diff&rev=480828&r1=480827&r2=480828
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/CompositeViewTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java/common/javax/swing/text/CompositeViewTest.java Wed Nov 29 20:15:56 2006
@@ -291,6 +291,58 @@
         assertNull(view.getInsideAllocation(null));
     }
 
+    // Regression test for HARMONY-2189
+    public void testGetInsideAllocationOverridden() {
+        final Marker top = new Marker();
+        final Marker left = new Marker();
+        final Marker bottom = new Marker();
+        final Marker right = new Marker();
+
+        view = new CompositeViewImpl(root = doc.getDefaultRootElement()) {
+            @Override
+            protected short getTopInset() {
+                top.setOccurred();
+                return 12;
+            }
+
+            @Override
+            protected short getLeftInset() {
+                left.setOccurred();
+                return 11;
+            }
+
+            @Override
+            protected short getBottomInset() {
+                bottom.setOccurred();
+                return 3;
+            }
+
+            @Override
+            protected short getRightInset() {
+                right.setOccurred();
+                return 9;
+            }
+        };
+        view.loadChildren(factory);
+
+        view.setParagraphInsets(getAttributeSet());
+        assertFalse(top.isOccurred());
+        assertFalse(left.isOccurred());
+        assertFalse(bottom.isOccurred());
+        assertFalse(right.isOccurred());
+
+        Rectangle rc = view.getInsideAllocation(new Rectangle(20, 30, 50, 40));
+        assertTrue(top.isOccurred());
+        assertTrue(left.isOccurred());
+        assertTrue(bottom.isOccurred());
+        assertTrue(right.isOccurred());
+
+        assertEquals(20 + 11, rc.x);
+        assertEquals(30 + 12, rc.y);
+        assertEquals(50 - 11 - 9, rc.width);
+        assertEquals(40 - 12 - 3, rc.height);
+    }
+
     /*
      * See tests for individual methods namely EastWest and NorthSouth in
      * class CompositeView_NextNSVisPosTest