From ac8d9c128177b6decfda71d4b56816d42d95463a Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Wed, 16 Sep 2020 17:41:01 +0100 Subject: [PATCH] update room scrollback limit to new api, update TODO --- TODO.md | 1 - .../com/muwire/gui/ChatRoomController.groovy | 8 ++------ .../views/com/muwire/gui/ChatRoomView.groovy | 12 ++++++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/TODO.md b/TODO.md index e4590ff2..643ed97a 100644 --- a/TODO.md +++ b/TODO.md @@ -25,7 +25,6 @@ This helps with scalability ### Chat * echo "unknown/innappropriate command" in the console * break up lines on CR/LF, send multiple messages -* Style timestamps and persona names * enforce # in room names or ignore it * auto-create/join channel on server start * jump from notification window to room with message diff --git a/gui/griffon-app/controllers/com/muwire/gui/ChatRoomController.groovy b/gui/griffon-app/controllers/com/muwire/gui/ChatRoomController.groovy index 3722857e..1bf4f932 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/ChatRoomController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/ChatRoomController.groovy @@ -246,12 +246,8 @@ class ChatRoomController { private void trimLines() { if (model.settings.maxChatLines < 0) return - // TODO: update to JTextPane api -// while(view.roomTextArea.getLineCount() > model.settings.maxChatLines) { -// int line0Start = view.roomTextArea.getLineStartOffset(0) -// int line0End = view.roomTextArea.getLineEndOffset(0) -// view.roomTextArea.replaceRange(null, line0Start, line0End) -// } + while(view.getLineCount() > model.settings.maxChatLines) + view.removeFirstLine() } void rejoinRoom() { diff --git a/gui/griffon-app/views/com/muwire/gui/ChatRoomView.groovy b/gui/griffon-app/views/com/muwire/gui/ChatRoomView.groovy index b7bf3bd8..ca61aca2 100644 --- a/gui/griffon-app/views/com/muwire/gui/ChatRoomView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/ChatRoomView.groovy @@ -11,6 +11,7 @@ import javax.swing.JSplitPane import javax.swing.JTextPane import javax.swing.ListSelectionModel import javax.swing.SwingConstants +import javax.swing.text.Element import javax.swing.text.Style import javax.swing.text.StyleConstants import javax.swing.text.StyleContext @@ -208,4 +209,15 @@ class ChatRoomView { doc.insertString(doc.getEndPosition().getOffset() - 1, text, doc.getStyle("regular")) doc.insertString(doc.getEndPosition().getOffset() - 1, "\n", doc.getStyle("regular")) } + + int getLineCount() { + StyledDocument doc = roomTextArea.getStyledDocument() + doc.getDefaultRootElement().getElementCount() - 1 + } + + void removeFirstLine() { + StyledDocument doc = roomTextArea.getStyledDocument() + Element element = doc.getParagraphElement(0) + doc.remove(0, element.getEndOffset()) + } } \ No newline at end of file