From 5e972183a90de192c1d0b1856bc68ac73e622429 Mon Sep 17 00:00:00 2001 From: hoenicke Date: Tue, 27 Feb 2001 08:26:50 +0000 Subject: [PATCH] * jode/swingui/Main.java.in (AreaWriter): Convert all kinds of line breaks (CR+LF, CR, LF) to a LF character, which a JTextArea understands. git-svn-id: https://svn.code.sf.net/p/jode/code/branches/branch_1_1@1308 379699f6-c40d-0410-875b-85095c16579e --- jode/ChangeLog | 6 ++++++ jode/jode/swingui/Main.java.in | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/jode/ChangeLog b/jode/ChangeLog index 9e801b3..8082d05 100644 --- a/jode/ChangeLog +++ b/jode/ChangeLog @@ -1,3 +1,9 @@ +2001-02-27 Jochen Hoenicke + + * jode/swingui/Main.java.in (AreaWriter): Convert all kinds of + line breaks (CR+LF, CR, LF) to a LF character, which a JTextArea + understands. + 2001-02-08 Jochen Hoenicke * jode/expr/StoreInstruction.java (dumpExpression): Java doesn't diff --git a/jode/jode/swingui/Main.java.in b/jode/jode/swingui/Main.java.in index a69bee0..c93da48 100644 --- a/jode/jode/swingui/Main.java.in +++ b/jode/jode/swingui/Main.java.in @@ -143,6 +143,7 @@ public class Main public class AreaWriter extends Writer { boolean initialized = false; + boolean lastCR = false; private JTextArea area; public AreaWriter(JTextArea a) { @@ -155,7 +156,23 @@ public class Main area.setText(""); initialized = true; } - area.append(new String(b, off, len)); + String str = new String(b, off, len); + StringBuffer sb = new StringBuffer(len); + while (str != null && str.length() > 0) { + if (lastCR && str.charAt(0) == '\n') + str = str.substring(1); + int crIndex = str.indexOf('\r'); + if (crIndex >= 0) { + sb.append(str.substring(0, crIndex)); + sb.append("\n"); + str = str.substring(crIndex+1); + lastCR = true; + } else { + sb.append(str); + str = null; + } + } + area.append(sb.toString()); } public void flush() {