You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2007/08/10 13:50:24 UTC
svn commit: r564566 - in /harmony/enhanced/classlib/trunk/modules/swing/src:
main/java/common/javax/swing/text/html/
main/java/common/javax/swing/text/html/parser/
test/api/java.injected/javax/swing/text/html/
Author: apetrenko
Date: Fri Aug 10 04:50:23 2007
New Revision: 564566
URL: http://svn.apache.org/viewvc?view=rev&rev=564566
Log:
Patch for HARMONY-4582 "[classlib][swing] JEditorPane does not support <pre> tag in text/html mode"
Modified:
harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java
harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/Lexer.java
harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java?view=diff&rev=564566&r1=564565&r2=564566
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/HTMLDocument.java Fri Aug 10 04:50:23 2007
@@ -690,8 +690,22 @@
}
}
- protected void preContent(final char[] data) {
- addContent(data, 0, data.length);
+ protected void preContent(char[] data) {
+ int offset = 0;
+
+ for (int i = 0; i < data.length; i++) {
+ if ((data[i] == '\n') || (data[i] == '\r')) {
+ addContent(data, offset, i - offset);
+ blockClose(HTML.Tag.IMPLIED);
+
+ blockOpen(HTML.Tag.IMPLIED, new SimpleAttributeSet());
+ offset = i + 1;
+ }
+ }
+
+ if (offset < data.length) {
+ addContent(data, offset, data.length - offset);
+ }
}
protected void addContent(final char[] data, final int offset,
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/Lexer.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/Lexer.java?view=diff&rev=564566&r1=564565&r2=564566
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/Lexer.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/main/java/common/javax/swing/text/html/parser/Lexer.java Fri Aug 10 04:50:23 2007
@@ -544,17 +544,8 @@
buffer.append(yytext());
break;
case LINE_TERMINATOR:
- if (terminatorSkipped) {
- buffer.append(yytext());
- }
- /*
- * Collapses if there is only one last line terminator.
- * If there are more then doesn't do it (same as RI)
- * FIXME
- */
- skipLastLineTerminator = !lastWasLineTerminator;
- lastWasLineTerminator = true;
- terminatorSkipped = true;
+ buffer.append(yytext());
+ terminatorSkipped = false;
break;
case TEXT:
buffer.append(yytext());
Modified: harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java?view=diff&rev=564566&r1=564565&r2=564566
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/swing/src/test/api/java.injected/javax/swing/text/html/HTMLDocument_Reader_ActionsTest.java Fri Aug 10 04:50:23 2007
@@ -20,10 +20,12 @@
*/
package javax.swing.text.html;
+import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
import javax.swing.text.AttributeSet;
+import javax.swing.text.Element;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.Style;
@@ -543,9 +545,8 @@
assertEquals(2, reader.parseBuffer.size());
reader.handleText(text.toCharArray(), 0);
- assertEquals(3, reader.parseBuffer.size());
- ElementSpec spec = (ElementSpec)reader.parseBuffer.get(2);
- assertEquals(text.length(), spec.getLength());
+ assertEquals(7, reader.parseBuffer.size());
+ ElementSpec spec = (ElementSpec)reader.parseBuffer.get(6);
assertEquals(text.length(), spec.getArray().length);
}
@@ -559,10 +560,26 @@
assertEquals(2, reader.parseBuffer.size());
reader.preContent(text.toCharArray());
- assertEquals(3, reader.parseBuffer.size());
- ElementSpec spec = (ElementSpec)reader.parseBuffer.get(2);
- assertEquals(text.length(), spec.getLength());
+ assertEquals(7, reader.parseBuffer.size());
+ ElementSpec spec = (ElementSpec)reader.parseBuffer.get(6);
assertEquals(text.length(), spec.getArray().length);
+ }
+
+ public void testHarmony_4582() throws Exception {
+ final Element pre;
+ final HTMLDocument doc = new HTMLDocument();
+
+ new HTMLEditorKit().read(new StringReader("<html><body><pre>line1\n" //$NON-NLS-1$
+ + "line2</pre></body></html>"), doc, 0); //$NON-NLS-1$
+
+ assertEquals("line1", doc.getText(1, 5)); //$NON-NLS-1$
+ assertEquals("line2", doc.getText(7, 5)); //$NON-NLS-1$
+
+ pre = doc.getRootElements()[0].getElement(1).getElement(0);
+ assertEquals(1, pre.getElement(0).getStartOffset());
+ assertEquals(7, pre.getElement(0).getEndOffset());
+ assertEquals(7, pre.getElement(1).getStartOffset());
+ assertEquals(13, pre.getElement(1).getEndOffset());
}
public void testTag_ContentWhitespaces() {