From b7b88f44154655cf93a8f6cdacdb9d57e5079cda Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Mon, 20 Oct 2014 18:18:23 +0200 Subject: [PATCH] Improve performance by limiting the amount of lines in the Optimization Log --- src/eva2/gui/JTextEditorInternalFrame.java | 13 ------- src/eva2/gui/JTextoutputFrame.java | 40 ++++++++++++++++----- src/eva2/gui/JTextoutputFrameInterface.java | 9 +---- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/src/eva2/gui/JTextEditorInternalFrame.java b/src/eva2/gui/JTextEditorInternalFrame.java index 6f1e21d8..0cd20aa0 100644 --- a/src/eva2/gui/JTextEditorInternalFrame.java +++ b/src/eva2/gui/JTextEditorInternalFrame.java @@ -1,17 +1,4 @@ package eva2.gui; -/* - * Title: EvA2 - * Description: - * Copyright: Copyright (c) 2003 - * Company: University of Tuebingen, Computer Architecture - * @author Holger Ulmer, Felix Streichert, Hannes Planatscher - * @version: $Revision: 10 $ - * $Date: 2006-01-18 11:02:22 +0100 (Wed, 18 Jan 2006) $ - * $Author: streiche $ - */ -/*==========================================================================* - * IMPORTS - *==========================================================================*/ import javax.swing.*; import javax.swing.event.DocumentEvent; diff --git a/src/eva2/gui/JTextoutputFrame.java b/src/eva2/gui/JTextoutputFrame.java index 77def64e..a4a39117 100644 --- a/src/eva2/gui/JTextoutputFrame.java +++ b/src/eva2/gui/JTextoutputFrame.java @@ -1,15 +1,14 @@ package eva2.gui; -/* - * Title: EvA2 Description: Copyright: Copyright (c) 2003 Company: University of Tuebingen, Computer - * Architecture @author Holger Ulmer, Felix Streichert, Hannes Planatscher @version: $Revision: 255 - * $ $Date: 2007-11-15 14:58:12 +0100 (Thu, 15 Nov 2007) $ $Author: mkron $ - */ import eva2.optimization.tools.FileTools; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import javax.swing.text.AbstractDocument; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.DocumentFilter; import java.awt.*; import java.awt.event.*; import java.io.Serializable; @@ -80,6 +79,8 @@ public class JTextoutputFrame implements JTextoutputFrameInterface, ActionListen textArea.setEditable(false); textArea.setCaretPosition(0); textArea.setFont(new Font("Courier New", Font.PLAIN, 12)); + ((AbstractDocument)textArea.getDocument()).setDocumentFilter(new LineBufferDocumentFilter(textArea, 2500)); + frame.getContentPane().setLayout(new BorderLayout()); final JScrollPane scrollpane = new JScrollPane(textArea); @@ -92,10 +93,10 @@ public class JTextoutputFrame implements JTextoutputFrameInterface, ActionListen @Override public void stateChanged(ChangeEvent e) { JViewport viewport = (JViewport) e.getSource(); - int Height = viewport.getViewSize().height; - if (Height != lastHeight) { - lastHeight = Height; - int x = Height - viewport.getExtentSize().height; + int height = viewport.getViewSize().height; + if (height != lastHeight) { + lastHeight = height; + int x = height - viewport.getExtentSize().height; viewport.setViewPosition(new Point(0, x)); } } @@ -163,4 +164,25 @@ class PopupListener extends MouseAdapter { e.getX(), e.getY()); } } +} + +class LineBufferDocumentFilter extends DocumentFilter { + private JTextArea area; + private int max; + + public LineBufferDocumentFilter(JTextArea area, int max) { + this.area = area; + this.max = max; + } + + @Override + public void insertString(FilterBypass fb, int offset, String text, AttributeSet attr) throws BadLocationException { + super.insertString(fb, offset, text, attr); + int lines = area.getLineCount(); + if (lines > max) { + int linesToRemove = lines - max -1; + int lengthToRemove = area.getLineStartOffset(linesToRemove); + remove(fb, 0, lengthToRemove); + } + } } \ No newline at end of file diff --git a/src/eva2/gui/JTextoutputFrameInterface.java b/src/eva2/gui/JTextoutputFrameInterface.java index 0d0f008a..1142baf4 100644 --- a/src/eva2/gui/JTextoutputFrameInterface.java +++ b/src/eva2/gui/JTextoutputFrameInterface.java @@ -3,14 +3,7 @@ package eva2.gui; import eva2.optimization.stat.InterfaceTextListener; /* - * Title: EvA2 - * Description: - * Copyright: Copyright (c) 2003 - * Company: University of Tuebingen, Computer Architecture - * @author Holger Ulmer, Felix Streichert, Hannes Planatscher - * @version: $Revision: 10 $ - * $Date: 2006-01-18 11:02:22 +0100 (Wed, 18 Jan 2006) $ - * $Author: streiche $ + * */ public interface JTextoutputFrameInterface extends InterfaceTextListener {