http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java index 97b0cd3..ce79562 100644 --- a/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java +++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawTabbedPane.java @@ -18,32 +18,27 @@ /* * @author Paul Smith <psm...@apache.org> * -*/ + */ package org.apache.log4j.chainsaw; -import java.awt.Component; -import java.awt.EventQueue; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; - -import javax.swing.Icon; -import javax.swing.JComponent; -import javax.swing.JTabbedPane; - import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; - import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent; import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent; import org.apache.log4j.chainsaw.prefs.SettingsListener; import org.apache.log4j.chainsaw.prefs.SettingsManager; +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; + /** * The only reason this class is needed is because * of a stupid 'issue' with the JTabbedPane. - * + * <p> * If the currently selected tab is the first tab, * and we insert a new tab at the front, then as * far as the JTabbedPane is concerned, NO STATE has @@ -51,141 +46,141 @@ import org.apache.log4j.chainsaw.prefs.SettingsManager; * the same (even though the TAB is different - go figure) * and therefore no ChangeEvent is generated and sent * to listeners. Thanks very much Sun! - * + * <p> * For more information on the issue: * http://developer.java.sun.com/developer/bugParade/bugs/4253819.html - * + * * @author Paul Smith <psm...@apache.org> * @author Scott Deboy <sde...@apache.org> - * */ class ChainsawTabbedPane extends JTabbedPane implements SettingsListener { - public SavableTabSetting tabSetting; - public static final String WELCOME_TAB = "Welcome"; - public static final String ZEROCONF = "Zeroconf"; - /** - * - * Create the tabbed pane. - * - */ - public ChainsawTabbedPane() { - super(); - } - - /** - * Returns true if this TabbedPane has an instance of the WelcomePanel - * in it - * @return true/false - */ - boolean containsWelcomePanel() { - return indexOfTab("Welcome") > -1; - } - - /** - * Our custom implementation of inserting a new tab, - * this method ALWAYS inserts it at the front because - * we get an ArrayIndexOutOfBoundsException otherwise - * under some JDK implementations. - * - * This method also causes a fireStateChange() to be - * called so that listeners get notified of the event. - * See the class level comments for the reason why... - * @param name - * @param component - */ - public void addANewTab(String name, JComponent component, Icon icon) { - super.insertTab(name, icon, component, null, getTabCount()); - - super.fireStateChanged(); - if (!"chainsaw-log".equals(name)) { - EventQueue.invokeLater(() -> setSelectedTab(getTabCount() - 1)); + public SavableTabSetting tabSetting; + public static final String WELCOME_TAB = "Welcome"; + public static final String ZEROCONF = "Zeroconf"; + + /** + * Create the tabbed pane. + */ + public ChainsawTabbedPane() { + super(); + } + + /** + * Returns true if this TabbedPane has an instance of the WelcomePanel + * in it + * + * @return true/false + */ + boolean containsWelcomePanel() { + return indexOfTab("Welcome") > -1; + } + + /** + * Our custom implementation of inserting a new tab, + * this method ALWAYS inserts it at the front because + * we get an ArrayIndexOutOfBoundsException otherwise + * under some JDK implementations. + * <p> + * This method also causes a fireStateChange() to be + * called so that listeners get notified of the event. + * See the class level comments for the reason why... + * + * @param name + * @param component + */ + public void addANewTab(String name, JComponent component, Icon icon) { + super.insertTab(name, icon, component, null, getTabCount()); + + super.fireStateChanged(); + if (!"chainsaw-log".equals(name)) { + EventQueue.invokeLater(() -> setSelectedTab(getTabCount() - 1)); + } + } + + public void setSelectedTab(int index) { + if (getTabCount() >= index) { + setSelectedIndex(index); + } + + getSelectedComponent().setVisible(true); + getSelectedComponent().validate(); + super.fireStateChanged(); + } + + public void addANewTab( + String name, JComponent component, Icon icon, String tooltip) { + super.insertTab(name, icon, component, tooltip, getTabCount()); + super.fireStateChanged(); + } + + public void remove(Component component) { + super.remove(component); + super.fireStateChanged(); } - } - public void setSelectedTab(int index) { - if (getTabCount() >= index) { - setSelectedIndex(index); + /** + * Saves the state of the currently active tabs to an XML file. + * Only considers the Welcome, Drag and Drop and chainsaw-log + * panels as they are the panel which are always running. Saves + * whether they are hidden or not.... + */ + + public void saveSettings(SaveSettingsEvent event) { + File file = new File(SettingsManager.getInstance().getSettingsDirectory(), "tab-settings.xml"); + XStream stream = new XStream(new DomDriver()); + try { + FileWriter writer = new FileWriter(file); + int count = super.getTabCount(); + String title; + SavableTabSetting setting = new SavableTabSetting(); + for (int i = 0; i < count; i++) { + title = super.getTitleAt(i); + switch (title) { + case WELCOME_TAB: + setting.setWelcome(true); + break; + case "chainsaw-log": + setting.setChainsawLog(true); + break; + case ZEROCONF: + setting.setZeroconf(true); + break; + } + } + + stream.toXML(setting, writer); + writer.close(); + + } catch (Exception e) { + file.delete(); + e.printStackTrace(); + } } - getSelectedComponent().setVisible(true); - getSelectedComponent().validate(); - super.fireStateChanged(); - } - - public void addANewTab( - String name, JComponent component, Icon icon, String tooltip) { - super.insertTab(name, icon, component, tooltip, getTabCount()); - super.fireStateChanged(); - } - - public void remove(Component component) { - super.remove(component); - super.fireStateChanged(); - } - - /** - * Saves the state of the currently active tabs to an XML file. - * Only considers the Welcome, Drag and Drop and chainsaw-log - * panels as they are the panel which are always running. Saves - * whether they are hidden or not.... - */ - - public void saveSettings(SaveSettingsEvent event){ - File file = new File(SettingsManager.getInstance().getSettingsDirectory(), "tab-settings.xml"); - XStream stream = new XStream(new DomDriver()); - try { - FileWriter writer = new FileWriter(file); - int count = super.getTabCount(); - String title; - SavableTabSetting setting = new SavableTabSetting(); - for(int i = 0 ; i < count ; i++){ - title = super.getTitleAt(i); - switch (title) { - case WELCOME_TAB: - setting.setWelcome(true); - break; - case "chainsaw-log": - setting.setChainsawLog(true); - break; - case ZEROCONF: - setting.setZeroconf(true); - break; - } - } - - stream.toXML(setting, writer); - writer.close(); - - } catch (Exception e) { - file.delete(); - e.printStackTrace(); - } - } - - /** - * Loads the saved tab setting by reading the XML file. - * If the file doesn't exist, all three panels should be - * shown as the default setting.... - */ - - public void loadSettings(LoadSettingsEvent event){ - File file = new File(SettingsManager.getInstance().getSettingsDirectory(), "tab-settings.xml"); - XStream stream = new XStream(new DomDriver()); - try { - if (file.exists()) { - FileReader reader = new FileReader(file); - tabSetting = (SavableTabSetting) stream.fromXML(reader); - reader.close(); - } else { - tabSetting = new SavableTabSetting(); - tabSetting.setWelcome(true); - tabSetting.setChainsawLog(true); - tabSetting.setZeroconf(true); - } - } catch (Exception e) { - e.printStackTrace(); - file.delete(); + /** + * Loads the saved tab setting by reading the XML file. + * If the file doesn't exist, all three panels should be + * shown as the default setting.... + */ + + public void loadSettings(LoadSettingsEvent event) { + File file = new File(SettingsManager.getInstance().getSettingsDirectory(), "tab-settings.xml"); + XStream stream = new XStream(new DomDriver()); + try { + if (file.exists()) { + FileReader reader = new FileReader(file); + tabSetting = (SavableTabSetting) stream.fromXML(reader); + reader.close(); + } else { + tabSetting = new SavableTabSetting(); + tabSetting.setWelcome(true); + tabSetting.setChainsawLog(true); + tabSetting.setZeroconf(true); + } + } catch (Exception e) { + e.printStackTrace(); + file.delete(); + } } - } }
http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java index 30e283c..90abba9 100644 --- a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java +++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java @@ -17,10 +17,16 @@ package org.apache.log4j.chainsaw; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Insets; -import java.awt.Toolkit; +import org.apache.log4j.chainsaw.filter.FilterModel; +import org.apache.log4j.chainsaw.help.HelpManager; +import org.apache.log4j.chainsaw.icons.ChainsawIcons; +import org.apache.log4j.chainsaw.osx.OSXIntegration; +import org.apache.log4j.chainsaw.receivers.ReceiversHelper; + +import javax.swing.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; @@ -28,917 +34,889 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Box; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JEditorPane; -import javax.swing.JLabel; -import javax.swing.JMenu; -import javax.swing.JMenuBar; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JRadioButtonMenuItem; -import javax.swing.JToolBar; -import javax.swing.KeyStroke; -import javax.swing.SwingConstants; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; - -import org.apache.log4j.chainsaw.filter.FilterModel; -import org.apache.log4j.chainsaw.help.HelpManager; -import org.apache.log4j.chainsaw.icons.ChainsawIcons; -import org.apache.log4j.chainsaw.osx.OSXIntegration; -import org.apache.log4j.chainsaw.receivers.ReceiversHelper; - /** * Encapsulates the full Toolbar, and menus and all the actions that can be performed from it. + * * @author Paul Smith <psm...@apache.org> * @author Scott Deboy <sde...@apache.org> */ class ChainsawToolBarAndMenus implements ChangeListener { - private final SmallToggleButton showReceiversButton; - private final Action changeModelAction; - private final Action clearAction; - private final Action toggleWelcomeVisibleAction; - private final Action findPreviousColorizedEventAction; - private final Action findNextColorizedEventAction; - private final Action findNextMarkerAction; - private final Action findPreviousMarkerAction; - private final Action toggleMarkerAction; - private final Action clearAllMarkersAction; - private final Action pauseAction; - private final Action showPreferencesAction; - private final Action showColorPanelAction; - private final Action showReceiversAction; - private final Action toggleLogTreeAction; - private final Action toggleScrollToBottomAction; - private final Action scrollToTopAction; - private final Action toggleDetailPaneAction; - private final Action toggleToolbarAction; - private final Action undockAction; - private final Action customExpressionPanelAction; - private final Collection lookAndFeelMenus = new ArrayList(); - private final JCheckBoxMenuItem toggleShowReceiversCheck = - new JCheckBoxMenuItem(); - private final JCheckBoxMenuItem toggleLogTreeMenuItem = - new JCheckBoxMenuItem(); - private final JCheckBoxMenuItem toggleScrollToBottomMenuItem = - new JCheckBoxMenuItem(); - private final JCheckBoxMenuItem toggleDetailMenuItem = - new JCheckBoxMenuItem(); - private final JCheckBoxMenuItem toggleCyclicMenuItem = - new JCheckBoxMenuItem(); - private final FileMenu fileMenu; - private final JCheckBoxMenuItem toggleStatusBarCheck = - new JCheckBoxMenuItem(); - private final JMenu viewMenu = new JMenu("View"); - private final JMenuBar menuBar; - private final JCheckBoxMenuItem menuShowWelcome = new JCheckBoxMenuItem(); - private final JToolBar toolbar; - private final LogUI logui; - private final SmallButton clearButton = new SmallButton(); - private final SmallToggleButton detailPaneButton = new SmallToggleButton(); - private final SmallToggleButton logTreePaneButton = new SmallToggleButton(); - private final SmallToggleButton scrollToBottomButton = new SmallToggleButton(); - private final SmallToggleButton pauseButton = new SmallToggleButton(); - private final SmallToggleButton toggleCyclicButton = new SmallToggleButton(); - private final Action[] logPanelSpecificActions; - private final JMenu activeTabMenu = new JMenu("Current tab"); + private final SmallToggleButton showReceiversButton; + private final Action changeModelAction; + private final Action clearAction; + private final Action toggleWelcomeVisibleAction; + private final Action findPreviousColorizedEventAction; + private final Action findNextColorizedEventAction; + private final Action findNextMarkerAction; + private final Action findPreviousMarkerAction; + private final Action toggleMarkerAction; + private final Action clearAllMarkersAction; + private final Action pauseAction; + private final Action showPreferencesAction; + private final Action showColorPanelAction; + private final Action showReceiversAction; + private final Action toggleLogTreeAction; + private final Action toggleScrollToBottomAction; + private final Action scrollToTopAction; + private final Action toggleDetailPaneAction; + private final Action toggleToolbarAction; + private final Action undockAction; + private final Action customExpressionPanelAction; + private final Collection lookAndFeelMenus = new ArrayList(); + private final JCheckBoxMenuItem toggleShowReceiversCheck = + new JCheckBoxMenuItem(); + private final JCheckBoxMenuItem toggleLogTreeMenuItem = + new JCheckBoxMenuItem(); + private final JCheckBoxMenuItem toggleScrollToBottomMenuItem = + new JCheckBoxMenuItem(); + private final JCheckBoxMenuItem toggleDetailMenuItem = + new JCheckBoxMenuItem(); + private final JCheckBoxMenuItem toggleCyclicMenuItem = + new JCheckBoxMenuItem(); + private final FileMenu fileMenu; + private final JCheckBoxMenuItem toggleStatusBarCheck = + new JCheckBoxMenuItem(); + private final JMenu viewMenu = new JMenu("View"); + private final JMenuBar menuBar; + private final JCheckBoxMenuItem menuShowWelcome = new JCheckBoxMenuItem(); + private final JToolBar toolbar; + private final LogUI logui; + private final SmallButton clearButton = new SmallButton(); + private final SmallToggleButton detailPaneButton = new SmallToggleButton(); + private final SmallToggleButton logTreePaneButton = new SmallToggleButton(); + private final SmallToggleButton scrollToBottomButton = new SmallToggleButton(); + private final SmallToggleButton pauseButton = new SmallToggleButton(); + private final SmallToggleButton toggleCyclicButton = new SmallToggleButton(); + private final Action[] logPanelSpecificActions; + private final JMenu activeTabMenu = new JMenu("Current tab"); ChainsawToolBarAndMenus(final LogUI logui) { - this.logui = logui; - toolbar = new JToolBar(SwingConstants.HORIZONTAL); - menuBar = new JMenuBar(); - fileMenu = new FileMenu(logui); - toggleWelcomeVisibleAction = toggleWelcomeVisibleAction(); - changeModelAction = createChangeModelAction(); - findNextMarkerAction = createFindNextMarkerAction(); - findPreviousColorizedEventAction = getFindPreviousColorizedEventAction(); - findNextColorizedEventAction = getFindNextColorizedEventAction(); - findPreviousMarkerAction = createFindPreviousMarkerAction(); - toggleMarkerAction = createToggleMarkerAction(); - clearAllMarkersAction = createClearAllMarkersAction(); - customExpressionPanelAction = createCustomExpressionPanelAction(); - showPreferencesAction = createShowPreferencesAction(); - showColorPanelAction = createShowColorPanelAction(); - toggleToolbarAction = createToggleToolbarAction(); - toggleLogTreeAction = createToggleLogTreeAction(); - toggleScrollToBottomAction = createScrollToBottomAction(); - scrollToTopAction = createScrollToTopAction(); - pauseAction = createPauseAction(); - clearAction = createClearAction(); - undockAction = createUndockAction(); - showReceiversAction = createShowReceiversAction(); - showReceiversButton = new SmallToggleButton(showReceiversAction); - - toggleDetailPaneAction = createToggleDetailPaneAction(); - createMenuBar(); - createToolbar(); - - logPanelSpecificActions = - new Action[] { - pauseAction, findNextColorizedEventAction, findPreviousColorizedEventAction, - findNextMarkerAction, findPreviousMarkerAction, - toggleMarkerAction, clearAllMarkersAction, scrollToTopAction, clearAction, - fileMenu.getFileSaveAction(), toggleDetailPaneAction, - showPreferencesAction, showColorPanelAction, undockAction, - toggleLogTreeAction, toggleScrollToBottomAction, changeModelAction, - }; - - logui.getApplicationPreferenceModel().addPropertyChangeListener( - "statusBar", + this.logui = logui; + toolbar = new JToolBar(SwingConstants.HORIZONTAL); + menuBar = new JMenuBar(); + fileMenu = new FileMenu(logui); + toggleWelcomeVisibleAction = toggleWelcomeVisibleAction(); + changeModelAction = createChangeModelAction(); + findNextMarkerAction = createFindNextMarkerAction(); + findPreviousColorizedEventAction = getFindPreviousColorizedEventAction(); + findNextColorizedEventAction = getFindNextColorizedEventAction(); + findPreviousMarkerAction = createFindPreviousMarkerAction(); + toggleMarkerAction = createToggleMarkerAction(); + clearAllMarkersAction = createClearAllMarkersAction(); + customExpressionPanelAction = createCustomExpressionPanelAction(); + showPreferencesAction = createShowPreferencesAction(); + showColorPanelAction = createShowColorPanelAction(); + toggleToolbarAction = createToggleToolbarAction(); + toggleLogTreeAction = createToggleLogTreeAction(); + toggleScrollToBottomAction = createScrollToBottomAction(); + scrollToTopAction = createScrollToTopAction(); + pauseAction = createPauseAction(); + clearAction = createClearAction(); + undockAction = createUndockAction(); + showReceiversAction = createShowReceiversAction(); + showReceiversButton = new SmallToggleButton(showReceiversAction); + + toggleDetailPaneAction = createToggleDetailPaneAction(); + createMenuBar(); + createToolbar(); + + logPanelSpecificActions = + new Action[]{ + pauseAction, findNextColorizedEventAction, findPreviousColorizedEventAction, + findNextMarkerAction, findPreviousMarkerAction, + toggleMarkerAction, clearAllMarkersAction, scrollToTopAction, clearAction, + fileMenu.getFileSaveAction(), toggleDetailPaneAction, + showPreferencesAction, showColorPanelAction, undockAction, + toggleLogTreeAction, toggleScrollToBottomAction, changeModelAction, + }; + + logui.getApplicationPreferenceModel().addPropertyChangeListener( + "statusBar", evt -> { - boolean value = (Boolean) evt.getNewValue(); - toggleStatusBarCheck.setSelected(value); + boolean value = (Boolean) evt.getNewValue(); + toggleStatusBarCheck.setSelected(value); }); - logui.getApplicationPreferenceModel().addPropertyChangeListener( - "receivers", + logui.getApplicationPreferenceModel().addPropertyChangeListener( + "receivers", evt -> { - boolean value = (Boolean) evt.getNewValue(); - showReceiversButton.setSelected(value); - toggleShowReceiversCheck.setSelected(value); + boolean value = (Boolean) evt.getNewValue(); + showReceiversButton.setSelected(value); + toggleShowReceiversCheck.setSelected(value); }); - } - - /** - * @return - */ - private Action createChangeModelAction() { - Action action = - new AbstractAction("Use Cyclic", new ImageIcon(ChainsawIcons.REFRESH)) { - public void actionPerformed(ActionEvent arg0) { - LogPanel logPanel = logui.getCurrentLogPanel(); - logPanel.toggleCyclic(); - scanState(); - } - }; - - action.putValue( - Action.SHORT_DESCRIPTION, "Changes between Cyclic and Unlimited mode."); - - return action; - } - - /** - * @return - */ - private Action createToggleLogTreeAction() { - Action action = - new AbstractAction("Toggle the Logger Tree Pane") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().toggleLogTreeVisible(); - } - } - }; - - action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Logger Tree Pane"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); - action.putValue( - Action.ACCELERATOR_KEY, - KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - action.putValue( - Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON)); - - return action; - } - - /** - * @return - */ - private Action createScrollToBottomAction() { - Action action = - new AbstractAction("Toggle Scroll to Bottom") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().toggleScrollToBottom(); - } - } - }; - - action.putValue(Action.SHORT_DESCRIPTION, "Toggles Scroll to Bottom"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_B); - action.putValue( - Action.ACCELERATOR_KEY, - KeyStroke.getKeyStroke(KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - action.putValue( - Action.SMALL_ICON, new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM)); - - return action; - } + } - private Action createScrollToTopAction() { - Action action = - new AbstractAction("Scroll to top") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().scrollToTop(); - } - } - }; + /** + * @return + */ + private Action createChangeModelAction() { + Action action = + new AbstractAction("Use Cyclic", new ImageIcon(ChainsawIcons.REFRESH)) { + public void actionPerformed(ActionEvent arg0) { + LogPanel logPanel = logui.getCurrentLogPanel(); + logPanel.toggleCyclic(); + scanState(); + } + }; + + action.putValue( + Action.SHORT_DESCRIPTION, "Changes between Cyclic and Unlimited mode."); + + return action; + } - action.putValue(Action.SHORT_DESCRIPTION, "Scroll to top"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + /** + * @return + */ + private Action createToggleLogTreeAction() { + Action action = + new AbstractAction("Toggle the Logger Tree Pane") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().toggleLogTreeVisible(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Logger Tree Pane"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); + action.putValue( + Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + action.putValue( + Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON)); + + return action; + } - return action; + /** + * @return + */ + private Action createScrollToBottomAction() { + Action action = + new AbstractAction("Toggle Scroll to Bottom") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().toggleScrollToBottom(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Toggles Scroll to Bottom"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_B); + action.putValue( + Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + action.putValue( + Action.SMALL_ICON, new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM)); + + return action; } - private Action createFindNextMarkerAction() { - Action action = - new AbstractAction("Find next marker") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().findNextMarker(); - } - } - }; + private Action createScrollToTopAction() { + Action action = + new AbstractAction("Scroll to top") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().scrollToTop(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Scroll to top"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - action.putValue(Action.SHORT_DESCRIPTION, "Find the next marker from the current location"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F2")); + return action; + } - return action; - } + private Action createFindNextMarkerAction() { + Action action = + new AbstractAction("Find next marker") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().findNextMarker(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Find the next marker from the current location"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F2")); - private Action createFindPreviousMarkerAction() { - Action action = - new AbstractAction("Find previous marker") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().findPreviousMarker(); - } - } - }; + return action; + } - action.putValue(Action.SHORT_DESCRIPTION, "Find the previous marker from the current location"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK)); + private Action createFindPreviousMarkerAction() { + Action action = + new AbstractAction("Find previous marker") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().findPreviousMarker(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Find the previous marker from the current location"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK)); - return action; + return action; } private Action createToggleMarkerAction() { - Action action = - new AbstractAction("Toggle marker") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().toggleMarker(); - } - } - }; - - action.putValue(Action.SHORT_DESCRIPTION, "Toggle marker for selected row"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + Action action = + new AbstractAction("Toggle marker") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().toggleMarker(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Toggle marker for selected row"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - return action; + return action; } private Action createClearAllMarkersAction() { - Action action = - new AbstractAction("Clear all markers") { - public void actionPerformed(ActionEvent e) { - if (logui.getCurrentLogPanel() != null) { - logui.getCurrentLogPanel().clearAllMarkers(); - } - } - }; + Action action = + new AbstractAction("Clear all markers") { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().clearAllMarkers(); + } + } + }; + + action.putValue(Action.SHORT_DESCRIPTION, "Removes all markers"); + action.putValue("enabled", Boolean.TRUE); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK)); - action.putValue(Action.SHORT_DESCRIPTION, "Removes all markers"); - action.putValue("enabled", Boolean.TRUE); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK)); + return action; + } - return action; + /** + * DOCUMENT ME! + */ + public void stateChange() { + scanState(); } - /** - * DOCUMENT ME! - */ - public void stateChange() { - scanState(); - } - - /** - * DOCUMENT ME! - * - * @param e DOCUMENT ME! - */ - public void stateChanged(ChangeEvent e) { - scanState(); - } - - JMenuBar getMenubar() { - return menuBar; - } - - JToolBar getToolbar() { - return toolbar; - } - - private Action createClearAction() { - final Action action = - new AbstractAction("Clear") { - public void actionPerformed(ActionEvent e) { - LogPanel logPanel = logui.getCurrentLogPanel(); - - if (logPanel == null) { - return; - } - - logPanel.clearEvents(); - } - }; - - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C); - action.putValue( - Action.ACCELERATOR_KEY, - KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - action.putValue( - Action.SHORT_DESCRIPTION, "Removes all the events from the current view"); - action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.DELETE)); - - return action; - } - - private Action toggleWelcomeVisibleAction() { - final Action action = - new AbstractAction() { - public void actionPerformed(ActionEvent e) { - toggleWelcomeVisibleAction.putValue(Action.NAME, "Welcome tab"); - if (menuShowWelcome.isSelected()) { - logui.addWelcomePanel(); - } else { - logui.removeWelcomePanel(); - } - } - }; + /** + * DOCUMENT ME! + * + * @param e DOCUMENT ME! + */ + public void stateChanged(ChangeEvent e) { + scanState(); + } - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F1")); + JMenuBar getMenubar() { + return menuBar; + } - // action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK)); - action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Welcome tab"); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C); - action.putValue(Action.NAME, "Welcome tab"); + JToolBar getToolbar() { + return toolbar; + } - return action; - } + private Action createClearAction() { + final Action action = + new AbstractAction("Clear") { + public void actionPerformed(ActionEvent e) { + LogPanel logPanel = logui.getCurrentLogPanel(); + + if (logPanel == null) { + return; + } + + logPanel.clearEvents(); + } + }; + + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C); + action.putValue( + Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + action.putValue( + Action.SHORT_DESCRIPTION, "Removes all the events from the current view"); + action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.DELETE)); + + return action; + } - private void createMenuBar() { - JMenuItem menuItemUseRightMouse = - new JMenuItem( - "Other options available via panel's right mouse button popup menu"); - menuItemUseRightMouse.setEnabled(false); + private Action toggleWelcomeVisibleAction() { + final Action action = + new AbstractAction() { + public void actionPerformed(ActionEvent e) { + toggleWelcomeVisibleAction.putValue(Action.NAME, "Welcome tab"); + if (menuShowWelcome.isSelected()) { + logui.addWelcomePanel(); + } else { + logui.removeWelcomePanel(); + } + } + }; + + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F1")); + + // action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK)); + action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Welcome tab"); + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C); + action.putValue(Action.NAME, "Welcome tab"); + + return action; + } + + private void createMenuBar() { + JMenuItem menuItemUseRightMouse = + new JMenuItem( + "Other options available via panel's right mouse button popup menu"); + menuItemUseRightMouse.setEnabled(false); - viewMenu.setMnemonic('V'); + viewMenu.setMnemonic('V'); - final JCheckBoxMenuItem showToolbarCheck = - new JCheckBoxMenuItem(toggleToolbarAction); - showToolbarCheck.setSelected( - logui.getApplicationPreferenceModel().isToolbar()); + final JCheckBoxMenuItem showToolbarCheck = + new JCheckBoxMenuItem(toggleToolbarAction); + showToolbarCheck.setSelected( + logui.getApplicationPreferenceModel().isToolbar()); - logui.getApplicationPreferenceModel().addPropertyChangeListener( - "toolbar", + logui.getApplicationPreferenceModel().addPropertyChangeListener( + "toolbar", evt -> { - boolean value = (Boolean) evt.getNewValue(); - showToolbarCheck.setSelected(value); + boolean value = (Boolean) evt.getNewValue(); + showToolbarCheck.setSelected(value); }); - menuShowWelcome.setAction(toggleWelcomeVisibleAction); + menuShowWelcome.setAction(toggleWelcomeVisibleAction); - JCheckBoxMenuItem pause = new JCheckBoxMenuItem(pauseAction); - JMenuItem menuPrefs = new JMenuItem(showPreferencesAction); - menuPrefs.setText( - showPreferencesAction.getValue(Action.SHORT_DESCRIPTION).toString()); + JCheckBoxMenuItem pause = new JCheckBoxMenuItem(pauseAction); + JMenuItem menuPrefs = new JMenuItem(showPreferencesAction); + menuPrefs.setText( + showPreferencesAction.getValue(Action.SHORT_DESCRIPTION).toString()); - JMenuItem menuCustomExpressionPanel = - new JMenuItem(customExpressionPanelAction); - menuCustomExpressionPanel.setText( - customExpressionPanelAction.getValue(Action.SHORT_DESCRIPTION).toString()); + JMenuItem menuCustomExpressionPanel = + new JMenuItem(customExpressionPanelAction); + menuCustomExpressionPanel.setText( + customExpressionPanelAction.getValue(Action.SHORT_DESCRIPTION).toString()); - JMenuItem menuShowColor = new JMenuItem(showColorPanelAction); - menuShowColor.setText( - showColorPanelAction.getValue(Action.SHORT_DESCRIPTION).toString()); + JMenuItem menuShowColor = new JMenuItem(showColorPanelAction); + menuShowColor.setText( + showColorPanelAction.getValue(Action.SHORT_DESCRIPTION).toString()); - JMenuItem menuUndock = new JMenuItem(undockAction); + JMenuItem menuUndock = new JMenuItem(undockAction); - JMenuItem showAppPrefs = - new JMenuItem("Show Application-wide Preferences..."); + JMenuItem showAppPrefs = + new JMenuItem("Show Application-wide Preferences..."); - showAppPrefs.addActionListener( + showAppPrefs.addActionListener( e -> logui.showApplicationPreferences()); - toggleDetailMenuItem.setAction(toggleDetailPaneAction); - toggleDetailMenuItem.setSelected(true); - - toggleCyclicMenuItem.setAction(changeModelAction); + toggleDetailMenuItem.setAction(toggleDetailPaneAction); + toggleDetailMenuItem.setSelected(true); + + toggleCyclicMenuItem.setAction(changeModelAction); + + toggleCyclicMenuItem.setSelected(true); + + toggleLogTreeMenuItem.setAction(toggleLogTreeAction); + toggleLogTreeMenuItem.setSelected(true); + + toggleScrollToBottomMenuItem.setAction(toggleScrollToBottomAction); + + final Action toggleStatusBarAction = + new AbstractAction("Show Status bar") { + public void actionPerformed(ActionEvent arg0) { + logui.getApplicationPreferenceModel().setStatusBar( + toggleStatusBarCheck.isSelected()); + } + }; + + toggleStatusBarAction.putValue( + Action.MNEMONIC_KEY, KeyEvent.VK_B); + toggleStatusBarCheck.setAction(toggleStatusBarAction); + toggleStatusBarCheck.setSelected( + logui.getApplicationPreferenceModel().isStatusBar()); + + activeTabMenu.add(pause); + activeTabMenu.add(toggleCyclicMenuItem); + activeTabMenu.addSeparator(); + activeTabMenu.add(toggleDetailMenuItem); + activeTabMenu.add(toggleLogTreeMenuItem); + activeTabMenu.addSeparator(); + activeTabMenu.add(menuUndock); + activeTabMenu.add(menuShowColor); + activeTabMenu.add(menuPrefs); + + activeTabMenu.addSeparator(); + activeTabMenu.add(new CopyEventsToClipboardAction(logui)); + activeTabMenu.add(new JMenuItem(clearAction)); + + activeTabMenu.addSeparator(); + activeTabMenu.add(new JMenuItem(toggleMarkerAction)); + activeTabMenu.add(new JMenuItem(findNextMarkerAction)); + activeTabMenu.add(new JMenuItem(findPreviousMarkerAction)); + activeTabMenu.add(new JMenuItem(clearAllMarkersAction)); + + activeTabMenu.add(new JMenuItem(findNextColorizedEventAction)); + activeTabMenu.add(new JMenuItem(findPreviousColorizedEventAction)); + + activeTabMenu.addSeparator(); + activeTabMenu.add(new JMenuItem(scrollToTopAction)); + activeTabMenu.add(toggleScrollToBottomMenuItem); + activeTabMenu.add(menuItemUseRightMouse); + + viewMenu.add(showToolbarCheck); + viewMenu.add(toggleStatusBarCheck); + viewMenu.add(toggleShowReceiversCheck); + viewMenu.add(menuShowWelcome); + viewMenu.addSeparator(); + viewMenu.add(menuCustomExpressionPanel); - toggleCyclicMenuItem.setSelected(true); + if (!OSXIntegration.IS_OSX) { + viewMenu.addSeparator(); + viewMenu.add(showAppPrefs); + } - toggleLogTreeMenuItem.setAction(toggleLogTreeAction); - toggleLogTreeMenuItem.setSelected(true); + JMenu helpMenu = new JMenu("Help"); + helpMenu.setMnemonic('H'); - toggleScrollToBottomMenuItem.setAction(toggleScrollToBottomAction); + JMenuItem about = new JMenuItem("About Chainsaw v2..."); + about.setMnemonic('A'); + about.addActionListener( + e -> logui.showAboutBox()); - final Action toggleStatusBarAction = - new AbstractAction("Show Status bar") { - public void actionPerformed(ActionEvent arg0) { - logui.getApplicationPreferenceModel().setStatusBar( - toggleStatusBarCheck.isSelected()); + Action startTutorial = + new AbstractAction("Tutorial...", new ImageIcon(ChainsawIcons.HELP)) { + public void actionPerformed(ActionEvent e) { + logui.setupTutorial(); + } + }; + + startTutorial.putValue( + Action.SHORT_DESCRIPTION, "Starts the tutorial process"); + helpMenu.add(startTutorial); + + List knownReceivers = + ReceiversHelper.getInstance().getKnownReceiverClasses(); + JMenu receiverHelp = new JMenu("Receiver JavaDoc"); + + for (Object knownReceiver : knownReceivers) { + final Class clazz = (Class) knownReceiver; + receiverHelp.add( + new AbstractAction(clazz.getName()) { + public void actionPerformed(ActionEvent arg0) { + HelpManager.getInstance().showHelpForClass(clazz); + } + }); } - }; - - toggleStatusBarAction.putValue( - Action.MNEMONIC_KEY, KeyEvent.VK_B); - toggleStatusBarCheck.setAction(toggleStatusBarAction); - toggleStatusBarCheck.setSelected( - logui.getApplicationPreferenceModel().isStatusBar()); - - activeTabMenu.add(pause); - activeTabMenu.add(toggleCyclicMenuItem); - activeTabMenu.addSeparator(); - activeTabMenu.add(toggleDetailMenuItem); - activeTabMenu.add(toggleLogTreeMenuItem); - activeTabMenu.addSeparator(); - activeTabMenu.add(menuUndock); - activeTabMenu.add(menuShowColor); - activeTabMenu.add(menuPrefs); - - activeTabMenu.addSeparator(); - activeTabMenu.add(new CopyEventsToClipboardAction(logui)); - activeTabMenu.add(new JMenuItem(clearAction)); - - activeTabMenu.addSeparator(); - activeTabMenu.add(new JMenuItem(toggleMarkerAction)); - activeTabMenu.add(new JMenuItem(findNextMarkerAction)); - activeTabMenu.add(new JMenuItem(findPreviousMarkerAction)); - activeTabMenu.add(new JMenuItem(clearAllMarkersAction)); - - activeTabMenu.add(new JMenuItem(findNextColorizedEventAction)); - activeTabMenu.add(new JMenuItem(findPreviousColorizedEventAction)); - - activeTabMenu.addSeparator(); - activeTabMenu.add(new JMenuItem(scrollToTopAction)); - activeTabMenu.add(toggleScrollToBottomMenuItem); - activeTabMenu.add(menuItemUseRightMouse); - - viewMenu.add(showToolbarCheck); - viewMenu.add(toggleStatusBarCheck); - viewMenu.add(toggleShowReceiversCheck); - viewMenu.add(menuShowWelcome); - viewMenu.addSeparator(); - viewMenu.add(menuCustomExpressionPanel); - - if (!OSXIntegration.IS_OSX) { - viewMenu.addSeparator(); - viewMenu.add(showAppPrefs); + + helpMenu.add(receiverHelp); + + helpMenu.addSeparator(); + helpMenu.add(CommonActions.getInstance().getShowReleaseNotes()); + helpMenu.add(about); + + menuBar.add(fileMenu); + menuBar.add(viewMenu); + menuBar.add(activeTabMenu); + menuBar.add(helpMenu); } - JMenu helpMenu = new JMenu("Help"); - helpMenu.setMnemonic('H'); + private Action createPauseAction() { + final Action action = + new AbstractAction("Pause") { + public void actionPerformed(ActionEvent evt) { + LogPanel logPanel = logui.getCurrentLogPanel(); - JMenuItem about = new JMenuItem("About Chainsaw v2..."); - about.setMnemonic('A'); - about.addActionListener( - e -> logui.showAboutBox()); + if (logPanel == null) { + return; + } - Action startTutorial = - new AbstractAction("Tutorial...", new ImageIcon(ChainsawIcons.HELP)) { - public void actionPerformed(ActionEvent e) { - logui.setupTutorial(); - } - }; - - startTutorial.putValue( - Action.SHORT_DESCRIPTION, "Starts the tutorial process"); - helpMenu.add(startTutorial); - - List knownReceivers = - ReceiversHelper.getInstance().getKnownReceiverClasses(); - JMenu receiverHelp = new JMenu("Receiver JavaDoc"); - - for (Object knownReceiver : knownReceivers) { - final Class clazz = (Class) knownReceiver; - receiverHelp.add( - new AbstractAction(clazz.getName()) { - public void actionPerformed(ActionEvent arg0) { - HelpManager.getInstance().showHelpForClass(clazz); - } - }); - } - - helpMenu.add(receiverHelp); - - helpMenu.addSeparator(); - helpMenu.add(CommonActions.getInstance().getShowReleaseNotes()); - helpMenu.add(about); - - menuBar.add(fileMenu); - menuBar.add(viewMenu); - menuBar.add(activeTabMenu); - menuBar.add(helpMenu); - } - - private Action createPauseAction() { - final Action action = - new AbstractAction("Pause") { - public void actionPerformed(ActionEvent evt) { - LogPanel logPanel = logui.getCurrentLogPanel(); - - if (logPanel == null) { - return; - } - - logPanel.setPaused(!logPanel.isPaused()); - scanState(); - } - }; - - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12")); - action.putValue( - Action.SHORT_DESCRIPTION, - "Causes incoming events for this tab to be discarded"); - action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE)); - - return action; - } - - private Action createShowPreferencesAction() { - Action showPreferences = - new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) { - public void actionPerformed(ActionEvent arg0) { - LogPanel logPanel = logui.getCurrentLogPanel(); - - if (logPanel != null) { - logPanel.showPreferences(); - } - } - }; + logPanel.setPaused(!logPanel.isPaused()); + scanState(); + } + }; + + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12")); + action.putValue( + Action.SHORT_DESCRIPTION, + "Causes incoming events for this tab to be discarded"); + action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE)); - showPreferences.putValue( - Action.SHORT_DESCRIPTION, "Tab Preferences..."); + return action; + } - // TODO think of good mnemonics and HotKey for this action - return showPreferences; - } + private Action createShowPreferencesAction() { + Action showPreferences = + new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) { + public void actionPerformed(ActionEvent arg0) { + LogPanel logPanel = logui.getCurrentLogPanel(); - private Action createCustomExpressionPanelAction() { - final JDialog dialog = new JDialog(logui, "Define tab", true); - dialog.getContentPane().add(getCustomExpressionPanel()); - dialog.setLocationRelativeTo(null); - dialog.pack(); + if (logPanel != null) { + logPanel.showPreferences(); + } + } + }; - Action createExpressionPanel = - new AbstractAction("", ChainsawIcons.ICON_HELP) { - public void actionPerformed(ActionEvent arg0) { - LogPanel.centerAndSetVisible(dialog); - } - }; + showPreferences.putValue( + Action.SHORT_DESCRIPTION, "Tab Preferences..."); - createExpressionPanel.putValue( - Action.SHORT_DESCRIPTION, "Create tab from expression... "); + // TODO think of good mnemonics and HotKey for this action + return showPreferences; + } - // TODO think of good mnemonics and HotKey for this action - return createExpressionPanel; - } + private Action createCustomExpressionPanelAction() { + final JDialog dialog = new JDialog(logui, "Define tab", true); + dialog.getContentPane().add(getCustomExpressionPanel()); + dialog.setLocationRelativeTo(null); + dialog.pack(); - private Action createShowColorPanelAction() { - Action showColorPanel = - new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) { - public void actionPerformed(ActionEvent arg0) { - LogPanel logPanel = logui.getCurrentLogPanel(); + Action createExpressionPanel = + new AbstractAction("", ChainsawIcons.ICON_HELP) { + public void actionPerformed(ActionEvent arg0) { + LogPanel.centerAndSetVisible(dialog); + } + }; - if (logPanel != null) { - logPanel.showColorPreferences(); - } - } - }; - - showColorPanel.putValue( - Action.SHORT_DESCRIPTION, "Color settings..."); - - // TODO think of good mnemonics and HotKey for this action - return showColorPanel; - } - - /** - * @return - */ - private Action createShowReceiversAction() { - final Action action = - new AbstractAction("Show Receivers") { - public void actionPerformed(ActionEvent arg0) { - logui.getApplicationPreferenceModel().setReceivers( - !logui.getApplicationPreferenceModel().isReceivers()); - } - }; - - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E); - action.putValue( - Action.SHORT_DESCRIPTION, - "Shows the currently configured Log4j Receivers"); - action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F6")); - action.putValue( - Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT)); - toggleShowReceiversCheck.setAction(action); - - return action; - } - - private Action createToggleDetailPaneAction() { - Action action = - new AbstractAction("Show Detail Pane") { - public void actionPerformed(ActionEvent evt) { - LogPanel logPanel = logui.getCurrentLogPanel(); - - if (logPanel == null) { - return; - } - - logPanel.toggleDetailVisible(); - } - }; + createExpressionPanel.putValue( + Action.SHORT_DESCRIPTION, "Create tab from expression... "); - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_D); - action.putValue( - Action.ACCELERATOR_KEY, - KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - action.putValue(Action.SHORT_DESCRIPTION, "Hides/Shows the Detail Pane"); - action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.INFO)); + // TODO think of good mnemonics and HotKey for this action + return createExpressionPanel; + } - return action; - } + private Action createShowColorPanelAction() { + Action showColorPanel = + new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) { + public void actionPerformed(ActionEvent arg0) { + LogPanel logPanel = logui.getCurrentLogPanel(); - private Action createToggleToolbarAction() { - /** - * -== Begin of Show/Hide toolbar action - */ - final Action action = - new AbstractAction("Show Toolbar") { - public void actionPerformed(ActionEvent e) { - logui.getApplicationPreferenceModel().setToolbar( - !logui.getApplicationPreferenceModel().isToolbar()); - } - }; - - action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); - - return action; - } - - private void createToolbar() { - Insets buttonMargins = new Insets(1, 1, 1, 1); - - FileMenu menu = (FileMenu) menuBar.getMenu(0); - - JButton fileOpenButton = new SmallButton(menu.getLog4JFileOpenAction()); - fileOpenButton.setMargin(buttonMargins); - - JButton fileSaveButton = new SmallButton(menu.getFileSaveAction()); - fileSaveButton.setMargin(buttonMargins); - - fileOpenButton.setText(""); - fileSaveButton.setText(""); - - toolbar.add(fileOpenButton); - toolbar.add(fileSaveButton); - toolbar.addSeparator(); - - pauseButton.setAction(pauseAction); - pauseButton.setText(""); - - // pauseButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F12"),pauseAction.getValue(Action.NAME) ); - pauseButton.getActionMap().put( - pauseAction.getValue(Action.NAME), pauseAction); - - toggleCyclicButton.setAction(changeModelAction); - toggleCyclicButton.setText(null); - - detailPaneButton.setAction(toggleDetailPaneAction); - detailPaneButton.setText(null); - detailPaneButton.getActionMap().put( - toggleDetailPaneAction.getValue(Action.NAME), toggleDetailPaneAction); - detailPaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( - KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), - toggleDetailPaneAction.getValue(Action.NAME)); - - logTreePaneButton.setAction(toggleLogTreeAction); - logTreePaneButton.getActionMap().put( - toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction); - logTreePaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( - KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), - toggleLogTreeAction.getValue(Action.NAME)); - logTreePaneButton.setText(null); - - scrollToBottomButton.setAction(toggleScrollToBottomAction); - scrollToBottomButton.getActionMap().put( - toggleScrollToBottomAction.getValue(Action.NAME), toggleScrollToBottomAction); - scrollToBottomButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( - KeyStroke.getKeyStroke(KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), - toggleScrollToBottomAction.getValue(Action.NAME)); - scrollToBottomButton.setText(null); - - SmallButton prefsButton = new SmallButton(showPreferencesAction); - SmallButton undockButton = new SmallButton(undockAction); - undockButton.setText(""); - - toolbar.add(undockButton); - toolbar.add(pauseButton); - toolbar.add(toggleCyclicButton); - toolbar.addSeparator(); - toolbar.add(detailPaneButton); - toolbar.add(logTreePaneButton); - toolbar.add(scrollToBottomButton); - toolbar.add(prefsButton); - toolbar.addSeparator(); - - toolbar.add(clearButton); - clearButton.setAction(clearAction); - clearButton.setText(""); - toolbar.addSeparator(); - - showReceiversButton.setText(null); - toolbar.add(showReceiversButton); - - toolbar.add(Box.createHorizontalGlue()); - - toolbar.setMargin(buttonMargins); - toolbar.setFloatable(false); - } - - private Action createUndockAction() { - Action action = - new AbstractAction("Undock", ChainsawIcons.ICON_UNDOCK) { - public void actionPerformed(ActionEvent arg0) { - LogPanel logPanel = logui.getCurrentLogPanel(); - - if (logPanel != null) { - logPanel.undock(); - } - } - }; - - action.putValue( - Action.SHORT_DESCRIPTION, - "Undocks the current Log panel into its own window"); - - // TODO think of some mnemonics and HotKeys for this action - return action; - } - - private void scanState() { - toggleStatusBarCheck.setSelected(logui.isStatusBarVisible()); - toggleShowReceiversCheck.setSelected( - logui.getApplicationPreferenceModel().isReceivers()); - - logTreePaneButton.setSelected(logui.isLogTreePanelVisible()); - LogPanel panel = logui.getCurrentLogPanel(); - if (panel != null) { - scrollToBottomButton.setSelected(panel.isScrollToBottom()); - toggleDetailMenuItem.setSelected(panel.isDetailVisible()); - } else { - scrollToBottomButton.setSelected(false); - toggleDetailMenuItem.setSelected(false); + if (logPanel != null) { + logPanel.showColorPreferences(); + } + } + }; + + showColorPanel.putValue( + Action.SHORT_DESCRIPTION, "Color settings..."); + + // TODO think of good mnemonics and HotKey for this action + return showColorPanel; } - showReceiversButton.setSelected( - logui.getApplicationPreferenceModel().isReceivers()); - menuShowWelcome.setSelected(logui.getTabbedPane().containsWelcomePanel()); /** - * We get the currently selected LogPanel, and if null, deactivate some - * actions + * @return */ - LogPanel logPanel = logui.getCurrentLogPanel(); - - boolean activateLogPanelActions = true; - - if (logPanel == null) { - activateLogPanelActions = false; - activeTabMenu.setEnabled(false); - toggleWelcomeVisibleAction.setEnabled(true); - detailPaneButton.setSelected(false); - toggleCyclicButton.setSelected(false); - } else { - activeTabMenu.setEnabled(true); - fileMenu.getFileSaveAction().setEnabled(true); - pauseButton.getModel().setSelected(logPanel.isPaused()); - toggleCyclicButton.setSelected(logPanel.isCyclic()); - logui.getStatusBar().setPaused(logPanel.isPaused(), logPanel.getIdentifier()); - toggleCyclicMenuItem.setSelected(logPanel.isCyclic()); - detailPaneButton.getModel().setSelected(logPanel.isDetailVisible()); - toggleLogTreeMenuItem.setSelected(logPanel.isLogTreeVisible()); - toggleScrollToBottomMenuItem.setSelected(logPanel.isScrollToBottom()); + private Action createShowReceiversAction() { + final Action action = + new AbstractAction("Show Receivers") { + public void actionPerformed(ActionEvent arg0) { + logui.getApplicationPreferenceModel().setReceivers( + !logui.getApplicationPreferenceModel().isReceivers()); + } + }; + + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E); + action.putValue( + Action.SHORT_DESCRIPTION, + "Shows the currently configured Log4j Receivers"); + action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F6")); + action.putValue( + Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT)); + toggleShowReceiversCheck.setAction(action); + + return action; } - for (Action logPanelSpecificAction : logPanelSpecificActions) { - logPanelSpecificAction.setEnabled(activateLogPanelActions); - } + private Action createToggleDetailPaneAction() { + Action action = + new AbstractAction("Show Detail Pane") { + public void actionPerformed(ActionEvent evt) { + LogPanel logPanel = logui.getCurrentLogPanel(); - String currentLookAndFeelName = UIManager.getLookAndFeel().getName(); + if (logPanel == null) { + return; + } - for (Object lookAndFeelMenu : lookAndFeelMenus) { - JRadioButtonMenuItem element = (JRadioButtonMenuItem) lookAndFeelMenu; + logPanel.toggleDetailVisible(); + } + }; - if (element.getText().equals(currentLookAndFeelName)) { - element.setSelected(true); - } else { - element.setSelected(false); - } - } - } + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_D); + action.putValue( + Action.ACCELERATOR_KEY, + KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); + action.putValue(Action.SHORT_DESCRIPTION, "Hides/Shows the Detail Pane"); + action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.INFO)); - private Action getFindNextColorizedEventAction() { - final Action action = - new AbstractAction("Find next colorized event") { - public void actionPerformed(ActionEvent e) { - LogPanel p = logui.getCurrentLogPanel(); - if (p != null) { - p.findNextColorizedEvent(); + return action; + } + + private Action createToggleToolbarAction() { + /** + * -== Begin of Show/Hide toolbar action + */ + final Action action = + new AbstractAction("Show Toolbar") { + public void actionPerformed(ActionEvent e) { + logui.getApplicationPreferenceModel().setToolbar( + !logui.getApplicationPreferenceModel().isToolbar()); + } + }; + + action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T); + + return action; + } + + private void createToolbar() { + Insets buttonMargins = new Insets(1, 1, 1, 1); + + FileMenu menu = (FileMenu) menuBar.getMenu(0); + + JButton fileOpenButton = new SmallButton(menu.getLog4JFileOpenAction()); + fileOpenButton.setMargin(buttonMargins); + + JButton fileSaveButton = new SmallButton(menu.getFileSaveAction()); + fileSaveButton.setMargin(buttonMargins); + + fileOpenButton.setText(""); + fileSaveButton.setText(""); + + toolbar.add(fileOpenButton); + toolbar.add(fileSaveButton); + toolbar.addSeparator(); + + pauseButton.setAction(pauseAction); + pauseButton.setText(""); + + // pauseButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F12"),pauseAction.getValue(Action.NAME) ); + pauseButton.getActionMap().put( + pauseAction.getValue(Action.NAME), pauseAction); + + toggleCyclicButton.setAction(changeModelAction); + toggleCyclicButton.setText(null); + + detailPaneButton.setAction(toggleDetailPaneAction); + detailPaneButton.setText(null); + detailPaneButton.getActionMap().put( + toggleDetailPaneAction.getValue(Action.NAME), toggleDetailPaneAction); + detailPaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( + KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), + toggleDetailPaneAction.getValue(Action.NAME)); + + logTreePaneButton.setAction(toggleLogTreeAction); + logTreePaneButton.getActionMap().put( + toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction); + logTreePaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( + KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), + toggleLogTreeAction.getValue(Action.NAME)); + logTreePaneButton.setText(null); + + scrollToBottomButton.setAction(toggleScrollToBottomAction); + scrollToBottomButton.getActionMap().put( + toggleScrollToBottomAction.getValue(Action.NAME), toggleScrollToBottomAction); + scrollToBottomButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( + KeyStroke.getKeyStroke(KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), + toggleScrollToBottomAction.getValue(Action.NAME)); + scrollToBottomButton.setText(null); + + SmallButton prefsButton = new SmallButton(showPreferencesAction); + SmallButton undockButton = new SmallButton(undockAction); + undockButton.setText(""); + + toolbar.add(undockButton); + toolbar.add(pauseButton); + toolbar.add(toggleCyclicButton); + toolbar.addSeparator(); + toolbar.add(detailPaneButton); + toolbar.add(logTreePaneButton); + toolbar.add(scrollToBottomButton); + toolbar.add(prefsButton); + toolbar.addSeparator(); + + toolbar.add(clearButton); + clearButton.setAction(clearAction); + clearButton.setText(""); + toolbar.addSeparator(); + + showReceiversButton.setText(null); + toolbar.add(showReceiversButton); + + toolbar.add(Box.createHorizontalGlue()); + + toolbar.setMargin(buttonMargins); + toolbar.setFloatable(false); + } + + private Action createUndockAction() { + Action action = + new AbstractAction("Undock", ChainsawIcons.ICON_UNDOCK) { + public void actionPerformed(ActionEvent arg0) { + LogPanel logPanel = logui.getCurrentLogPanel(); + + if (logPanel != null) { + logPanel.undock(); + } + } + }; + + action.putValue( + Action.SHORT_DESCRIPTION, + "Undocks the current Log panel into its own window"); + + // TODO think of some mnemonics and HotKeys for this action + return action; + } + + private void scanState() { + toggleStatusBarCheck.setSelected(logui.isStatusBarVisible()); + toggleShowReceiversCheck.setSelected( + logui.getApplicationPreferenceModel().isReceivers()); + + logTreePaneButton.setSelected(logui.isLogTreePanelVisible()); + LogPanel panel = logui.getCurrentLogPanel(); + if (panel != null) { + scrollToBottomButton.setSelected(panel.isScrollToBottom()); + toggleDetailMenuItem.setSelected(panel.isDetailVisible()); + } else { + scrollToBottomButton.setSelected(false); + toggleDetailMenuItem.setSelected(false); + } + showReceiversButton.setSelected( + logui.getApplicationPreferenceModel().isReceivers()); + menuShowWelcome.setSelected(logui.getTabbedPane().containsWelcomePanel()); + + /** + * We get the currently selected LogPanel, and if null, deactivate some + * actions + */ + LogPanel logPanel = logui.getCurrentLogPanel(); + + boolean activateLogPanelActions = true; + + if (logPanel == null) { + activateLogPanelActions = false; + activeTabMenu.setEnabled(false); + toggleWelcomeVisibleAction.setEnabled(true); + detailPaneButton.setSelected(false); + toggleCyclicButton.setSelected(false); + } else { + activeTabMenu.setEnabled(true); + fileMenu.getFileSaveAction().setEnabled(true); + pauseButton.getModel().setSelected(logPanel.isPaused()); + toggleCyclicButton.setSelected(logPanel.isCyclic()); + logui.getStatusBar().setPaused(logPanel.isPaused(), logPanel.getIdentifier()); + toggleCyclicMenuItem.setSelected(logPanel.isCyclic()); + detailPaneButton.getModel().setSelected(logPanel.isDetailVisible()); + toggleLogTreeMenuItem.setSelected(logPanel.isLogTreeVisible()); + toggleScrollToBottomMenuItem.setSelected(logPanel.isScrollToBottom()); + } + + for (Action logPanelSpecificAction : logPanelSpecificActions) { + logPanelSpecificAction.setEnabled(activateLogPanelActions); + } + + String currentLookAndFeelName = UIManager.getLookAndFeel().getName(); + + for (Object lookAndFeelMenu : lookAndFeelMenus) { + JRadioButtonMenuItem element = (JRadioButtonMenuItem) lookAndFeelMenu; + + if (element.getText().equals(currentLookAndFeelName)) { + element.setSelected(true); + } else { + element.setSelected(false); } - } - }; + } + } + + private Action getFindNextColorizedEventAction() { + final Action action = + new AbstractAction("Find next colorized event") { + public void actionPerformed(ActionEvent e) { + LogPanel p = logui.getCurrentLogPanel(); + if (p != null) { + p.findNextColorizedEvent(); + } + } + }; action.putValue(Action.SHORT_DESCRIPTION, "Find the next colorized event from the current location"); action.putValue("enabled", Boolean.TRUE); action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - return action; + return action; } private Action getFindPreviousColorizedEventAction() { - final Action action = - new AbstractAction("Find previous colorized event") { - public void actionPerformed(ActionEvent e) { - LogPanel p = logui.getCurrentLogPanel(); - - if (p != null) { - p.findPreviousColorizedEvent(); - } - } - }; + final Action action = + new AbstractAction("Find previous colorized event") { + public void actionPerformed(ActionEvent e) { + LogPanel p = logui.getCurrentLogPanel(); + + if (p != null) { + p.findPreviousColorizedEvent(); + } + } + }; action.putValue(Action.SHORT_DESCRIPTION, "Find the next colorized event from the current location"); action.putValue("enabled", Boolean.TRUE); action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - return action; + return action; } - private JPanel getCustomExpressionPanel() { - final JPanel panel = new JPanel(new BorderLayout()); - panel.add( - new JLabel("Enter expression for new tab: "), BorderLayout.NORTH); - - final JEditorPane entryField = new JEditorPane(); - entryField.setPreferredSize(new Dimension(350, 75)); - JTextComponentFormatter.applySystemFontAndSize(entryField); - entryField.addKeyListener( - new ExpressionRuleContext(new FilterModel(), entryField)); - panel.add(entryField, BorderLayout.CENTER); - - JButton ok = new JButton(" OK "); - JButton close = new JButton(" Close "); - JPanel lowerPanel = new JPanel(); - lowerPanel.add(ok); - lowerPanel.add(Box.createHorizontalStrut(7)); - lowerPanel.add(close); - panel.add(lowerPanel, BorderLayout.SOUTH); - - ok.addActionListener( - new AbstractAction() { - public void actionPerformed(ActionEvent evt) { - logui.createCustomExpressionLogPanel(entryField.getText()); - SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible( - false); - } - }); + private JPanel getCustomExpressionPanel() { + final JPanel panel = new JPanel(new BorderLayout()); + panel.add( + new JLabel("Enter expression for new tab: "), BorderLayout.NORTH); + + final JEditorPane entryField = new JEditorPane(); + entryField.setPreferredSize(new Dimension(350, 75)); + JTextComponentFormatter.applySystemFontAndSize(entryField); + entryField.addKeyListener( + new ExpressionRuleContext(new FilterModel(), entryField)); + panel.add(entryField, BorderLayout.CENTER); + + JButton ok = new JButton(" OK "); + JButton close = new JButton(" Close "); + JPanel lowerPanel = new JPanel(); + lowerPanel.add(ok); + lowerPanel.add(Box.createHorizontalStrut(7)); + lowerPanel.add(close); + panel.add(lowerPanel, BorderLayout.SOUTH); + + ok.addActionListener( + new AbstractAction() { + public void actionPerformed(ActionEvent evt) { + logui.createCustomExpressionLogPanel(entryField.getText()); + SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible( + false); + } + }); - close.addActionListener( - new AbstractAction() { - public void actionPerformed(ActionEvent evt) { - SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible( - false); - } - }); + close.addActionListener( + new AbstractAction() { + public void actionPerformed(ActionEvent evt) { + SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible( + false); + } + }); - //String expression = JOptionPane.showInputDialog(logui, "Enter expression", "Create custom expression LogPanel", JOptionPane.PLAIN_MESSAGE); - return panel; - } + //String expression = JOptionPane.showInputDialog(logui, "Enter expression", "Create custom expression LogPanel", JOptionPane.PLAIN_MESSAGE); + return panel; + } } http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java index c269cc6..a116894 100644 --- a/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java +++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java @@ -5,9 +5,9 @@ * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -19,15 +19,16 @@ package org.apache.log4j.chainsaw; /** - Chainsaw compatible gui viewers must implement this interface - in order to be opened and configured by the ChainsawAppender class. - - @author Mark Womack -*/ + * Chainsaw compatible gui viewers must implement this interface + * in order to be opened and configured by the ChainsawAppender class. + * + * @author Mark Womack + */ public interface ChainsawViewer { - /** - Called when the viewer should activate. - - @param model The ChainsawAppender model instance the viewer should use. */ - void activateViewer(ChainsawAppender model); + /** + * Called when the viewer should activate. + * + * @param model The ChainsawAppender model instance the viewer should use. + */ + void activateViewer(ChainsawAppender model); } http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/96ebd9ad/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java b/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java index 090bdf9..db4ca8a 100644 --- a/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java +++ b/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java @@ -16,64 +16,58 @@ */ package org.apache.log4j.chainsaw; -import java.awt.Component; - -import javax.swing.BorderFactory; -import javax.swing.JCheckBox; -import javax.swing.JList; -import javax.swing.ListCellRenderer; -import javax.swing.UIManager; +import javax.swing.*; import javax.swing.border.Border; import javax.swing.table.TableColumn; +import java.awt.*; /** * A ListCellRenderer that display a check box if the value * has been "checked". - * + * <p> * Borrowed heavily from the excellent book "Swing, 2nd Edition" by * Matthew Robinson & Pavel Vorobiev. - * - * @author Paul Smith * + * @author Paul Smith */ public abstract class CheckListCellRenderer extends JCheckBox - implements ListCellRenderer { - private final Border noFocusBorder = - BorderFactory.createEmptyBorder(1, 1, 1, 1); + implements ListCellRenderer { + private final Border noFocusBorder = + BorderFactory.createEmptyBorder(1, 1, 1, 1); - /** - * - */ - public CheckListCellRenderer() { - super(); - setOpaque(true); - setBorder(noFocusBorder); - } + /** + * + */ + public CheckListCellRenderer() { + super(); + setOpaque(true); + setBorder(noFocusBorder); + } - /* (non-Javadoc) - * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) - */ - public Component getListCellRendererComponent( - JList list, Object value, int index, boolean isSelected, - boolean cellHasFocus) { - setText(((TableColumn)value).getHeaderValue().toString()); - setBackground( - isSelected ? list.getSelectionBackground() : list.getBackground()); - setForeground( - isSelected ? list.getSelectionForeground() : list.getForeground()); - setFont(list.getFont()); - setBorder( - cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder") - : noFocusBorder); + /* (non-Javadoc) + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + public Component getListCellRendererComponent( + JList list, Object value, int index, boolean isSelected, + boolean cellHasFocus) { + setText(((TableColumn) value).getHeaderValue().toString()); + setBackground( + isSelected ? list.getSelectionBackground() : list.getBackground()); + setForeground( + isSelected ? list.getSelectionForeground() : list.getForeground()); + setFont(list.getFont()); + setBorder( + cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder") + : noFocusBorder); - setSelected(isSelected(value)); - return this; - } + setSelected(isSelected(value)); + return this; + } -/** - * @param value - * @return selected flag - */ -protected abstract boolean isSelected(Object value); + /** + * @param value + * @return selected flag + */ + protected abstract boolean isSelected(Object value); }