psmith 2003/09/01 20:39:16 Modified: src/java/org/apache/log4j/chainsaw ChainsawToolBarAndMenus.java LogUI.java Log: Changes to menus/toolbar and Log panel so that the Logger Tree can be hidden/shown. Revision Changes Path 1.3 +120 -48 jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java Index: ChainsawToolBarAndMenus.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ChainsawToolBarAndMenus.java 20 Jul 2003 15:41:48 -0000 1.2 +++ ChainsawToolBarAndMenus.java 2 Sep 2003 03:39:16 -0000 1.3 @@ -125,6 +125,7 @@ private final Action pauseAction; private final Action showPreferencesAction; private final Action showReceiversAction; + private final Action toggleLogTreeAction; private final Action toggleDetailPaneAction; private final Action toggleToolbarAction; private final Action undockAction; @@ -148,6 +149,7 @@ private LogUI logui; private final SmallButton clearButton = new SmallButton(); private final SmallToggleButton detailPaneButton = new SmallToggleButton(); + private final SmallToggleButton logTreePaneButton = new SmallToggleButton(); private final SmallToggleButton pauseButton = new SmallToggleButton(); private String lastFind = ""; private String levelDisplay = ChainsawConstants.LEVEL_DISPLAY_ICONS; @@ -168,6 +170,7 @@ showPreferencesAction = createShowPreferencesAction(); lockToolbarAction = createLockableToolbarAction(); toggleToolbarAction = createToggleToolbarAction(); + toggleLogTreeAction = createToggleLogTreeAction(); pauseAction = createPauseAction(); clearAction = createClearAction(); undockAction = createUndockAction(); @@ -179,46 +182,79 @@ new JSlider(JSlider.VERTICAL, 0, 5000, logui.handler.getQueueInterval()); createMenuBar(); createToolbar(); - - panelListener = new ChangeListener() { - public void stateChanged(ChangeEvent e) { - Map m = logui.getPanels(); - if (m !=null) { - Set s = m.entrySet(); - Iterator iter = s.iterator(); - while (iter.hasNext()) { - Map.Entry entry = (Map.Entry)iter.next(); - if (!panelMenuMap.keySet().contains(entry.getKey())) { - panelMenuMap.put(entry.getKey(), getDisplayPanelMenuItem(entry.getKey().toString())); - //default to enabled - panelEnabledMap.put(entry.getKey(), Boolean.TRUE); - showTabs.add((JCheckBoxMenuItem)panelMenuMap.get(entry.getKey())); - } - - boolean entryEnabled = ((Boolean)panelEnabledMap.get(entry.getKey())).booleanValue(); - boolean newEnabled = ((Boolean)entry.getValue()).booleanValue(); - - if (entryEnabled != newEnabled) { - ((JCheckBoxMenuItem)panelMenuMap.get(entry.getKey())).getModel().setEnabled(newEnabled); - panelEnabledMap.put(entry.getKey(), Boolean.valueOf(newEnabled)); - } - } - } - } - }; - + + panelListener = + new ChangeListener() { + public void stateChanged(ChangeEvent e) { + Map m = logui.getPanels(); + + if (m != null) { + Set s = m.entrySet(); + Iterator iter = s.iterator(); + + while (iter.hasNext()) { + Map.Entry entry = (Map.Entry) iter.next(); + + if (!panelMenuMap.keySet().contains(entry.getKey())) { + panelMenuMap.put( + entry.getKey(), + getDisplayPanelMenuItem(entry.getKey().toString())); + + //default to enabled + panelEnabledMap.put(entry.getKey(), Boolean.TRUE); + showTabs.add( + (JCheckBoxMenuItem) panelMenuMap.get(entry.getKey())); + } + + boolean entryEnabled = + ((Boolean) panelEnabledMap.get(entry.getKey())).booleanValue(); + boolean newEnabled = + ((Boolean) entry.getValue()).booleanValue(); + + if (entryEnabled != newEnabled) { + ((JCheckBoxMenuItem) panelMenuMap.get(entry.getKey())).getModel() + .setEnabled(newEnabled); + panelEnabledMap.put( + entry.getKey(), Boolean.valueOf(newEnabled)); + } + } + } + } + }; + logPanelSpecificActions = new Action[] { pauseAction, findNextAction, clearAction, fileMenu.getFileSaveAction(), - toggleDetailPaneAction, showPreferencesAction, undockAction + toggleDetailPaneAction, showPreferencesAction, undockAction, + toggleLogTreeAction }; } /** - * DOCUMENT ME! - * - * @param event DOCUMENT ME! - */ + * @return + */ + private Action createToggleLogTreeAction() { + Action action = + new AbstractAction() { + public void actionPerformed(ActionEvent e) { + if (logui.getCurrentLogPanel() != null) { + logui.getCurrentLogPanel().toggleLogTreePanel(); + } + } + }; + + action.putValue(Action.NAME, "Logger Tree"); + action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Log Tree panel"); + + // TODO find an icon + return action; + } + + /** + * DOCUMENT ME! + * + * @param event DOCUMENT ME! + */ public void loadSettings(LoadSettingsEvent event) { try { levelDisplay = event.getSetting(ChainsawConstants.LEVEL_DISPLAY); @@ -343,7 +379,31 @@ dockShowPrefsAction.putValue( Action.SMALL_ICON, showPreferencesAction.getValue(Action.SMALL_ICON)); + Action dockToggleLogTreeAction = + new AbstractAction() { + public void actionPerformed(ActionEvent e) { + logPanel.toggleLogTreePanel(); + } + }; + + dockToggleLogTreeAction.putValue( + Action.SMALL_ICON, toggleLogTreeAction.getValue(Action.SMALL_ICON)); + + dockToggleLogTreeAction.putValue( + Action.NAME, toggleLogTreeAction.getValue(Action.NAME)); + + dockToggleLogTreeAction.putValue( + Action.SHORT_DESCRIPTION, + toggleLogTreeAction.getValue(Action.SHORT_DESCRIPTION)); + dockToggleLogTreeAction.putValue( + Action.SMALL_ICON, toggleLogTreeAction.getValue(Action.SMALL_ICON)); + toolbar.add(new SmallButton(dockShowPrefsAction)); + + SmallToggleButton toggleLogTreeButton = + new SmallToggleButton(dockToggleLogTreeAction); + toggleLogTreeButton.setSelected(logPanel.isLogTreePanelVisible()); + toolbar.add(toggleLogTreeButton); toolbar.addSeparator(); final Action undockedClearAction = @@ -564,13 +624,17 @@ viewMenu.add(menuUndock); viewMenu.add(pause); - showTabs = new JMenu("Display tabs"); - viewMenu.add(showTabs); + showTabs = new JMenu("Display tabs"); + viewMenu.add(showTabs); JCheckBoxMenuItem toggleDetailMenuItem = new JCheckBoxMenuItem(toggleDetailPaneAction); toggleDetailMenuItem.setSelected(true); + JCheckBoxMenuItem toggleLogTreeMenuItem = + new JCheckBoxMenuItem(toggleLogTreeAction); + toggleLogTreeMenuItem.setSelected(true); + final Action toggleStatusBarAction = new AbstractAction("Show Status bar") { public void actionPerformed(ActionEvent arg0) { @@ -587,6 +651,7 @@ toggleStatusBarCheck.setAction(toggleStatusBarAction); toggleStatusBarCheck.setSelected(true); viewMenu.add(toggleDetailMenuItem); + viewMenu.add(toggleLogTreeMenuItem); viewMenu.add(menuPrefs); viewMenu.addSeparator(); @@ -949,6 +1014,10 @@ KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.ALT_MASK), toggleDetailPaneAction.getValue(Action.NAME)); + logTreePaneButton.setAction(toggleLogTreeAction); + + // logTreePaneButton.setText(null); + // TODO add accelerator to this action SmallButton prefsButton = new SmallButton(showPreferencesAction); SmallButton undockButton = new SmallButton(undockAction); undockButton.setText(""); @@ -956,6 +1025,7 @@ toolbar.add(undockButton); toolbar.add(pauseButton); toolbar.add(detailPaneButton); + toolbar.add(logTreePaneButton); toolbar.add(prefsButton); toolbar.addSeparator(); @@ -1053,6 +1123,7 @@ toggleStatusBarCheck.setSelected(logui.isStatusBarVisible()); toggleShowReceiversCheck.setSelected(logui.isReceiverPanelVisible()); + logTreePaneButton.setSelected(logui.isLogTreePanelVisible()); showReceiversButton.setSelected(logui.isReceiverPanelVisible()); /** @@ -1102,23 +1173,24 @@ } } } - + ChangeListener getPanelListener() { - return panelListener; + return panelListener; } - + private JCheckBoxMenuItem getDisplayPanelMenuItem(final String panelName) { - final JCheckBoxMenuItem item = new JCheckBoxMenuItem(panelName, true); - - final Action action = - new AbstractAction(panelName) { - public void actionPerformed(ActionEvent e) { - logui.displayPanel(panelName, item.isSelected()); - } - }; - item.setAction(action); + final JCheckBoxMenuItem item = new JCheckBoxMenuItem(panelName, true); + + final Action action = + new AbstractAction(panelName) { + public void actionPerformed(ActionEvent e) { + logui.displayPanel(panelName, item.isSelected()); + } + }; + + item.setAction(action); - return item; + return item; } private Action setupFindFieldsAndActions() { 1.12 +57 -3 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java Index: LogUI.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- LogUI.java 2 Sep 2003 01:07:00 -0000 1.11 +++ LogUI.java 2 Sep 2003 03:39:16 -0000 1.12 @@ -75,6 +75,8 @@ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ComponentEvent; +import java.awt.event.ComponentListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; @@ -1332,6 +1334,17 @@ } /** + * @return + */ + public boolean isLogTreePanelVisible() { + if (getCurrentLogPanel() == null) { + return false; + } + + return getCurrentLogPanel().isLogTreePanelVisible(); + } + + /** * LogPanel encapsulates all the necessary bits and pieces of a * floating window of Events coming from a specific Location. * @@ -1372,6 +1385,7 @@ Set noneSet = new HashSet(); Point currentPoint; private final JSplitPane nameTreeAndMainPanelSplit; + private final LoggerNameTreePanel logTreePanel; public LogPanel( final String ident, final EventContainer tableModel, @@ -1383,6 +1397,7 @@ this.table = table; tableModel.addLoggerNameListener(logTreeModel); + logTreePanel = new LoggerNameTreePanel(logTreeModel); levelSet = new HashSet((List) levelMap.get(eventType)); map.put(ChainsawConstants.LEVEL_COL_NAME, levelSet); @@ -1671,8 +1686,6 @@ statusLabelPanel.add(upperPanel, BorderLayout.CENTER); eventsAndStatusPanel.add(statusLabelPanel, BorderLayout.NORTH); - final JPanel logTreePanel = new LoggerNameTreePanel(logTreeModel); - final JPanel detailPanel = new JPanel(new BorderLayout()); //set valueisadjusting if holding down a key - don't process setdetail events @@ -1721,10 +1734,36 @@ nameTreeAndMainPanelSplit.add(lowerPanel); nameTreeAndMainPanelSplit.setOneTouchExpandable(true); nameTreeAndMainPanelSplit.setToolTipText("Still under development...."); - nameTreeAndMainPanelSplit.setDividerLocation(120); + nameTreeAndMainPanelSplit.setDividerLocation(160); add(nameTreeAndMainPanelSplit, BorderLayout.CENTER); + /** + * This listener deals with when the user hides the LogPanel, + * by disabling the use of the splitpane + */ + logTreePanel.addComponentListener( + new ComponentListener() { + public void componentHidden(ComponentEvent e) { + nameTreeAndMainPanelSplit.setEnabled(false); + nameTreeAndMainPanelSplit.setOneTouchExpandable(false); + tbms.stateChange(); + } + + public void componentMoved(ComponentEvent e) { + } + + public void componentResized(ComponentEvent e) { + } + + public void componentShown(ComponentEvent e) { + nameTreeAndMainPanelSplit.setEnabled(true); + nameTreeAndMainPanelSplit.setOneTouchExpandable(true); + nameTreeAndMainPanelSplit.setDividerLocation(-1); + tbms.stateChange(); + } + }); + // add(lowerPanel, BorderLayout.CENTER); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -2171,6 +2210,14 @@ } } + void toggleLogTreePanel() { + LogLog.debug( + "Toggling logPanel, currently isVisible=" + logTreePanel.isVisible()); + logTreePanel.setVisible(!logTreePanel.isVisible()); + LogLog.debug( + "Toggling logPanel, now isVisible=" + logTreePanel.isVisible()); + } + public void saveSettings() { saveColumnSettings(identifier, table.getColumnModel()); colorDisplaySelector.save(); @@ -2356,6 +2403,13 @@ } } } + } + + /** + * @return + */ + public boolean isLogTreePanelVisible() { + return logTreePanel.isVisible(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]