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]