psmith 2003/06/18 19:37:32 Modified: src/java/org/apache/log4j/chainsaw LogUI.java ReceiverTreeCellRenderer.java ReceiversTreeModel.java Log: If there are no Receivers defined in the PluginRegistry then the Receivers panel is automatically shown on startup (Nice to highlight this fact). The Receivers panel now shows a default node with "No Receivers defined". Also, on startup, if no Receivers are defined, a warning dialog is shown telling you what this means, and pointing you to the Log4j configuration file. This dialog will be eventually replaced with a custom dialog that will allow you dynamically create Receivers with the GUI. Revision Changes Path 1.108 +22 -1 jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/LogUI.java Index: LogUI.java =================================================================== RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/LogUI.java,v retrieving revision 1.107 retrieving revision 1.108 diff -u -r1.107 -r1.108 --- LogUI.java 18 Jun 2003 22:23:20 -0000 1.107 +++ LogUI.java 19 Jun 2003 02:37:32 -0000 1.108 @@ -62,6 +62,7 @@ import org.apache.log4j.net.SocketNodeEventListener; import org.apache.log4j.net.SocketReceiver; import org.apache.log4j.plugins.PluginRegistry; +import org.apache.log4j.plugins.Receiver; import java.awt.BorderLayout; import java.awt.Component; @@ -195,6 +196,7 @@ private static final String STATUS_BAR = "StatusBar"; private static final String COLUMNS_EXTENSION = ".columns"; private static ChainsawSplash splash; + private boolean noReceiversDefined; private JPanel receiversPanel; ChainsawTabbedPane tabbedPane; private JToolBar toolbar; @@ -341,6 +343,12 @@ * layout, table columns, and sets itself viewable. */ public void activateViewer() { + if ( + PluginRegistry.getPlugins( + LogManager.getLoggerRepository(), Receiver.class).size() == 0) { + noReceiversDefined = true; + } + /** * Get all the SocketReceivers and configure a new SocketNodeEventListener * so we can get notified of new Sockets @@ -507,6 +515,19 @@ isGUIFullyInitialized = true; initializationLock.notifyAll(); } + + if (noReceiversDefined) { + SwingUtilities.invokeLater( + new Runnable() { + public void run() { + toggleReceiversPanel(); + JOptionPane.showMessageDialog( + LogUI.this, + "You have no Receivers defined.\n\nYou will not be able to receive events from a Remote source unless you define one in the Log4J configuration file.", + "No Receivers Defined", JOptionPane.WARNING_MESSAGE); + } + }); + } } /** @@ -2081,10 +2102,10 @@ } class TableColumnData implements Serializable { + static final long serialVersionUID = 5350440293110513986L; private String colName; private int index; private int width; - static final long serialVersionUID = 5350440293110513986L; public TableColumnData(String colName, int index, int width) { this.colName = colName; 1.3 +12 -0 jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ReceiverTreeCellRenderer.java Index: ReceiverTreeCellRenderer.java =================================================================== RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ReceiverTreeCellRenderer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ReceiverTreeCellRenderer.java 18 Jun 2003 19:10:22 -0000 1.2 +++ ReceiverTreeCellRenderer.java 19 Jun 2003 02:37:32 -0000 1.3 @@ -116,6 +116,16 @@ chain.add( new Formatter() { public String formatDetail(Object o) { + if( o == ReceiversTreeModel.NoReceiversNode.getUserObject()) { + return o.toString(); + } + return null; + } + }); + + chain.add( + new Formatter() { + public String formatDetail(Object o) { return "(Unknown Type) :: " + o; } }); @@ -145,6 +155,8 @@ } else { setIcon(inactiveReceiverIcon); } + }else if (obj == ReceiversTreeModel.NoReceiversNode.getUserObject()){ + setIcon(null); } return this; 1.2 +18 -12 jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ReceiversTreeModel.java Index: ReceiversTreeModel.java =================================================================== RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/ReceiversTreeModel.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ReceiversTreeModel.java 17 Jun 2003 23:26:48 -0000 1.1 +++ ReceiversTreeModel.java 19 Jun 2003 02:37:32 -0000 1.2 @@ -71,6 +71,7 @@ private ReceiversTreeModel() { super(new DefaultMutableTreeNode("Receivers")); } + static final DefaultMutableTreeNode NoReceiversNode = new DefaultMutableTreeNode("You have no Receivers defined"); /** * Creates a new ReceiversTreeModel by querying the Log4j Plugin Repository @@ -85,21 +86,26 @@ PluginRegistry.getPlugins( LogManager.getLoggerRepository(), Receiver.class); - for (Iterator iter = receivers.iterator(); iter.hasNext();) { - Receiver item = (Receiver) iter.next(); - DefaultMutableTreeNode receiverNode = new DefaultMutableTreeNode(item); + if( receivers.size() == 0){ + + model.getRootNode().add(NoReceiversNode); + }else { + for (Iterator iter = receivers.iterator(); iter.hasNext();) { + Receiver item = (Receiver) iter.next(); + DefaultMutableTreeNode receiverNode = new DefaultMutableTreeNode(item); - if (item instanceof SocketReceiver) { - for ( - Iterator iterator = - ((SocketReceiver) item).getConnectedSocketDetails().iterator(); - iterator.hasNext();) { - Object details = (Object) iterator.next(); - receiverNode.add(new DefaultMutableTreeNode(details)); + if (item instanceof SocketReceiver) { + for ( + Iterator iterator = + ((SocketReceiver) item).getConnectedSocketDetails().iterator(); + iterator.hasNext();) { + Object details = (Object) iterator.next(); + receiverNode.add(new DefaultMutableTreeNode(details)); + } } - } - model.getRootNode().add(receiverNode); + model.getRootNode().add(receiverNode); + } } return model;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]