limit scrollback

This commit is contained in:
Zlatin Balevsky
2019-11-12 16:30:55 +00:00
parent 7d25bb9364
commit be82136e32
6 changed files with 30 additions and 0 deletions

View File

@@ -56,6 +56,7 @@ class ChatRoomController {
view.roomTextArea.append(toShow)
view.roomTextArea.append('\n')
trimLines()
}
if (command.action == ChatAction.JOIN) {
@@ -131,6 +132,7 @@ class ChatRoomController {
String toDisplay = DataHelper.formatTime(e.timestamp) + " <"+e.sender.getHumanReadableName()+"> " + text + "\n"
runInsideUIAsync {
view.roomTextArea.append(toDisplay)
trimLines()
}
}
@@ -139,6 +141,7 @@ class ChatRoomController {
runInsideUIAsync {
model.members.add(p)
view.roomTextArea.append(toDisplay)
trimLines()
view.membersTable?.model?.fireTableDataChanged()
}
}
@@ -158,6 +161,7 @@ class ChatRoomController {
runInsideUIAsync {
model.members.remove(p)
view.roomTextArea.append(toDisplay)
trimLines()
view.membersTable?.model?.fireTableDataChanged()
}
}
@@ -167,8 +171,19 @@ class ChatRoomController {
runInsideUIAsync {
if (model.members.remove(p)) {
view.roomTextArea.append(toDisplay)
trimLines()
view.membersTable?.model?.fireTableDataChanged()
}
}
}
private void trimLines() {
if (model.settings.maxChatLines < 0)
return
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)
}
}
}

View File

@@ -151,6 +151,10 @@ class OptionsController {
boolean advertiseChat = view.advertiseChatCheckbox.model.isSelected()
model.advertiseChat = advertiseChat
settings.advertiseChat = advertiseChat
int maxChatLines = Integer.parseInt(view.maxChatLinesField.text)
model.maxChatLines = maxChatLines
uiSettings.maxChatLines = maxChatLines
core.saveMuSettings()

View File

@@ -19,7 +19,10 @@ class ChatRoomModel {
def members = []
UISettings settings
void mvcGroupInit(Map<String,String> args) {
members.add(core.me)
settings = application.context.get("ui-settings")
}
}

View File

@@ -60,6 +60,7 @@ class OptionsModel {
@Observable boolean startChatServer
@Observable int maxChatConnections
@Observable boolean advertiseChat
@Observable int maxChatLines
void mvcGroupInit(Map<String, String> args) {
MuWireSettings settings = application.context.get("muwire-settings")
@@ -112,5 +113,6 @@ class OptionsModel {
startChatServer = settings.startChatServer
maxChatConnections = settings.maxChatConnections
advertiseChat = settings.advertiseChat
maxChatLines = uiSettings.maxChatLines
}
}

View File

@@ -75,6 +75,7 @@ class OptionsView {
def startChatServerCheckbox
def maxChatConnectionsField
def advertiseChatCheckbox
def maxChatLinesField
def buttonsPanel
@@ -284,6 +285,8 @@ class OptionsView {
maxChatConnectionsField = textField(text : bind {model.maxChatConnections}, constraints : gbc(gridx: 1, gridy : 1, anchor:GridBagConstraints.LINE_END))
label(text : "Advertise chat ability in search results", constraints : gbc(gridx: 0, gridy:2, anchor:GridBagConstraints.LINE_START, weightx:100))
advertiseChatCheckbox = checkBox(selected : bind{model.advertiseChat}, constraints : gbc(gridx:1, gridy:2, anchor:GridBagConstraints.LINE_END))
label(text : "Maximum lines of scrollback (-1 means unlimited)", constraints : gbc(gridx:0, gridy:3, anchor : GridBagConstraints.LINE_START, weightx: 100))
maxChatLinesField = textField(text : bind{model.maxChatLines}, constraints : gbc(gridx:1, gridy: 3, anchor: GridBagConstraints.LINE_END))
}
panel(constraints : gbc(gridx: 0, gridy : 1, weighty: 100))
}