You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@logging.apache.org by sd...@apache.org on 2010/04/02 09:07:14 UTC
svn commit: r930178 -
/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
Author: sdeboy
Date: Fri Apr 2 07:07:14 2010
New Revision: 930178
URL: http://svn.apache.org/viewvc?rev=930178&view=rev
Log:
Chainsaw refine focus combobox updates
- ensure entries added to refine focus combobox are inserted at the top of the combobox (and that they are restored after exit & restart in the same order)
Modified:
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java?rev=930178&r1=930177&r2=930178&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/LogPanel.java Fri Apr 2 07:07:14 2010
@@ -986,8 +986,8 @@ public class LogPanel extends DockablePa
Object item = filterCombo.getSelectedItem();
if (item != null && !item.toString().trim().equals("")) {
ExpressionRule.getRule(item.toString());
- //add to the combo box
- filterCombo.addItem(item);
+ //add entry as first row of the combo box
+ filterCombo.insertItemAt(item, 0);
}
//valid expression, reset background color in case we were previously an invalid expression
filterText.setBackground(UIManager.getColor("TextField.background"));
@@ -1684,7 +1684,8 @@ public class LogPanel extends DockablePa
savedVector = (Vector) in.readObject();
for(int i = 0 ; i < savedVector.size() ; i++){
Object item = savedVector.get(i);
- filterCombo.addItem(item);
+ //insert each row at index zero (so last row in vector will be row zero)
+ filterCombo.insertItemAt(item, 0);
}
if (versionNumber > 1) {
//update prefModel columns to include defaults
@@ -3378,6 +3379,7 @@ public class LogPanel extends DockablePa
private AutoFilterComboBoxModel model = new AutoFilterComboBoxModel();
//editor component
private final JTextField textField = new JTextField();
+ private String lastTextToMatch;
public AutoFilterComboBox(Collection entries) {
if (entries != null) {
@@ -3394,17 +3396,23 @@ public class LogPanel extends DockablePa
}
public Vector getModelData() {
- return new Vector(allEntries);
+ //reverse the model order, because it will be un-reversed when we reload it from saved settings
+ Vector vector = new Vector();
+ for (Iterator iter = allEntries.iterator();iter.hasNext();) {
+ vector.insertElementAt(iter.next(), 0);
+ }
+ return vector;
}
private void refilter() {
- //only refilter if we're not bypassing filtering
- if (bypassFiltering) {
+ //only refilter if we're not bypassing filtering AND the text has changed since the last call to refilter
+ String textToMatch = getEditor().getItem().toString();
+ if (bypassFiltering || (lastTextToMatch != null && lastTextToMatch.equals(textToMatch))) {
return;
}
+ lastTextToMatch = textToMatch;
displayedEntries.clear();
bypassFiltering = true;
- String textToMatch = getEditor().getItem().toString();
model.removeAllElements();
List entriesCopy = new ArrayList(allEntries);
for (Iterator iter = entriesCopy.iterator();iter.hasNext();) {
@@ -3501,7 +3509,7 @@ public class LogPanel extends DockablePa
}
bypassFiltering = true;
displayedEntries.add(index, obj);
- allEntries.add(obj);
+ allEntries.add(index, obj);
fireIntervalAdded(this, index, index);
bypassFiltering = false;
refilter();