Added ability to define which columns are displayed by default when a new tab 
is created by clicking the 'Use selected columns as default visible columns' 
button on the logpanel preferences column selection screen
Also updated Welcome panel to make the keyboard shortcut table 100% width


Project: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/commit/345dc273
Tree: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/tree/345dc273
Diff: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/diff/345dc273

Branch: refs/heads/master
Commit: 345dc273ad479534315523a9af79db697ba2c869
Parents: 1d47127
Author: Scott Deboy <[email protected]>
Authored: Thu Nov 4 07:14:03 2010 +0000
Committer: Scott Deboy <[email protected]>
Committed: Thu Nov 4 07:14:03 2010 +0000

----------------------------------------------------------------------
 .../chainsaw/ApplicationPreferenceModel.java    | 23 ++++++++++++++++-
 .../org/apache/log4j/chainsaw/LogPanel.java     | 25 +++++++++++-------
 .../log4j/chainsaw/LogPanelPreferencePanel.java | 23 ++++++++++++++---
 .../org/apache/log4j/chainsaw/WelcomePanel.html | 27 +-------------------
 .../log4j/chainsaw/help/release-notes.html      |  4 +++
 5 files changed, 63 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/345dc273/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java 
b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
index 68e0795..721e634 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
@@ -19,6 +19,8 @@ package org.apache.log4j.chainsaw;
 import java.awt.Color;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Vector;
 
 import javax.swing.UIManager;
@@ -71,8 +73,10 @@ public class ApplicationPreferenceModel {
      */
     private boolean okToRemoveSecurityManager = false;
     private static final int CONFIGURATION_URL_ENTRY_COUNT = 10;
+    private List defaultColumnNames = new ArrayList();
+    private boolean defaultColumnsSet;
 
-    /**
+  /**
      * @param listener
      */
     public void addPropertyChangeListener(PropertyChangeListener listener) {
@@ -227,6 +231,9 @@ public class ApplicationPreferenceModel {
         setAlternatingBackgroundColor(alternatingBackground);
         setAlternatingForegroundColor(alternatingForeground);
       }
+      if (model.isDefaultColumnsSet()) {
+        setDefaultColumnNames(model.getDefaultColumnNames());
+      }
     }
 
     //use a lighter version of search color as the delta color
@@ -497,4 +504,18 @@ public class ApplicationPreferenceModel {
         this.okToRemoveSecurityManager = okToRemoveSecurityManager;
         firePropertyChange("okToRemoveSecurityManager", oldValue, 
this.okToRemoveSecurityManager);
        }
+
+  public void setDefaultColumnNames(List defaultColumnNames) {
+    defaultColumnsSet = true;
+    this.defaultColumnNames.clear();
+    this.defaultColumnNames.addAll(defaultColumnNames);
+  }
+
+  public boolean isDefaultColumnsSet() {
+    return defaultColumnsSet;
+  }
+
+  public List getDefaultColumnNames() {
+    return defaultColumnNames;
+  }
 }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/345dc273/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java 
b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
index 2ff874d..edeec44 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
@@ -227,7 +227,8 @@ public class LogPanel extends DockablePanel implements 
EventBatchListener, Profi
   private final JSplitPane nameTreeAndMainPanelSplit;
   private final LoggerNameTreePanel logTreePanel;
   private final LogPanelPreferenceModel preferenceModel = new 
LogPanelPreferenceModel();
-  private final LogPanelPreferencePanel logPanelPreferencesPanel = new 
LogPanelPreferencePanel(preferenceModel);
+  private ApplicationPreferenceModel applicationPreferenceModel;
+  private final LogPanelPreferencePanel logPanelPreferencesPanel;
   private final FilterModel filterModel = new FilterModel();
   private final RuleColorizer colorizer = new RuleColorizer();
   private final RuleMediator tableRuleMediator = new RuleMediator(false);
@@ -252,7 +253,6 @@ public class LogPanel extends DockablePanel implements 
EventBatchListener, Profi
   private AutoFilterComboBox findCombo;
   private JScrollPane eventsPane;
   private int currentSearchMatchCount;
-  private ApplicationPreferenceModel applicationPreferenceModel;
   private Rule clearTableExpressionRule;
   private int lowerPanelDividerLocation;
   private EventContainer searchModel;
@@ -278,10 +278,11 @@ public class LogPanel extends DockablePanel implements 
EventBatchListener, Profi
    * @param identifier used to load and save settings
    */
   public LogPanel(final ChainsawStatusBar statusBar, final String identifier, 
int cyclicBufferSize,
-                  Map allColorizers, ApplicationPreferenceModel 
applicationPreferenceModel) {
+                  Map allColorizers, final ApplicationPreferenceModel 
applicationPreferenceModel) {
     this.identifier = identifier;
     this.statusBar = statusBar;
     this.applicationPreferenceModel = applicationPreferenceModel;
+    this.logPanelPreferencesPanel = new 
LogPanelPreferencePanel(preferenceModel, applicationPreferenceModel);
     logger.debug("creating logpanel for " + identifier);
 
     setLayout(new BorderLayout());
@@ -1034,9 +1035,12 @@ public class LogPanel extends DockablePanel implements 
EventBatchListener, Profi
           col.setHeaderValue(e.getKey());
 
           if (preferenceModel.addColumn(col)) {
-                 table.addColumn(col);
-              searchTable.addColumn(col);
-                 preferenceModel.setColumnVisible(e.getKey().toString(), true);
+            if (preferenceModel.isColumnVisible(col) || 
!applicationPreferenceModel.isDefaultColumnsSet() || 
applicationPreferenceModel.isDefaultColumnsSet() &&
+                
applicationPreferenceModel.getDefaultColumnNames().contains(col.getHeaderValue()))
 {
+              table.addColumn(col);
+                searchTable.addColumn(col);
+                 preferenceModel.setColumnVisible(e.getKey().toString(), true);
+            }
           }
                        }
                });
@@ -3138,9 +3142,12 @@ public class LogPanel extends DockablePanel implements 
EventBatchListener, Profi
     for (Iterator iter = sortedColumnList.iterator(); iter.hasNext();) {
       TableColumn element = (TableColumn) iter.next();
       if (preferenceModel.addColumn(element)) {
-          table.addColumn(element);
-          searchTable.addColumn(element);
-         preferenceModel.setColumnVisible(element.getHeaderValue().toString(), 
true);
+          if (!applicationPreferenceModel.isDefaultColumnsSet() || 
applicationPreferenceModel.isDefaultColumnsSet() &&
+              
applicationPreferenceModel.getDefaultColumnNames().contains(element.getHeaderValue()))
 {
+            table.addColumn(element);
+            searchTable.addColumn(element);
+            
preferenceModel.setColumnVisible(element.getHeaderValue().toString(), true);
+          }
       }
     }
 

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/345dc273/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java 
b/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
index 6967785..5cd7550 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogPanelPreferencePanel.java
@@ -25,6 +25,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
@@ -33,6 +34,7 @@ import javax.swing.BorderFactory;
 import javax.swing.Box;
 import javax.swing.BoxLayout;
 import javax.swing.ButtonGroup;
+import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JEditorPane;
 import javax.swing.JFrame;
@@ -64,12 +66,14 @@ public class LogPanelPreferencePanel extends 
AbstractPreferencePanel
   private final LogPanelPreferenceModel preferenceModel;
   private final ModifiableListModel columnListModel = new 
ModifiableListModel();
   private static final Logger logger = 
LogManager.getLogger(LogPanelPreferencePanel.class);
+  private ApplicationPreferenceModel appPreferenceModel;
 
   //~ Constructors ============================================================
 
-  public LogPanelPreferencePanel(LogPanelPreferenceModel model)
+  public LogPanelPreferencePanel(LogPanelPreferenceModel model, 
ApplicationPreferenceModel appModel)
   {
     preferenceModel = model;
+    appPreferenceModel = appModel;
     initComponents();
 
     getOkButton().addActionListener(new ActionListener()
@@ -100,7 +104,8 @@ public class LogPanelPreferencePanel extends 
AbstractPreferencePanel
   {
     JFrame f = new JFrame("Preferences Panel Test Bed");
     LogPanelPreferenceModel model = new LogPanelPreferenceModel();
-    LogPanelPreferencePanel panel = new LogPanelPreferencePanel(model);
+    ApplicationPreferenceModel appModel = new ApplicationPreferenceModel();
+    LogPanelPreferencePanel panel = new LogPanelPreferencePanel(model, 
appModel);
     f.getContentPane().add(panel);
 
     model.addPropertyChangeListener(new PropertyChangeListener()
@@ -214,9 +219,21 @@ public class LogPanelPreferencePanel extends 
AbstractPreferencePanel
               }
           }
         });
+      JButton setAsDefaultsButton = new JButton("Use selected columns as 
default visible columns");
+      setAsDefaultsButton.addActionListener(new ActionListener() {
+        public void actionPerformed(ActionEvent actionEvent) {
+          List selectedColumns = new ArrayList();
+          for (int i = 0;i<columnListModel.getSize();i++) {
+            if (preferenceModel.isColumnVisible((TableColumn) 
columnListModel.get(i))) {
+              
selectedColumns.add(((TableColumn)columnListModel.get(i)).getHeaderValue());
+            }
+          }
+          appPreferenceModel.setDefaultColumnNames(selectedColumns);
+        }
+      });
       columnList.setCellRenderer(cellRenderer);
       columnBox.add(new JScrollPane(columnList));
-
+      columnBox.add(setAsDefaultsButton);
       add(columnBox);
       add(Box.createVerticalGlue());
     }

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/345dc273/src/main/resources/org/apache/log4j/chainsaw/WelcomePanel.html
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/log4j/chainsaw/WelcomePanel.html 
b/src/main/resources/org/apache/log4j/chainsaw/WelcomePanel.html
index eafcb52..5ec4933 100644
--- a/src/main/resources/org/apache/log4j/chainsaw/WelcomePanel.html
+++ b/src/main/resources/org/apache/log4j/chainsaw/WelcomePanel.html
@@ -41,107 +41,82 @@
 <tr><td><a href="#FilteringColouring">Filtering and Colouring</a></td></tr>
 </table>
 -->
-<p><table border="0" cellspacing="2" cellpadding="2" >
+<p><table border="0" cellspacing="2" cellpadding="2" width=100%>
 <tr><td colspan="6" class="TableTitle" bgcolor="#000089"><font 
color="white">Hot Keys</font></td></tr>
 <tr valign="top">
        <td nowrap class="HotKey">CMD-LEFT</td>
-       <td width="50" align="center">-</td>
        <td>Activate a tab to the left</td>
     <td nowrap class="HotKey">CTRL-RIGHT</td>
-    <td width="50" align="center">-</td>
     <td>Activate a tab to the right</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">F3</td>
-    <td width="50" align="center">-</td>
     <td>Find Next</td>
     <td nowrap class="HotKey">SHIFT-F3</td>
-    <td width="50" align="center">-</td>
     <td>Find previous</td>
 </tr>
 <tr valign="top">
     <td nowrap class="HotKey">CMD-A</td>
-    <td width="50" align="center">-</td>
     <td>Scroll to top</td>
     <td nowrap class="HotKey">CMD-B</td>
-    <td width="50" align="center">-</td>
     <td>Scroll to bottom</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">CMD-F2 or double-click on a row</td>
-    <td width="50" align="center">-</td>
     <td>Define a 'marker' (add a note to a row)</td>
     <td nowrap class="HotKey">CMD-SHIFT-F2</td>
-    <td width="50" align="center">-</td>
     <td>Clear all markers</td>
 </tr>
 <tr valign="top">
     <td nowrap class="HotKey">F2</td>
-    <td width="50" align="center">-</td>
     <td>Find next marker</td>
     <td nowrap class="HotKey">SHIFT-F2</td>
-    <td width="50" align="center">-</td>
     <td>Find previous marker</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">CMD-F</td>
-    <td width="50" align="center">-</td>
     <td>Set focus in 'find' field</td>
     <td nowrap class="HotKey">CMD-R</td>
-    <td width="50" align="center">-</td>
     <td>Set focus in 'refine focus' field</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">CMD--SHIFT-F</td>
-    <td width="50" align="center">-</td>
     <td>Clear 'find' field</td>
     <td nowrap class="HotKey">CMD-SHIFT-R</td>
-    <td width="50" align="center">-</td>
     <td>Clear 'refine focus' field</td>
 </tr>
 <tr valign="top" >
        <td nowrap class="HotKey">CMD-S</td>
-       <td width="50" align="center">-</td>
        <td>Save displayed events</td>
     <td nowrap class="HotKey">CMD-O</td>
-    <td width="50" align="center">-</td>
     <td>Load file of XML events</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">CMD-BACKSPACE</td>
-    <td width="50" align="center">-</td>
     <td>Purges current panels events</td>
        <td nowrap class="HotKey">F12</td>
-       <td width="50" align="center">-</td>
        <td>Pause display</td>
 </tr>
 <tr valign="top">
        <td nowrap class="HotKey">CMD-D</td>
-       <td width="50" align="center">-</td>
        <td>Show/Hide the Detail pane</td>
        <td nowrap class="HotKey">CMD-T</td>
-       <td width="50" align="center">-</td>
        <td>Show/Hide the Logger Tree pane</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">F1</td>
-    <td width="50" align="center">-</td>
     <td>Hide/Show Welcome Panel/Help page</td>
     <td nowrap class="HotKey">F6</td>
-    <td width="50" align="center">-</td>
     <td>Show Receivers Dialog</td>
 </tr>
 <tr valign="top">
     <td nowrap class="HotKey">CMD-N</td>
-    <td width="50" align="center">-</td>
     <td>Go to next colored row</td>
     <td nowrap class="HotKey">CMD-P</td>
-    <td width="50" align="center">-</td>
     <td>Go to previous colored row</td>
 </tr>
 <tr valign="top" bgcolor="#EEEEEE">
     <td nowrap class="HotKey">CMD-G</td>
-    <td width="50" align="center">-</td>
     <td>Go to line</td>
        <td></td>
        <td></td>

http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/345dc273/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
----------------------------------------------------------------------
diff --git 
a/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html 
b/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
index ed61f2c..3068296 100644
--- a/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
+++ b/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
@@ -10,6 +10,10 @@
 <b>NOTE:</b> The mechanism and format used to persist settings in Chainsaw is 
subject to change.  If you are experiencing problems displaying events in 
Chainsaw, please delete everything in the $user.dir/.chainsaw directory and 
restart Chainsaw.
 <br>
 <h1>2.1</h1>
+<h2>4 Nov 2010</h2>
+<ul>
+<li>Added ability to define which columns are displayed by default when a new 
tab is created by clicking the 'Use selected columns as default visible 
columns' button on the logpanel preferences column selection screen</li>
+</ul>
 <h2>22 Oct 2010</h2>
 <ul>
 <li>Updated keyboard shortcuts to use system-specific option (Apple command 
key, Windows control key)</li>

Reply via email to