psmith      2003/10/02 20:56:51

  Modified:    src/java/org/apache/log4j/chainsaw
                        LogPanelPreferencePanel.java
  Log:
  Preference panel now indicates chosen columns, and
  tracks with the underlying preference model.
  
  Revision  Changes    Path
  1.5       +54 -5     
jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
  
  Index: LogPanelPreferencePanel.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LogPanelPreferencePanel.java      2 Oct 2003 23:05:36 -0000       1.4
  +++ LogPanelPreferencePanel.java      3 Oct 2003 03:56:51 -0000       1.5
  @@ -55,6 +55,8 @@
   import java.awt.Dimension;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;
  +import java.awt.event.MouseAdapter;
  +import java.awt.event.MouseEvent;
   import java.beans.PropertyChangeEvent;
   import java.beans.PropertyChangeListener;
   import java.util.Iterator;
  @@ -88,6 +90,7 @@
   import javax.swing.tree.TreeSelectionModel;
   
   import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  +import org.apache.log4j.helpers.LogLog;
   
   
   /**
  @@ -96,6 +99,15 @@
    * @author Paul Smith
    */
   public class LogPanelPreferencePanel extends JPanel {
  +     /**
  +      *
  +      */
  +     private class ModifiableListModel extends DefaultListModel {
  +             public void fireContentsChanged(){
  +                     fireContentsChanged(this,0, this.size());
  +             }
  +
  +     }
     private final LogPanelPreferenceModel committedPreferenceModel;
     private final JLabel titleLabel = new JLabel("Selected Pref Panel");
     private final JPanel mainPanel = new JPanel(new BorderLayout(10, 10));
  @@ -256,6 +268,13 @@
       LogPanelPreferenceModel model = new LogPanelPreferenceModel();
       LogPanelPreferencePanel panel = new LogPanelPreferencePanel(model);
       f.getContentPane().add(panel);
  +    
  +    model.addPropertyChangeListener(new PropertyChangeListener(){
  +
  +             public void propertyChange(PropertyChangeEvent evt) {
  +                     LogLog.warn(evt.toString());
  +                     
  +             }});
       panel.setOkCancelActionListener(
         new ActionListener() {
           public void actionPerformed(ActionEvent e) {
  @@ -392,7 +411,7 @@
         * @author Paul Smith
         *
         */
  -  public class CheckListCellRenderer extends JCheckBox
  +  public abstract class CheckListCellRenderer extends JCheckBox
       implements ListCellRenderer {
       private final Border noFocusBorder =
         BorderFactory.createEmptyBorder(1, 1, 1, 1);
  @@ -422,9 +441,15 @@
           cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder")
                        : noFocusBorder);
   
  -      //             TODO check the model if this is selected
  +      setSelected(isSelected(value));
         return this;
       }
  +
  +     /**
  +      * @param value
  +      * @return
  +      */
  +     protected abstract boolean isSelected(Object value);
     }
   
        /**
  @@ -447,7 +472,7 @@
         final JList columnList = new JList();
         columnList.setVisibleRowCount(10);
   
  -      DefaultListModel listModel = new DefaultListModel();
  +      final ModifiableListModel listModel = new ModifiableListModel();
   
         for (
           Iterator iter = ChainsawColumns.getColumnsNames().iterator();
  @@ -458,7 +483,31 @@
   
         columnList.setModel(listModel);
   
  -      CheckListCellRenderer cellRenderer = new CheckListCellRenderer();
  +      CheckListCellRenderer cellRenderer = new CheckListCellRenderer(){
  +
  +             protected boolean isSelected(Object value) {
  +                     return 
LogPanelPreferencePanel.this.getModel().isColumnVisible(value.toString());
  +             }};
  +             
  +       getModel().addPropertyChangeListener("visibleColumns", new 
PropertyChangeListener(){
  +
  +             public void propertyChange(PropertyChangeEvent evt) {
  +                     listModel.fireContentsChanged();
  +                     
  +             }});
  +        
  +       columnList.addMouseListener(new MouseAdapter(){
  +             public void mouseClicked(MouseEvent e){
  +                     if(e.getClickCount()>1 && (e.getModifiers() & 
MouseEvent.BUTTON1_MASK)>0){
  +                             int i = columnList.locationToIndex(e.getPoint());
  +                             if(i>=0){
  +                                     Object column = listModel.get(i);
  +                                     getModel().toggleColumn(column.toString());
  +                             }
  +                     }else {
  +                     }
  +             }
  +       });
         columnList.setCellRenderer(cellRenderer);
         columnBox.add(new JScrollPane(columnList));
   
  @@ -467,7 +516,7 @@
       }
   
       public String toString() {
  -      return "<html>Columns <i>(Work in progress)</i></html>";
  +      return "Columns";
       }
     }
   }
  
  
  

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

Reply via email to