Added per-tab preference to not use a search match color in the primary table
Added ability to use single or double quotes to surround multi-word strings in expressions

git-svn-id: https://svn.apache.org/repos/asf/logging/chainsaw/trunk@1034281 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
index 721e634..ad0a58c 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
@@ -75,6 +75,7 @@
     private static final int CONFIGURATION_URL_ENTRY_COUNT = 10;
     private List defaultColumnNames = new ArrayList();
     private boolean defaultColumnsSet;
+    private boolean bypassSearchColors = false;
 
   /**
      * @param listener
@@ -234,6 +235,7 @@
       if (model.isDefaultColumnsSet()) {
         setDefaultColumnNames(model.getDefaultColumnNames());
       }
+      setBypassSearchColors(model.isBypassSearchColors());
     }
 
     //use a lighter version of search color as the delta color
@@ -518,4 +520,12 @@
   public List getDefaultColumnNames() {
     return defaultColumnNames;
   }
+
+  public void setBypassSearchColors(boolean bypassSearchColors) {
+    this.bypassSearchColors = bypassSearchColors;
+  }
+
+  public boolean isBypassSearchColors() {
+    return bypassSearchColors;
+  }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
index 7bdd00d..449266f 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
@@ -1772,7 +1772,7 @@
           if (currentPoint != null) {
             ((TableColorizingRenderer)currentTable.getDefaultRenderer(Object.class)).setUseNormalTimes();
             ((ChainsawCyclicBufferTableModel)currentTable.getModel()).reFilter();
-            setEnabled(false);
+            setEnabled(true);
           }
         }
     });
@@ -4280,6 +4280,7 @@
         private String lastTextToMatch;
 
         public AutoFilterComboBox() {
+            textField.setPreferredSize(getPreferredSize());
             setModel(model);
             setEditor(new AutoFilterEditor());
             ((JTextField)getEditor().getEditorComponent()).getDocument().addDocumentListener(new AutoFilterDocumentListener());
diff --git a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
index 983db9a..b6029ff 100644
--- a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
@@ -431,7 +431,7 @@
         background = applicationPreferenceModel.getSearchBackgroundColor();
         foreground = applicationPreferenceModel.getSearchForegroundColor();
     } else {
-        if (colorizeSearch) {
+        if (colorizeSearch && !applicationPreferenceModel.isBypassSearchColors()) {
           background = loggingEventWrapper.isSearchMatch()?applicationPreferenceModel.getSearchBackgroundColor():loggingEventWrapper.getBackground();
           foreground = loggingEventWrapper.isSearchMatch()?applicationPreferenceModel.getSearchForegroundColor():loggingEventWrapper.getForeground();
         } else {
diff --git a/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java b/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
index dcc4621..95a8b11 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
@@ -46,6 +46,7 @@
 import javax.swing.DefaultComboBoxModel;
 import javax.swing.Icon;
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JColorChooser;
 import javax.swing.JComboBox;
 import javax.swing.JDialog;
@@ -113,8 +114,9 @@
   private Vector alternatingColorDataVector;
   private Vector alternatingColorDataVectorEntry;
   private ApplicationPreferenceModel applicationPreferenceModel;
+  private JCheckBox bypassSearchColorsCheckBox;
 
-    public ColorPanel(final RuleColorizer currentLogPanelColorizer, final FilterModel filterModel,
+  public ColorPanel(final RuleColorizer currentLogPanelColorizer, final FilterModel filterModel,
                       final Map allLogPanelColorizers, final ApplicationPreferenceModel applicationPreferenceModel) {
     super(new BorderLayout());
 
@@ -229,6 +231,9 @@
     southPanel.add(Box.createVerticalStrut(5));
     southPanel.add(Box.createVerticalStrut(5));
     JPanel searchAndAlternatingColorPanel = buildSearchAndAlternatingColorPanel();
+    JPanel bypassSearchColorsPanel = buildBypassSearchColorsPanel();
+    bypassSearchColorsCheckBox.setSelected(applicationPreferenceModel.isBypassSearchColors());
+
     JPanel globalLabelPanel = new JPanel();
     globalLabelPanel.setLayout(new BoxLayout(globalLabelPanel, BoxLayout.X_AXIS));
     JLabel globalLabel = new JLabel("Global colors:");
@@ -236,6 +241,7 @@
     globalLabelPanel.add(Box.createHorizontalGlue());
     southPanel.add(globalLabelPanel);
     southPanel.add(searchAndAlternatingColorPanel);
+    southPanel.add(bypassSearchColorsPanel);
     southPanel.add(Box.createVerticalStrut(5));
     JPanel closePanel = buildClosePanel();
     southPanel.add(closePanel);
@@ -316,6 +322,15 @@
       alternatingColorDataVectorEntry.set(1, applicationPreferenceModel.getAlternatingColorForegroundColor());
   }
 
+  public JPanel buildBypassSearchColorsPanel() {
+    JPanel panel = new JPanel();
+    panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+
+    bypassSearchColorsCheckBox = new JCheckBox("Don't use a search color for matching rows");
+    panel.add(bypassSearchColorsCheckBox);
+    return panel;
+  }
+
   public JPanel buildSearchAndAlternatingColorPanel() {
       JPanel panel = new JPanel();
       panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
@@ -533,6 +548,7 @@
           applyRules(currentRuleSet, colorizer);
           saveSearchColors();
           saveAlternatingColors();
+          saveBypassFlag();
         }
       });
 
@@ -566,6 +582,10 @@
       applicationPreferenceModel.setAlternatingForegroundColor(alternatingColorForegroundColor);
   }
 
+  private void saveBypassFlag() {
+    applicationPreferenceModel.setBypassSearchColors(bypassSearchColorsCheckBox.isSelected());
+  }
+
   JPanel buildUpDownPanel() {
     JPanel panel = new JPanel(new BorderLayout());
     JPanel innerPanel = new JPanel();
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 681cfc0..cf5e053 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,11 @@
 <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>11 Nov 2010</h2>
+<ul>
+<li>Added per-tab preference to not use a search match color in the primary table</li>
+<li>Added ability to use single or double quotes to surround multi-word strings in expressions</li>
+</ul>
 <h2>6 Nov 2010</h2>
 <ul>
 <li>Updated the expression handling logic to no longer require spaces around operators & operands in expressions</li>