psmith      2003/09/11 02:45:46

  Modified:    src/java/org/apache/log4j/chainsaw LogPanel.java
  Log:
  Changed the Detial panel layout selector popup menu to use Radio buttons.
  
  Also added a couple of PropertyChange events so that the Event
  detail pane Updating class can be immediately notified when the layout
  changes and render immediately.  Prior to this it required the selected 
  table row to change before the layout change appeared to occur.
  
  Revision  Changes    Path
  1.6       +46 -20    jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
  
  Index: LogPanel.java
  ===================================================================
  RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LogPanel.java     11 Sep 2003 04:59:24 -0000      1.5
  +++ LogPanel.java     11 Sep 2003 09:45:46 -0000      1.6
  @@ -137,6 +137,7 @@
   import javax.swing.JMenuItem;
   import javax.swing.JPanel;
   import javax.swing.JPopupMenu;
  +import javax.swing.JRadioButtonMenuItem;
   import javax.swing.JScrollPane;
   import javax.swing.JSeparator;
   import javax.swing.JSplitPane;
  @@ -437,6 +438,7 @@
       detailPaneUpdater =
         new DetailPaneUpdater(this, detail, (EventContainer) tableModel);
   
  +     addPropertyChangeListener("detailPaneConversionPattern", detailPaneUpdater);
       upperPanel = new JPanel(new BorderLayout());
       upperPanel.setBorder(BorderFactory.createEmptyBorder(2, 5, 2, 0));
   
  @@ -651,23 +653,26 @@
       editDetailPopupMenu.add(editDetailAction);
       editDetailPopupMenu.addSeparator();
   
  -    editDetailPopupMenu.add(
  -      new AbstractAction("Set to Default Layout") {
  -        public void actionPerformed(ActionEvent e) {
  -          setDetailPaneConversionPattern(
  -            DefaultLayoutFactory.getDefaultPatternLayout());
  -        }
  -      });
  -
  -    editDetailPopupMenu.addSeparator();
  -
  -    editDetailPopupMenu.add(
  -      new AbstractAction("Set to TCCLayout") {
  -        public void actionPerformed(ActionEvent e) {
  -          setDetailPaneConversionPattern(
  -            PatternLayout.TTCC_CONVERSION_PATTERN);
  -        }
  -      });
  +     final ButtonGroup layoutGroup = new ButtonGroup();
  +     
  +     JRadioButtonMenuItem defaultLayoutRadio = new JRadioButtonMenuItem( new 
AbstractAction("Set to Default Layout") {
  +       public void actionPerformed(ActionEvent e) {
  +             setDetailPaneConversionPattern(
  +               DefaultLayoutFactory.getDefaultPatternLayout());
  +       }
  +     }       );
  +    editDetailPopupMenu.add(defaultLayoutRadio);
  +    layoutGroup.add(defaultLayoutRadio);
  +     defaultLayoutRadio.setSelected(true);
  +
  +     JRadioButtonMenuItem tccLayoutRadio = new JRadioButtonMenuItem( new 
AbstractAction("Set to TCCLayout") {
  +                     public void actionPerformed(ActionEvent e) {
  +                       setDetailPaneConversionPattern(
  +                             PatternLayout.TTCC_CONVERSION_PATTERN);
  +                     }
  +               });
  +    editDetailPopupMenu.add(tccLayoutRadio);
  +     layoutGroup.add(tccLayoutRadio);
   
       PopupListener editDetailPopupListener =
         new PopupListener(editDetailPopupMenu);
  @@ -1219,8 +1224,12 @@
     }
   
     void setDetailPaneConversionPattern(String conversionPattern) {
  +    String oldPattern = getDetailPaneConversionPattern();
       ((EventDetailLayout) detailPaneLayout).setConversionPattern(
         conversionPattern);
  +    firePropertyChange("detailPaneConversionPattern", oldPattern, 
getDetailPaneConversionPattern());
  +      
  +    
     }
   
     String getDetailPaneConversionPattern() {
  @@ -1668,7 +1677,9 @@
      * @param detailPaneLayout
      */
     public final void setDetailPaneLayout(Layout detailPaneLayout) {
  +     Layout oldLayout = this.detailPaneLayout;
       this.detailPaneLayout = detailPaneLayout;
  +    firePropertyChange("detailPaneLayout", oldLayout, detailPaneLayout);
     }
   
     /**
  @@ -1782,7 +1793,7 @@
      * Thread that periodically checks if the selected row has changed, and if
      * it was, updates the Detail Panel with the detailed Logging information
      */
  -  class DetailPaneUpdater {
  +  class DetailPaneUpdater implements PropertyChangeListener{
       private int selectedRow = -1;
       private int lastRow = -1;
       private final JEditorPane pane;
  @@ -1805,10 +1816,13 @@
         updateDetailPane();
       }
   
  -    private void updateDetailPane() {
  +     private void updateDetailPane(){
  +             updateDetailPane(false);
  +     }
  +    private void updateDetailPane(boolean force) {
         String text = null;
   
  -      if (selectedRow != lastRow) {
  +      if (selectedRow != lastRow || force) {
           if (selectedRow == -1) {
             text = "Nothing selected";
           } else {
  @@ -1844,6 +1858,18 @@
             });
         }
       }
  +
  +     /* (non-Javadoc)
  +      * @see 
java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
  +      */
  +     public void propertyChange(PropertyChangeEvent arg0) {
  +             SwingUtilities.invokeLater(new Runnable(){
  +
  +                     public void run() {
  +                             updateDetailPane(true);
  +                             
  +                     }});
  +     }
     }
   
     class ScrollToBottom extends Thread {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to