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]