Author: seanfinan
Date: Tue Oct 18 20:07:38 2022
New Revision: 1904686
URL: http://svn.apache.org/viewvc?rev=1904686&view=rev
Log:
Added openWebPage to SystemUtil
Added colors to logger panel based upon line content. May be a mistake in the
long run ...
Added:
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerTextFilter.java
Modified:
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerPanel.java
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
Modified:
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java
URL:
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java?rev=1904686&r1=1904685&r2=1904686&view=diff
==============================================================================
---
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java
(original)
+++
ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/util/external/SystemUtil.java
Tue Oct 18 20:07:38 2022
@@ -261,6 +261,24 @@ final public class SystemUtil {
}
+ static public void openWebPage( final String page ) {
+ LOGGER.info( "Opening Web Page " + page + " ..." );
+ String command = "start \"Browser\" /max " + page;
+ final String os = System.getProperty( "os.name" );
+ if ( !os.toLowerCase()
+ .contains( "windows" ) ) {
+ command = "open " + page
+ + " || xdg-open " + page
+ + " || sensible-browser " + page;
+ }
+ try {
+ SystemUtil.run( command );
+ } catch ( IOException e ) {
+ LOGGER.error( e.getMessage() );
+ }
+
+ }
+
static public boolean run( final String command ) throws IOException {
final CommandRunner runner = new CommandRunner( command );
return run( runner );
Modified:
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerPanel.java
URL:
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerPanel.java?rev=1904686&r1=1904685&r2=1904686&view=diff
==============================================================================
---
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerPanel.java
(original)
+++
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerPanel.java
Tue Oct 18 20:07:38 2022
@@ -8,8 +8,7 @@ import org.apache.log4j.spi.LoggingEvent
import javax.swing.*;
import javax.swing.text.BadLocationException;
-import javax.swing.text.Document;
-import javax.swing.text.PlainDocument;
+import javax.swing.text.DefaultStyledDocument;
import java.awt.*;
import java.util.Arrays;
import java.util.Collection;
@@ -34,18 +33,19 @@ final public class LoggerPanel extends J
private final Appender _appender;
- private final Document _textAreaDoc = new PlainDocument();
+ private final DefaultStyledDocument _textAreaDoc = new
DefaultStyledDocument();
/**
* text gui that will display log4j messages
*/
private LoggerPanel( final Level... levels ) {
- final JTextArea textArea = new JTextArea( _textAreaDoc );
- textArea.setEditable( false );
- textArea.setEnabled( false );
- textArea.setDisabledTextColor( Color.DARK_GRAY );
- super.setViewportView( textArea );
+ new LoggerTextFilter( _textAreaDoc );
+ final JTextPane textPane = new JTextPane( _textAreaDoc );
+ textPane.setFont( new Font( Font.MONOSPACED, Font.PLAIN, 14 ) );
+ textPane.setEditable( false );
+ super.setViewportView( textPane );
_appender = new LogHandler( levels );
+
}
/**
@@ -115,10 +115,25 @@ final public class LoggerPanel extends J
if ( event == null ) {
return;
}
- if ( _levels.contains( event.getLevel() ) ) {
+ final Level level = event.getLevel();
+ if ( _levels.contains( level ) ) {
final Object message = event.getMessage();
if ( message != null ) {
- appendText( message.toString() + "\n" );
+ String text = message.toString();
+ if ( level.equals( Level.FATAL ) || level.equals( Level.ERROR )
) {
+ if ( !text.toLowerCase()
+ .contains( "error" ) ) {
+ text = "Error: " + text;
+ }
+ } else if ( level.equals( Level.WARN ) ) {
+ if ( !text.toLowerCase()
+ .contains( "warn" ) ) {
+ text = "Warning: " + text;
+ }
+ } else if ( level.equals( Level.DEBUG ) ) {
+ text = "// " + text;
+ }
+ appendText( text + "\n" );
}
}
}
Added:
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerTextFilter.java
URL:
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerTextFilter.java?rev=1904686&view=auto
==============================================================================
---
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerTextFilter.java
(added)
+++
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/component/LoggerTextFilter.java
Tue Oct 18 20:07:38 2022
@@ -0,0 +1,141 @@
+package org.apache.ctakes.gui.component;
+
+import javax.swing.*;
+import javax.swing.text.*;
+import java.awt.*;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author SPF , chip-nlp
+ * @since {10/18/2022}
+ */
+public class LoggerTextFilter extends DocumentFilter {
+
+ final private TextFormatter _textFormatter;
+
+
+ public LoggerTextFilter( final DefaultStyledDocument document ) {
+ _textFormatter = new TextFormatter( document );
+ document.setDocumentFilter( this );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void remove( final FilterBypass fb, final int begin, final int
length ) throws BadLocationException {
+ super.remove( fb, begin, length );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void insertString( final FilterBypass fb, final int begin, final
String text, final AttributeSet attr )
+ throws BadLocationException {
+ super.insertString( fb, begin, text, attr );
+ if ( shouldReformat( fb.getDocument(), begin, text.length() ) ) {
+ formatText( fb.getDocument() );
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void replace( final FilterBypass fb, final int begin, final int
length, final String text,
+ final AttributeSet attrs )
+ throws BadLocationException {
+ super.replace( fb, begin, length, text, attrs );
+ if ( shouldReformat( fb.getDocument(), begin, length ) ) {
+ formatText( fb.getDocument() );
+ }
+ }
+
+ static private boolean shouldReformat( final Document document, final int
begin, final int length )
+ throws BadLocationException {
+ final int testLength = Math.min( length + 2, document.getLength() -
begin );
+ final String deltaText = document.getText( begin, testLength );
+ return deltaText.contains( " " ) || deltaText.contains( "\n" ) ||
deltaText.contains( "\t" );
+ }
+
+ private void formatText( final Document document ) {
+ if ( document instanceof StyledDocument ) {
+ SwingUtilities.invokeLater( _textFormatter );
+ }
+ }
+
+ static private class TextFormatter implements Runnable {
+
+ final StyledDocument _document;
+ final Map<String, Style> _styles = new HashMap<>();
+
+ private TextFormatter( final StyledDocument document ) {
+ _document = document;
+ createStyles();
+ }
+
+ @Override
+ public void run() {
+ try {
+ final String text = _document.getText( 0, _document.getLength() );
+ int lineBegin = 0;
+ boolean lineEnded = false;
+ for ( int i = 0; i < _document.getLength(); i++ ) {
+ lineEnded = false;
+ if ( text.charAt( i ) == '\n' ) {
+ formatLine( lineBegin, i );
+ lineBegin = i + 1;
+ lineEnded = true;
+ }
+ }
+ if ( !lineEnded ) {
+ formatLine( lineBegin, _document.getLength() );
+ }
+ } catch ( BadLocationException blE ) {
+// LOGGER.error( blE.getMessage() );
+ }
+ }
+
+ private void createStyles() {
+ StyleConstants.setItalic( createStyle( "COMMENT", Color.GRAY ), true
);
+ StyleConstants.setBold( createStyle( "ELLIPSES", Color.BLUE ), true );
+ createStyle( "ERROR", Color.RED.darker() );
+ createStyle( "WARNING", Color.ORANGE.darker() );
+ createStyle( "PLAIN", Color.BLACK );
+ }
+
+ private Style createStyle( final String name, final Color color ) {
+ final Style style = _document.addStyle( name, null );
+ StyleConstants.setForeground( style, color );
+ _styles.put( name, style );
+ return style;
+ }
+
+ void formatLine( final int begin, final int end ) throws
BadLocationException {
+ final int length = end - begin;
+ if ( length <= 0 ) {
+ return;
+ }
+ final String text = _document.getText( begin, length );
+ System.out.println( "formatting " + text );
+ if ( text.startsWith( "#" ) || text.startsWith( "//" ) ) {
+ _document.setCharacterAttributes( begin, length, _styles.get(
"COMMENT" ), true );
+ return;
+ }
+ final String lower = text.toLowerCase();
+ if ( lower.contains( "error" ) ) {
+ _document.setCharacterAttributes( begin, length, _styles.get(
"ERROR" ), true );
+ } else if ( lower.contains( "warn" ) ) {
+ _document.setCharacterAttributes( begin, length, _styles.get(
"WARNING" ), true );
+ } else if ( lower.contains( "..." ) ) {
+ _document.setCharacterAttributes( begin, length, _styles.get(
"ELLIPSES" ), true );
+ } else {
+ _document.setCharacterAttributes( begin, length, _styles.get(
"PLAIN" ), true );
+ }
+ }
+
+ }
+
+}
Modified:
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
URL:
http://svn.apache.org/viewvc/ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java?rev=1904686&r1=1904685&r2=1904686&view=diff
==============================================================================
---
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
(original)
+++
ctakes/trunk/ctakes-gui/src/main/java/org/apache/ctakes/gui/pipeline/PiperRunnerPanel.java
Tue Oct 18 20:07:38 2022
@@ -555,29 +555,13 @@ final public class PiperRunnerPanel exte
}
private final class HelpAction implements ActionListener {
-
@Override
public void actionPerformed( final ActionEvent event ) {
if ( _helpButton == null ) {
return;
}
- LOGGER.info( "Opening Web Page ..." );
- String command = "start \"Browser\" /max https://cwiki.apache"
- +
".org/confluence/display/CTAKES/Piper+File+Submitter+GUI";
- final String os = System.getProperty( "os.name" );
- if ( !os.toLowerCase()
- .contains( "windows" ) ) {
- command = "xdg-open
https://cwiki.apache.org/confluence/display/CTAKES/Piper+File+Submitter+GUI"
- + " || sensible-browser"
- + "
https://cwiki.apache.org/confluence/display/CTAKES/Piper+File+Submitter+GUI";
- }
- try {
- SystemUtil.run( command );
- } catch ( IOException e ) {
- LOGGER.error( e.getMessage() );
- }
+ SystemUtil.openWebPage(
"https://cwiki.apache.org/confluence/display/CTAKES/Piper+File+Submitter+GUI" );
}
-
}