com.partnersoft.gui
Class LogDisplay

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by com.partnersoft.gui.LogDisplay
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.swing.Scrollable

public class LogDisplay
extends javax.swing.JComponent
implements javax.swing.Scrollable

A (hopefully) faster, hand-coded GUI display for scrolling log display.

Different log levels are distinctively colored, but not all the information (e.g. timestamp) is shown. Repaints are controlled by a thread and will only happen every second or so to prevent the gui being locked up by a flood of logs. Only 1000 rows of text are retained.

Copyright 2002-2008 Partner Software, Inc.

Version:
$Id$
Author:
Paul Reavis
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
LogDisplay()
           
 
Method Summary
 void addLogger(org.apache.log4j.Logger logger)
          Adds the given Logger to the display.
 void addRootLogger()
          Adds the root logger (all loggers in the hierarchy) to the display.
 void clear()
          Clears the display.
static LogDisplayWindow createLogDisplayWindow()
          Creates a LogDisplay in its own MainWindow, set to view the general (root) log.
 org.apache.log4j.Appender getAppender()
          Returns the appender for this viewer.
 java.awt.Color getDebugColor()
           
 java.awt.Color getErrorColor()
           
 java.awt.Color getInfoColor()
           
 java.awt.Dimension getPreferredScrollableViewportSize()
           
 java.awt.Dimension getPreferredSize()
           
 LeakyList getRows()
          Returns the LeakyList rows.
 int getScrollableBlockIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
           
 boolean getScrollableTracksViewportHeight()
           
 boolean getScrollableTracksViewportWidth()
           
 int getScrollableUnitIncrement(java.awt.Rectangle visibleRect, int orientation, int direction)
           
 java.lang.String getText()
          Returns the text currently contained in the rows LeakyList
 java.awt.Color getWarnColor()
           
 void loadFromLog()
          This will load the last LOG_BUFFER bytes and then pull throw away first partial line.
 void paintComponent(java.awt.Graphics g)
           
static void runAppWithLogDisplay(java.lang.String appName, java.lang.String completionMessage)
          Runs the named app with an accompanying log display.
static void runAppWithLogDisplay(java.lang.String appName, java.lang.String windowTitle, java.lang.String completionMessage)
          Runs the named app with an accompanying log display.
static void runAppWithLogDisplayButNoDialog(java.lang.String appName, java.lang.String windowTitle)
          Runs the named app with an accompanying log display but no completion dialog.
 void scrollToTail()
          Sets the vertical scroll bar to max (the newest entries in the log.).
 void setDebugColor(java.awt.Color debugColor)
           
 void setErrorColor(java.awt.Color errorColor)
           
 void setInfoColor(java.awt.Color infoColor)
           
 void setWarnColor(java.awt.Color warnColor)
           
 void useOldSchoolColors()
          Switches to the old-school color theme - green on black.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LogDisplay

public LogDisplay()
Method Detail

createLogDisplayWindow

public static LogDisplayWindow createLogDisplayWindow()
Creates a LogDisplay in its own MainWindow, set to view the general (root) log.


runAppWithLogDisplay

public static void runAppWithLogDisplay(java.lang.String appName,
                                        java.lang.String completionMessage)
Runs the named app with an accompanying log display.


runAppWithLogDisplay

public static void runAppWithLogDisplay(java.lang.String appName,
                                        java.lang.String windowTitle,
                                        java.lang.String completionMessage)
Runs the named app with an accompanying log display.


runAppWithLogDisplayButNoDialog

public static void runAppWithLogDisplayButNoDialog(java.lang.String appName,
                                                   java.lang.String windowTitle)
Runs the named app with an accompanying log display but no completion dialog.


clear

public void clear()
Clears the display.


loadFromLog

public void loadFromLog()
This will load the last LOG_BUFFER bytes and then pull throw away first partial line. The bottom of the log will appear gray.


scrollToTail

public void scrollToTail()
Sets the vertical scroll bar to max (the newest entries in the log.).


addLogger

public void addLogger(org.apache.log4j.Logger logger)
Adds the given Logger to the display.

Parameters:
logger -

addRootLogger

public void addRootLogger()
Adds the root logger (all loggers in the hierarchy) to the display.


useOldSchoolColors

public void useOldSchoolColors()
Switches to the old-school color theme - green on black.


getPreferredSize

public java.awt.Dimension getPreferredSize()
Overrides:
getPreferredSize in class javax.swing.JComponent

paintComponent

public void paintComponent(java.awt.Graphics g)
Overrides:
paintComponent in class javax.swing.JComponent

getPreferredScrollableViewportSize

public java.awt.Dimension getPreferredScrollableViewportSize()
Specified by:
getPreferredScrollableViewportSize in interface javax.swing.Scrollable

getScrollableBlockIncrement

public int getScrollableBlockIncrement(java.awt.Rectangle visibleRect,
                                       int orientation,
                                       int direction)
Specified by:
getScrollableBlockIncrement in interface javax.swing.Scrollable

getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()
Specified by:
getScrollableTracksViewportHeight in interface javax.swing.Scrollable

getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()
Specified by:
getScrollableTracksViewportWidth in interface javax.swing.Scrollable

getScrollableUnitIncrement

public int getScrollableUnitIncrement(java.awt.Rectangle visibleRect,
                                      int orientation,
                                      int direction)
Specified by:
getScrollableUnitIncrement in interface javax.swing.Scrollable

getAppender

public org.apache.log4j.Appender getAppender()
Returns the appender for this viewer. You can add this appender to any Logger objects to include them in the view.


getRows

public LeakyList getRows()
Returns the LeakyList rows.

Returns:

getText

public java.lang.String getText()
Returns the text currently contained in the rows LeakyList

Returns:

getDebugColor

public java.awt.Color getDebugColor()

setDebugColor

public void setDebugColor(java.awt.Color debugColor)

getInfoColor

public java.awt.Color getInfoColor()

setInfoColor

public void setInfoColor(java.awt.Color infoColor)

getWarnColor

public java.awt.Color getWarnColor()

setWarnColor

public void setWarnColor(java.awt.Color warnColor)

getErrorColor

public java.awt.Color getErrorColor()

setErrorColor

public void setErrorColor(java.awt.Color errorColor)