Package org.apache.log4j.chainsaw
Class LogUI
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
org.apache.log4j.chainsaw.LogUI
- All Implemented Interfaces:
ImageObserver,MenuContainer,Serializable,EventListener,Accessible,RootPaneContainer,WindowConstants,ChainsawViewer,SettingsListener
The main entry point for Chainsaw, this class represents the first frame
that is used to display a Welcome panel, and any other panels that are
generated because Logging Events are streamed via a Receiver, or other
mechanism.
NOTE: Some of Chainsaw's application initialization should be performed prior to activating receivers and the logging framework used to perform self-logging.
DELAY as much as possible the logging framework initialization process, currently initialized by the creation of a ChainsawAppenderHandler.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classThis class handles the recption of the Event batches and creates new LogPanels if the identifier is not in use otherwise it ignores the event batch.private classNested classes/interfaces inherited from class javax.swing.JFrame
JFrame.AccessibleJFrameNested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrameNested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow, Window.TypeNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ChainsawAboutprivate Map<String, RuleColorizer> private ApplicationPreferenceModelprivate ApplicationPreferenceModelPanelprivate static Stringprivate intprivate static final doubleprivate int(package private) ChainsawAppenderHandlerprivate final Objectprivate booleanSet to true, if and only if the GUI has completed it's full initialization.private doubleprivate static org.apache.log4j.Loggerprivate static final Stringprivate static final Stringprivate static final Stringprivate static final Stringprivate JSplitPaneprivate booleanprivate PluginRegistryprivate final JFrameprivate ReceiverConfigurationPanelprivate ReceiversPanelprivate static final LoggerRepositoryExImplprivate static final Objectprivate ActionThe shutdownAction is called when the user requests to exit Chainsaw, and by default this exits the VM, but a developer may replace this action with something that better suits their needsprivate EventListenerListClients can register a ShutdownListener to be notified when the user has requested Chainsaw to exit.private final SettingsManagerprivate static ChainsawSplashprivate ChainsawStatusBarprivate ChainsawTabbedPaneprivate final Mapprivate final Mapprivate ChainsawToolBarAndMenusprivate JToolBarprivate final JFrameprivate WelcomePanelFields inherited from class javax.swing.JFrame
accessibleContext, rootPane, rootPaneCheckingEnabledFields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSORFields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE -
Constructor Summary
ConstructorsConstructorDescriptionLogUI()Constructor which builds up all the visual elements of the frame including the Menu bar -
Method Summary
Modifier and TypeMethodDescriptionvoidActivates itself as a viewer by configuring Size, and location of itself, and configures the default Tabbed Pane elements with the correct layout, table columns, and sets itself viewable.voidactivateViewer(ChainsawAppender appender) Allow Chainsaw v2 to be ran in-process (configured as a ChainsawAppender) NOTE: Closing Chainsaw will NOT stop the application generating the events.voidRegisters a ShutdownListener with this calss so that it can be notified when the user has requested that Chainsaw exit.(package private) voidprivate voidbuildLogPanel(boolean customExpression, String ident, List<org.apache.log4j.spi.LoggingEvent> events) static voidcreateChainsawGUI(ApplicationPreferenceModel model, Action newShutdownAction) Creates, activates, and then shows the Chainsaw GUI, optionally showing the splash screen, and using the passed shutdown action when the user requests to exit the application (if null, then Chainsaw will exit the vm)void(package private) voiddisplayPanel(String panelName, boolean display) private voidMakes sure that the LoggerRepository has the ChainsawAppenderHandler added to the root logger so Chainsaw can receive all the events.private voidbooleanexit()Exits the application, ensuring Settings are saved.private voidEnsures all the registered ShutdownListeners are notified.DOCUMENT ME!(package private) LogPanelReturns the currently selected LogPanel, if there is one, otherwise nullDOCUMENT ME!DOCUMENT ME!(package private) MapDOCUMENT ME!(package private) ChainsawStatusBarDOCUMENT ME!DOCUMENT ME!DOCUMENT ME!DOCUMENT ME!private WelcomePanelDOCUMENT ME!private voidHide the log tree pane, holding the current divider location for later useprivate voidinitGUI()Initialises the menu's and toolbars, but does not actually create any of the main panel components.private voidinitPlugins(PluginRegistry pluginRegistry) private voidprivate voidbooleanDOCUMENT ME!(package private) booleanprivate voidLoads the log4j configuration file specified by the url, using the PluginClassLoader instance as a TCCL, but only replacing it temporarily, with the original TCCL being restored in a finally block to ensure consitency.private static voidloadLookAndFeelUsingPluginClassLoader(String lookAndFeelClassName) voidloadSettings(LoadSettingsEvent event) Given the load event, configures the size/location of the main window etc etc.static voidStarts Chainsaw by attaching a new instance to the Log4J main root Logger via a ChainsawAppender, and activates itselfprivate voidUsing the current thread, calls the registed Shutdown action's actionPerformed(...) method.voidRemoves the registered ShutdownListener so that the listener will not be notified on a shutdown.private static final void(package private) voidvoidsaveSettings(SaveSettingsEvent event) Ensures the location/size of the main window is stored with the settingsfinal voidsetShutdownAction(Action shutdownAction) Configures LogUI's with an action to execute when the user requests to exit the application, the default action is to exit the VM.private voidsetStatusBarVisible(boolean visible) voidsetTabbedPane(ChainsawTabbedPane tabbedPane) DOCUMENT ME!voidDOCUMENT ME!private voidInitialises the Help system and the WelcomePanelprivate voidvoidDOCUMENT ME!voidvoidvoidCauses the Welcome Panel to become visible, and shows the URL specified as it's contentsvoidprivate voidDisplays a dialog which will provide options for selecting a configurationprivate voidDisplay the log tree pane, using the last known divider locationprivate static final voidshowSplash(Frame owner) booleanshutdown()Shutsdown by ensuring the Appender gets a chance to close.Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, updateMethods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecoratedMethods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, show, toBack, toFrontMethods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTreeMethods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.awt.MenuContainer
getFont, postEvent
-
Field Details
-
MAIN_WINDOW_HEIGHT
- See Also:
-
MAIN_WINDOW_WIDTH
- See Also:
-
MAIN_WINDOW_Y
- See Also:
-
MAIN_WINDOW_X
- See Also:
-
splash
-
DEFAULT_MAIN_RECEIVER_SPLIT_LOCATION
private static final double DEFAULT_MAIN_RECEIVER_SPLIT_LOCATION- See Also:
-
preferencesFrame
-
noReceiversDefined
private boolean noReceiversDefined -
receiversPanel
-
tabbedPane
-
toolbar
-
statusBar
-
applicationPreferenceModel
-
applicationPreferenceModelPanel
-
tableModelMap
-
tableMap
-
filterableColumns
-
panelMap
-
handler
ChainsawAppenderHandler handler -
tbms
-
aboutBox
-
sm
-
tutorialFrame
-
mainReceiverSplitPane
-
lastMainReceiverSplitLocation
private double lastMainReceiverSplitLocation -
identifierPanels
-
dividerSize
private int dividerSize -
cyclicBufferSize
private int cyclicBufferSize -
logger
private static org.apache.log4j.Logger logger -
configurationURLAppArg
-
isGUIFullyInitialized
private boolean isGUIFullyInitializedSet to true, if and only if the GUI has completed it's full initialization. Any logging events that come in must wait until this is true, and if it is false, should wait on the initializationLock object until notified. -
initializationLock
-
shutdownAction
The shutdownAction is called when the user requests to exit Chainsaw, and by default this exits the VM, but a developer may replace this action with something that better suits their needs -
shutdownListenerList
Clients can register a ShutdownListener to be notified when the user has requested Chainsaw to exit. -
welcomePanel
-
repositorySelectorGuard
-
repositoryExImpl
-
pluginRegistry
-
allColorizers
-
receiverConfigurationPanel
-
-
Constructor Details
-
LogUI
public LogUI()Constructor which builds up all the visual elements of the frame including the Menu bar
-
-
Method Details
-
showSplash
-
removeSplash
private static final void removeSplash() -
addShutdownListener
Registers a ShutdownListener with this calss so that it can be notified when the user has requested that Chainsaw exit.- Parameters:
l-
-
removeShutdownListener
Removes the registered ShutdownListener so that the listener will not be notified on a shutdown.- Parameters:
l-
-
main
Starts Chainsaw by attaching a new instance to the Log4J main root Logger via a ChainsawAppender, and activates itself- Parameters:
args-
-
createChainsawGUI
Creates, activates, and then shows the Chainsaw GUI, optionally showing the splash screen, and using the passed shutdown action when the user requests to exit the application (if null, then Chainsaw will exit the vm)- Parameters:
model-newShutdownAction- DOCUMENT ME!
-
activateViewer
Allow Chainsaw v2 to be ran in-process (configured as a ChainsawAppender) NOTE: Closing Chainsaw will NOT stop the application generating the events.- Specified by:
activateViewerin interfaceChainsawViewer- Parameters:
appender-
-
initGUI
private void initGUI()Initialises the menu's and toolbars, but does not actually create any of the main panel components. -
initPlugins
-
setupReceiverPanel
private void setupReceiverPanel() -
setupHelpSystem
private void setupHelpSystem()Initialises the Help system and the WelcomePanel -
ensureWelcomePanelVisible
private void ensureWelcomePanelVisible() -
loadSettings
Given the load event, configures the size/location of the main window etc etc.- Specified by:
loadSettingsin interfaceSettingsListener- Parameters:
event- DOCUMENT ME!
-
saveSettings
Ensures the location/size of the main window is stored with the settings- Specified by:
saveSettingsin interfaceSettingsListener- Parameters:
event- DOCUMENT ME!
-
activateViewer
public void activateViewer()Activates itself as a viewer by configuring Size, and location of itself, and configures the default Tabbed Pane elements with the correct layout, table columns, and sets itself viewable. -
showReceiverPanel
private void showReceiverPanel()Display the log tree pane, using the last known divider location -
hideReceiverPanel
private void hideReceiverPanel()Hide the log tree pane, holding the current divider location for later use -
initSocketConnectionListener
private void initSocketConnectionListener() -
initPrefModelListeners
private void initPrefModelListeners() -
showReceiverConfigurationPanel
private void showReceiverConfigurationPanel()Displays a dialog which will provide options for selecting a configuration -
exit
public boolean exit()Exits the application, ensuring Settings are saved. -
addWelcomePanel
void addWelcomePanel() -
removeWelcomePanel
void removeWelcomePanel() -
getStatusBar
ChainsawStatusBar getStatusBar() -
showApplicationPreferences
public void showApplicationPreferences() -
showReceiverConfiguration
public void showReceiverConfiguration() -
showAboutBox
public void showAboutBox() -
getPanels
Map getPanels() -
displayPanel
-
shutdown
public boolean shutdown()Shutsdown by ensuring the Appender gets a chance to close. -
fireShutdownEvent
private void fireShutdownEvent()Ensures all the registered ShutdownListeners are notified. -
setShutdownAction
Configures LogUI's with an action to execute when the user requests to exit the application, the default action is to exit the VM. This Action is called AFTER all the ShutdownListeners have been notified- Parameters:
shutdownAction-
-
performShutdownAction
private void performShutdownAction()Using the current thread, calls the registed Shutdown action's actionPerformed(...) method. -
getCurrentLogPanel
LogPanel getCurrentLogPanel()Returns the currently selected LogPanel, if there is one, otherwise null- Returns:
- current log panel
-
setStatusBarVisible
private void setStatusBarVisible(boolean visible) - Parameters:
visible-
-
isStatusBarVisible
boolean isStatusBarVisible() -
getActiveTabName
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
showHelp
Causes the Welcome Panel to become visible, and shows the URL specified as it's contents- Parameters:
url- for content to show
-
getWelcomePanel
DOCUMENT ME!- Returns:
- welcome panel
-
isLogTreePanelVisible
public boolean isLogTreePanelVisible()DOCUMENT ME!- Returns:
- log tree panel visible flag
-
getPanelMap
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
getSettingsManager
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
getFilterableColumns
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
setToolBarAndMenus
DOCUMENT ME!- Parameters:
tbms- DOCUMENT ME!
-
getToolBarAndMenus
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
getTableMap
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
getTableModelMap
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
setTabbedPane
DOCUMENT ME!- Parameters:
tabbedPane- DOCUMENT ME!
-
getTabbedPane
DOCUMENT ME!- Returns:
- DOCUMENT ME!
-
getApplicationPreferenceModel
- Returns:
- Returns the applicationPreferenceModel.
-
setupTutorial
public void setupTutorial()DOCUMENT ME! -
buildLogPanel
private void buildLogPanel(boolean customExpression, String ident, List<org.apache.log4j.spi.LoggingEvent> events) throws IllegalArgumentException - Throws:
IllegalArgumentException
-
createCustomExpressionLogPanel
-
loadConfigurationUsingPluginClassLoader
Loads the log4j configuration file specified by the url, using the PluginClassLoader instance as a TCCL, but only replacing it temporarily, with the original TCCL being restored in a finally block to ensure consitency.- Parameters:
url-
-
loadLookAndFeelUsingPluginClassLoader
-
ensureChainsawAppenderHandlerAdded
private void ensureChainsawAppenderHandlerAdded()Makes sure that the LoggerRepository has the ChainsawAppenderHandler added to the root logger so Chainsaw can receive all the events.
-