psmith 2003/09/03 00:37:19 Modified: src/java/org/apache/log4j/chainsaw LogUI.java NoReceiversWarningPanel.java Log: Updated the dialog displayed when no Receivers are defined. Can now choose either a SocketReceiver or SocketHubReceiver as part of the simple receiver creation process. These 2 are the most probably receivers to be created by new users, so this seems appropriate to have. Revision Changes Path 1.17 +19 -8 jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java Index: LogUI.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- LogUI.java 3 Sep 2003 05:50:01 -0000 1.16 +++ LogUI.java 3 Sep 2003 07:37:19 -0000 1.17 @@ -105,6 +105,7 @@ import java.io.ObjectOutputStream; import java.io.Serializable; +import java.lang.reflect.Method; import java.net.URL; import java.text.NumberFormat; @@ -687,15 +688,25 @@ if (noReceiversWarningPanel.getModel().isManualMode()) { toggleReceiversPanel(); - } else if (noReceiversWarningPanel.getModel().isSimpleSocketMode()) { + } else if (noReceiversWarningPanel.getModel().isSimpleReceiverMode()) { int port = noReceiversWarningPanel.getModel().getSimplePort(); - SocketReceiver simpleSocketReceiver = new SocketReceiver(port); - simpleSocketReceiver.setName("Simple Socket Receiver"); - PluginRegistry.startPlugin(simpleSocketReceiver); - receiversPanel.updateReceiverTreeInDispatchThread(); - getStatusBar().setMessage( - "Simple Socket Receiver created, started, and listening on port " - + port); + Class receiverClass = noReceiversWarningPanel.getModel().getSimpleReceiverClass(); + try { + Receiver simpleReceiver = + (Receiver) receiverClass.newInstance(); + simpleReceiver.setName("Simple Receiver"); + Method portMethod = simpleReceiver.getClass().getMethod("setPort", new Class[] {int.class}); + portMethod.invoke(simpleReceiver, new Object[] {new Integer(port)}); + + PluginRegistry.startPlugin(simpleReceiver); + receiversPanel.updateReceiverTreeInDispatchThread(); + getStatusBar().setMessage( + "Simple Receiver created, started, and listening on port " + + port + " (using " + receiverClass.getName() + ")"); + } catch (Exception e) { + LogLog.error("Error creating Receiver", e); + getStatusBar().setMessage("An error occurred creating your Receiver"); + } } else if (noReceiversWarningPanel.getModel().isLoadConfig()) { final URL url = noReceiversWarningPanel.getModel().getConfigToLoad(); 1.5 +55 -18 jakarta-log4j/src/java/org/apache/log4j/chainsaw/NoReceiversWarningPanel.java Index: NoReceiversWarningPanel.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/NoReceiversWarningPanel.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- NoReceiversWarningPanel.java 2 Sep 2003 01:07:00 -0000 1.4 +++ NoReceiversWarningPanel.java 3 Sep 2003 07:37:19 -0000 1.5 @@ -51,10 +51,7 @@ */ package org.apache.log4j.chainsaw; -import org.apache.log4j.helpers.LogLog; -import org.apache.log4j.net.PortBased; -import org.apache.log4j.net.SocketAppender; - +import java.awt.Component; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -63,9 +60,7 @@ import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; - import java.io.File; - import java.net.MalformedURLException; import java.net.URL; @@ -74,10 +69,13 @@ import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextArea; @@ -86,6 +84,12 @@ import javax.swing.event.ListDataListener; import javax.swing.filechooser.FileFilter; +import org.apache.log4j.helpers.LogLog; +import org.apache.log4j.net.PortBased; +import org.apache.log4j.net.SocketAppender; +import org.apache.log4j.net.SocketHubReceiver; +import org.apache.log4j.net.SocketReceiver; + /** * A dialog panel to inform the user that they do not have @@ -98,8 +102,8 @@ class NoReceiversWarningPanel extends JPanel { private final JComboBox previousConfigs = new JComboBox(); - private final JRadioButton simpleSocket = - new JRadioButton("Let me use a simple SocketReceiver on port:"); + private final JRadioButton simpleReceiver = + new JRadioButton("Let me use a simple Receiver:"); private final JRadioButton justLoadingFile = new JRadioButton("I'm fine thanks, don't worry"); @@ -111,6 +115,7 @@ private final PanelModel model = new PanelModel(); final DefaultComboBoxModel configModel = new DefaultComboBoxModel(); + final DefaultComboBoxModel simpleReceiverModel = new DefaultComboBoxModel(); final DefaultComboBoxModel simplePortModel = new DefaultComboBoxModel(); NoReceiversWarningPanel() { @@ -172,8 +177,8 @@ final ButtonGroup optionGroup = new ButtonGroup(); - simpleSocket.setToolTipText("Creates a SocketReceiver listening on a standard port"); - simpleSocket.setMnemonic('p'); + simpleReceiver.setToolTipText("Creates one of the standard Receivers on one of the standard port"); + simpleReceiver.setMnemonic('p'); searchOption.setToolTipText( "Allows you to choose a Log4J Configuration file that contains Receiver definitions"); @@ -197,7 +202,7 @@ optionGroup.add(searchOption); optionGroup.add(manualOption); optionGroup.add(justLoadingFile); - optionGroup.add(simpleSocket); + optionGroup.add(simpleReceiver); gc.gridy = 3; @@ -320,10 +325,38 @@ GridBagConstraints simpleSocketGC = new GridBagConstraints(); - simpleSocketPanel.add(simpleSocket, simpleSocketGC); + simpleSocketPanel.add(simpleReceiver, simpleSocketGC); final JComboBox socketCombo = new JComboBox(simplePortModel); - simpleSocketPanel.add(socketCombo, simpleSocketGC); + + simpleReceiverModel.addElement(SocketReceiver.class); + simpleReceiverModel.addElement(SocketHubReceiver.class); + + final JComboBox receiverCombo = new JComboBox(simpleReceiverModel); + receiverCombo.setEditable(false); + receiverCombo.setRenderer(new DefaultListCellRenderer() { + public Component getListCellRendererComponent( + JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) + { + Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + if(value instanceof Class) { + Class receiverClass = (Class) value; + JLabel label = (JLabel) c; + String shortenedName = receiverClass.getName().substring(receiverClass.getName().lastIndexOf('.')+1); + label.setText(shortenedName); + } + return c; + } + + }); + + simpleSocketPanel.add(receiverCombo); + simpleSocketPanel.add(new JLabel(" on port ")); + simpleSocketPanel.add(socketCombo, simpleSocketGC); /** * This listener activates/deactivates certain controls based on the current * state of the options @@ -333,8 +366,8 @@ public void actionPerformed(ActionEvent e) { previousConfigs.setEnabled(e.getSource() == searchOption); searchButton.setEnabled(e.getSource() == searchOption); - socketCombo.setEnabled(e.getSource() == simpleSocket); - + socketCombo.setEnabled(e.getSource() == simpleReceiver); + receiverCombo.setEnabled(e.getSource() == simpleReceiver); if (optionGroup.isSelected(searchOption.getModel())) { okButton.setEnabled(isValidConfigURL()); } else { @@ -346,7 +379,7 @@ searchOption.addActionListener(al); manualOption.addActionListener(al); justLoadingFile.addActionListener(al); - simpleSocket.addActionListener(al); + simpleReceiver.addActionListener(al); justLoadingFile.doClick(); @@ -477,14 +510,18 @@ return justLoadingFile.isSelected(); } - boolean isSimpleSocketMode() + boolean isSimpleReceiverMode() { - return simpleSocket.isSelected(); + return simpleReceiver.isSelected(); } int getSimplePort() { return ((PortBased)simplePortModel.getSelectedItem()).getPort(); + } + Class getSimpleReceiverClass() + { + return (Class) simpleReceiverModel.getSelectedItem(); } boolean isLoadConfig() { return searchOption.isSelected();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]