psmith 2003/09/11 02:45:46
Modified: src/java/org/apache/log4j/chainsaw LogPanel.java
Log:
Changed the Detial panel layout selector popup menu to use Radio buttons.
Also added a couple of PropertyChange events so that the Event
detail pane Updating class can be immediately notified when the layout
changes and render immediately. Prior to this it required the selected
table row to change before the layout change appeared to occur.
Revision Changes Path
1.6 +46 -20 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
Index: LogPanel.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LogPanel.java 11 Sep 2003 04:59:24 -0000 1.5
+++ LogPanel.java 11 Sep 2003 09:45:46 -0000 1.6
@@ -137,6 +137,7 @@
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
+import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
@@ -437,6 +438,7 @@
detailPaneUpdater =
new DetailPaneUpdater(this, detail, (EventContainer) tableModel);
+ addPropertyChangeListener("detailPaneConversionPattern", detailPaneUpdater);
upperPanel = new JPanel(new BorderLayout());
upperPanel.setBorder(BorderFactory.createEmptyBorder(2, 5, 2, 0));
@@ -651,23 +653,26 @@
editDetailPopupMenu.add(editDetailAction);
editDetailPopupMenu.addSeparator();
- editDetailPopupMenu.add(
- new AbstractAction("Set to Default Layout") {
- public void actionPerformed(ActionEvent e) {
- setDetailPaneConversionPattern(
- DefaultLayoutFactory.getDefaultPatternLayout());
- }
- });
-
- editDetailPopupMenu.addSeparator();
-
- editDetailPopupMenu.add(
- new AbstractAction("Set to TCCLayout") {
- public void actionPerformed(ActionEvent e) {
- setDetailPaneConversionPattern(
- PatternLayout.TTCC_CONVERSION_PATTERN);
- }
- });
+ final ButtonGroup layoutGroup = new ButtonGroup();
+
+ JRadioButtonMenuItem defaultLayoutRadio = new JRadioButtonMenuItem( new
AbstractAction("Set to Default Layout") {
+ public void actionPerformed(ActionEvent e) {
+ setDetailPaneConversionPattern(
+ DefaultLayoutFactory.getDefaultPatternLayout());
+ }
+ } );
+ editDetailPopupMenu.add(defaultLayoutRadio);
+ layoutGroup.add(defaultLayoutRadio);
+ defaultLayoutRadio.setSelected(true);
+
+ JRadioButtonMenuItem tccLayoutRadio = new JRadioButtonMenuItem( new
AbstractAction("Set to TCCLayout") {
+ public void actionPerformed(ActionEvent e) {
+ setDetailPaneConversionPattern(
+ PatternLayout.TTCC_CONVERSION_PATTERN);
+ }
+ });
+ editDetailPopupMenu.add(tccLayoutRadio);
+ layoutGroup.add(tccLayoutRadio);
PopupListener editDetailPopupListener =
new PopupListener(editDetailPopupMenu);
@@ -1219,8 +1224,12 @@
}
void setDetailPaneConversionPattern(String conversionPattern) {
+ String oldPattern = getDetailPaneConversionPattern();
((EventDetailLayout) detailPaneLayout).setConversionPattern(
conversionPattern);
+ firePropertyChange("detailPaneConversionPattern", oldPattern,
getDetailPaneConversionPattern());
+
+
}
String getDetailPaneConversionPattern() {
@@ -1668,7 +1677,9 @@
* @param detailPaneLayout
*/
public final void setDetailPaneLayout(Layout detailPaneLayout) {
+ Layout oldLayout = this.detailPaneLayout;
this.detailPaneLayout = detailPaneLayout;
+ firePropertyChange("detailPaneLayout", oldLayout, detailPaneLayout);
}
/**
@@ -1782,7 +1793,7 @@
* Thread that periodically checks if the selected row has changed, and if
* it was, updates the Detail Panel with the detailed Logging information
*/
- class DetailPaneUpdater {
+ class DetailPaneUpdater implements PropertyChangeListener{
private int selectedRow = -1;
private int lastRow = -1;
private final JEditorPane pane;
@@ -1805,10 +1816,13 @@
updateDetailPane();
}
- private void updateDetailPane() {
+ private void updateDetailPane(){
+ updateDetailPane(false);
+ }
+ private void updateDetailPane(boolean force) {
String text = null;
- if (selectedRow != lastRow) {
+ if (selectedRow != lastRow || force) {
if (selectedRow == -1) {
text = "Nothing selected";
} else {
@@ -1844,6 +1858,18 @@
});
}
}
+
+ /* (non-Javadoc)
+ * @see
java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+ */
+ public void propertyChange(PropertyChangeEvent arg0) {
+ SwingUtilities.invokeLater(new Runnable(){
+
+ public void run() {
+ updateDetailPane(true);
+
+ }});
+ }
}
class ScrollToBottom extends Thread {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]