psmith 2003/10/02 20:55:52
Modified: src/java/org/apache/log4j/chainsaw
LogPanelPreferenceModel.java
Log:
Preference model now tracks selected columns.
Revision Changes Path
1.4 +63 -0
jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java
Index: LogPanelPreferenceModel.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanelPreferenceModel.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- LogPanelPreferenceModel.java 2 Oct 2003 08:28:56 -0000 1.3
+++ LogPanelPreferenceModel.java 3 Oct 2003 03:55:52 -0000 1.4
@@ -53,15 +53,18 @@
import org.apache.log4j.chainsaw.prefs.SettingsManager;
+import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
/**
@@ -92,6 +95,7 @@
new PropertyChangeSupport(this);
private String dateFormatPattern = ISO8601;
private boolean levelIcons = true;
+ private Set visibleColumns = new HashSet(ChainsawColumns.getColumnsNames());
/**
* Returns the Date Pattern string for the alternate date formatter.
@@ -154,6 +158,32 @@
public void apply(LogPanelPreferenceModel that) {
setDateFormatPattern(that.getDateFormatPattern());
setLevelIcons(that.isLevelIcons());
+
+ /**
+ * First, iterate and ADD new columns, (this means notifications of adds go out
first
+ * add to the end
+ */
+ for (Iterator iter = that.visibleColumns.iterator(); iter.hasNext();) {
+ String column = (String) iter.next();
+ if(!this.visibleColumns.contains(column)){
+ setColumnVisible(column, true);
+ }
+ }
+ /**
+ * Now go through and apply removals
+ */
+ /**
+ * this copy is needed to stop ConcurrentModificationException
+ */
+ Set thisSet = new HashSet(this.visibleColumns);
+ for (Iterator iter = thisSet.iterator(); iter.hasNext();) {
+ String column = (String) iter.next();
+ if(!that.visibleColumns.contains(column)){
+ setColumnVisible(column, false);
+ }
+ }
+
+
}
/**
@@ -179,5 +209,38 @@
boolean oldVal = this.levelIcons;
this.levelIcons = levelIcons;
propertySupport.firePropertyChange("levelIcons", oldVal, this.levelIcons);
+ }
+
+ /**
+ * Returns true if the named column should be made visible otherwise
+ * false.
+ * @param columnName
+ * @return
+ */
+ public boolean isColumnVisible(String columnName) {
+ return visibleColumns.contains(columnName);
+ }
+
+ public void setColumnVisible(String columnName, boolean isVisible) {
+ boolean oldValue = visibleColumns.contains(columnName);
+ boolean newValue = isVisible;
+
+ if (isVisible) {
+ visibleColumns.add(columnName);
+ } else {
+ visibleColumns.remove(columnName);
+ }
+
+ propertySupport.firePropertyChange(
+ new PropertyChangeEvent(
+ this, "visibleColumns", new Boolean(oldValue), new Boolean(newValue)));
+ }
+
+ /**
+ * Toggles the state between visible, non-visible for a particular Column name
+ * @param string
+ */
+ public void toggleColumn(String column) {
+ setColumnVisible(column, !isColumnVisible(column));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]