psmith 2003/06/17 00:21:19
Modified: src/java/org/apache/log4j/chainsaw
ChainsawToolBarAndMenus.java
Log:
created an internal ReceiverFormatter chain to render specific
receivers differently. For those that are PortBased or AddressBased
then the format of the node in the tree now looks a lot nicer.
Revision Changes Path
1.36 +107 -36
jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
Index: ChainsawToolBarAndMenus.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- ChainsawToolBarAndMenus.java 17 Jun 2003 06:40:17 -0000 1.35
+++ ChainsawToolBarAndMenus.java 17 Jun 2003 07:21:19 -0000 1.36
@@ -55,12 +55,10 @@
package org.apache.log4j.chainsaw;
import java.awt.BorderLayout;
-import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
-import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -96,7 +94,6 @@
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTabbedPane;
-import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
@@ -114,13 +111,10 @@
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.AbstractTableModel;
-import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreeModel;
-import javax.swing.tree.TreeNode;
import org.apache.log4j.LogManager;
import org.apache.log4j.chainsaw.icons.ChainsawIcons;
import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
@@ -128,9 +122,9 @@
import org.apache.log4j.chainsaw.prefs.SettingsListener;
import org.apache.log4j.chainsaw.prefs.SettingsManager;
import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.net.MulticastReceiver;
+import org.apache.log4j.net.AddressBased;
+import org.apache.log4j.net.PortBased;
import org.apache.log4j.net.SocketReceiver;
-import org.apache.log4j.net.UDPReceiver;
import org.apache.log4j.plugins.PluginRegistry;
import org.apache.log4j.plugins.Receiver;
@@ -149,6 +143,7 @@
//~ Instance fields =========================================================
+ final JDialog receiversWindow;
final JTextField findTextField;
private final Action clearAction;
private final Action closeAction;
@@ -182,8 +177,7 @@
private String lastFind = "";
private String levelDisplay = ChainsawConstants.LEVEL_DISPLAY_ICONS;
private final Action[] logPanelSpecificActions;
- final JDialog receiversWindow;
-
+
//~ Constructors ============================================================
ChainsawToolBarAndMenus(final LogUI logui)
@@ -217,9 +211,6 @@
};
}
- void lookAndFeelUpdated() {
- SwingUtilities.updateComponentTreeUI(receiversWindow);
- }
//~ Methods =================================================================
/**
@@ -477,6 +468,11 @@
return toolbar;
}
+ void lookAndFeelUpdated()
+ {
+ SwingUtilities.updateComponentTreeUI(receiversWindow);
+ }
+
private Action createClearAction()
{
final Action action =
@@ -931,11 +927,10 @@
*/
private Action createShowReceiversAction()
{
-
final JTree tree = new JTree(ReceiversTreeModel.create());
-
- tree.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
-
+
+ tree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
tree.setCellRenderer(new ReceiverTreeCellRenderer());
final Container container = receiversWindow.getContentPane();
@@ -1298,37 +1293,61 @@
/**
* DOCUMENT ME!
*
- * @author $author$
+ * @author Paul Smith <[EMAIL PROTECTED]>
* @version $Revision$
*/
public static class ReceiverTreeCellRenderer extends DefaultTreeCellRenderer
{
//~ Instance fields =======================================================
- protected Color m_bkNonSelectionColor;
- protected Color m_bkSelectionColor;
- protected Color m_borderSelectionColor;
- protected Color m_textNonSelectionColor;
- protected Color m_textSelectionColor;
private Icon activeReceiverIcon =
new ImageIcon(ChainsawIcons.ICON_ACTIVE_RECEIVER);
private Icon inactiveReceiverIcon =
new ImageIcon(ChainsawIcons.ICON_INACTIVE_RECEIVER);
private Icon rootIcon = new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT);
- private boolean m_selected;
+ private ReceiverFormatterChain chain;
//~ Constructors ==========================================================
public ReceiverTreeCellRenderer()
{
super();
+ chain = new ReceiverFormatterChain();
+ chain.add(
+ new ReceiverFormatter()
+ {
+ public String formatDetail(Receiver receiver)
+ {
+ if (!(receiver instanceof PortBased))
+ {
+ return null;
+ }
+
+ PortBased portBased = (PortBased) receiver;
+
+ StringBuffer buf = new StringBuffer(receiver.getName());
+
+ if (receiver instanceof AddressBased)
+ {
+ buf.append("::").append(((AddressBased) receiver).getAddress());
+ }
- // m_textSelectionColor = UIManager.getColor("Tree.selectionForeground");
- // m_textNonSelectionColor = UIManager.getColor("Tree.textForeground");
- // m_bkSelectionColor = UIManager.getColor("Tree.selectionBackground");
- // m_bkNonSelectionColor = UIManager.getColor("Tree.textBackground");
- // m_borderSelectionColor =
UIManager.getColor("Tree.selectionBorderColor");
- // setOpaque(false);
+ buf.append("::").append(portBased.getPort()).append(" ").append(
+ "(").append(receiver.isActive() ? "running" : "inactive").append(
+ ")");
+
+ return buf.toString();
+ }
+ });
+
+ chain.add(
+ new ReceiverFormatter()
+ {
+ public String formatDetail(Receiver receiver)
+ {
+ return "(Unknown Type) :: " + receiver;
+ }
+ });
}
//~ Methods ===============================================================
@@ -1361,10 +1380,10 @@
{
setIcon(rootIcon);
}
- else if (obj instanceof SocketReceiver)
+ else if (obj instanceof Receiver)
{
- SocketReceiver receiver = (SocketReceiver) obj;
- setText(receiver.getName() + "::" + receiver.getPort());
+ Receiver receiver = (Receiver) obj;
+ setText(chain.formatDetail(receiver));
if (receiver.isActive())
{
@@ -1377,6 +1396,58 @@
}
return this;
+ }
+
+ //~ Inner Interfaces ======================================================
+
+ private static interface ReceiverFormatter
+ {
+ //~ Methods =============================================================
+
+ /**
+ * Returns a formatted string for the receiver or null if it cannot.
+ * @param receiver
+ * @return
+ */
+ public String formatDetail(Receiver receiver);
+ }
+
+ //~ Inner Classes =========================================================
+
+ private static class ReceiverFormatterChain implements ReceiverFormatter
+ {
+ //~ Instance fields =====================================================
+
+ private Collection collection = new ArrayList();
+
+ //~ Methods =============================================================
+
+ /**
+ * @param formatter
+ */
+ public void add(ReceiverFormatter formatter)
+ {
+ collection.add(formatter);
+ }
+
+ /* (non-Javadoc)
+ * @see
org.apache.log4j.chainsaw.ChainsawToolBarAndMenus.ReceiverTreeCellRenderer.ReceiverFormatter#formatDetail(org.apache.log4j.plugins.Receiver)
+ */
+ public String formatDetail(Receiver receiver)
+ {
+ for (Iterator iter = collection.iterator(); iter.hasNext();)
+ {
+ ReceiverFormatter item = (ReceiverFormatter) iter.next();
+ String detail = item.formatDetail(receiver);
+
+ if (detail != null)
+ {
+ return detail;
+ }
+ }
+
+ return null;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]