psmith 2003/12/22 03:01:45
Modified: src/java/org/apache/log4j/chainsaw/receivers
ReceiversPanel.java
Added: src/java/org/apache/log4j/chainsaw/receivers
NewReceiverDialogPanel.java
Log:
Simplified the creation of Receivers by using the PluginPropertyEditor.
Revision Changes Path
1.7 +113 -500
jakarta-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
Index: ReceiversPanel.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ReceiversPanel.java 20 Dec 2003 04:56:26 -0000 1.6
+++ ReceiversPanel.java 22 Dec 2003 11:01:45 -0000 1.7
@@ -49,31 +49,36 @@
package org.apache.log4j.chainsaw.receivers;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.chainsaw.PopupListener;
+import org.apache.log4j.chainsaw.SmallButton;
+import org.apache.log4j.chainsaw.help.HelpManager;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
+import org.apache.log4j.chainsaw.icons.LevelIconFactory;
+import org.apache.log4j.chainsaw.icons.LineIconFactory;
+import org.apache.log4j.chainsaw.messages.MessageCenter;
+import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.net.SocketNodeEventListener;
+import org.apache.log4j.net.SocketReceiver;
+import org.apache.log4j.plugins.Pauseable;
+import org.apache.log4j.plugins.Plugin;
+import org.apache.log4j.plugins.PluginRegistry;
+import org.apache.log4j.plugins.Receiver;
+
import java.awt.BorderLayout;
-import java.awt.Color;
import java.awt.Component;
-import java.awt.Container;
import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.net.URL;
+
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import javax.swing.AbstractAction;
import javax.swing.Action;
@@ -81,13 +86,9 @@
import javax.swing.Box;
import javax.swing.Icon;
import javax.swing.ImageIcon;
-import javax.swing.InputVerifier;
-import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
-import javax.swing.JEditorPane;
import javax.swing.JFrame;
-import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
@@ -95,13 +96,9 @@
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
-import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
-import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
-import javax.swing.event.HyperlinkEvent;
-import javax.swing.event.HyperlinkListener;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
@@ -112,29 +109,6 @@
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.TreePath;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.apache.log4j.chainsaw.PopupListener;
-import org.apache.log4j.chainsaw.SmallButton;
-import org.apache.log4j.chainsaw.help.HelpManager;
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-import org.apache.log4j.chainsaw.icons.LevelIconFactory;
-import org.apache.log4j.chainsaw.icons.LineIconFactory;
-import org.apache.log4j.chainsaw.messages.MessageCenter;
-import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.net.SocketAppender;
-import org.apache.log4j.net.SocketHubAppender;
-import org.apache.log4j.net.SocketHubReceiver;
-import org.apache.log4j.net.SocketNodeEventListener;
-import org.apache.log4j.net.SocketReceiver;
-import org.apache.log4j.net.UDPAppender;
-import org.apache.log4j.net.UDPReceiver;
-import org.apache.log4j.net.XMLSocketReceiver;
-import org.apache.log4j.plugins.Pauseable;
-import org.apache.log4j.plugins.Plugin;
-import org.apache.log4j.plugins.PluginRegistry;
-import org.apache.log4j.plugins.Receiver;
-
/**
* This panel is used to manage all the Receivers configured within Log4j
@@ -156,10 +130,9 @@
new NewReceiverPopupMenu();
private final ReceiverToolbar buttonPanel;
private final Runnable updateReceiverTree;
-
private final JSplitPane splitter = new JSplitPane();
-
- private final PluginPropertyEditorPanel pluginEditorPanel = new
PluginPropertyEditorPanel();
+ private final PluginPropertyEditorPanel pluginEditorPanel =
+ new PluginPropertyEditorPanel();
public ReceiversPanel() {
super();
@@ -215,31 +188,28 @@
}
});
- receiversTree.addTreeSelectionListener(new TreeSelectionListener() {
+ receiversTree.addTreeSelectionListener(
+ new TreeSelectionListener() {
+ public void valueChanged(TreeSelectionEvent e) {
+ TreePath path = e.getNewLeadSelectionPath();
+
+ if (path != null) {
+ DefaultMutableTreeNode node =
+ (DefaultMutableTreeNode) path.getLastPathComponent();
- public void valueChanged(TreeSelectionEvent e)
- {
- TreePath path = e.getNewLeadSelectionPath();
- if (path!=null)
- {
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
- .getLastPathComponent();
-
- if (node != null && node.getUserObject() != null
- && (node.getUserObject() instanceof Plugin))
- {
- Plugin p = (Plugin) node.getUserObject();
- LogLog.debug("plugin=" + p);
- pluginEditorPanel.setPlugin(p);
- }else {
- pluginEditorPanel.setPlugin(null);
+ if (
+ (node != null) && (node.getUserObject() != null)
+ && (node.getUserObject() instanceof Plugin)) {
+ Plugin p = (Plugin) node.getUserObject();
+ LogLog.debug("plugin=" + p);
+ pluginEditorPanel.setPlugin(p);
+ } else {
+ pluginEditorPanel.setPlugin(null);
+ }
}
-
-
}
-
- }});
-
+ });
+
receiversTree.setToolTipText("Allows you to manage Log4j Receivers");
newReceiverButtonAction =
new AbstractAction() {
@@ -312,19 +282,22 @@
Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_S));
shutdownReceiverButtonAction.setEnabled(false);
-
- showReceiverHelpAction = new AbstractAction("Help"){
- public void actionPerformed(ActionEvent e) {
- Receiver receiver = getCurrentlySelectedReceiver();
- if(receiver!=null) {
-
HelpManager.getInstance().showHelpForClass(receiver.getClass());
- }
-
- }};
-
- showReceiverHelpAction.putValue(Action.SMALL_ICON, new
ImageIcon(ChainsawIcons.HELP));
- showReceiverHelpAction.putValue(Action.SHORT_DESCRIPTION, "Displays the
JavaDoc page for this Plugin");
+ showReceiverHelpAction =
+ new AbstractAction("Help") {
+ public void actionPerformed(ActionEvent e) {
+ Receiver receiver = getCurrentlySelectedReceiver();
+
+ if (receiver != null) {
+ HelpManager.getInstance().showHelpForClass(receiver.getClass());
+ }
+ }
+ };
+
+ showReceiverHelpAction.putValue(
+ Action.SMALL_ICON, new ImageIcon(ChainsawIcons.HELP));
+ showReceiverHelpAction.putValue(
+ Action.SHORT_DESCRIPTION, "Displays the JavaDoc page for this Plugin");
startAllAction =
new AbstractAction(
@@ -392,16 +365,15 @@
JComponent component = receiversTree;
JScrollPane pane = new JScrollPane(component);
-
+
splitter.setOrientation(JSplitPane.VERTICAL_SPLIT);
-
+
splitter.setTopComponent(pane);
splitter.setBottomComponent(pluginEditorPanel);
-
+
splitter.setResizeWeight(0.7);
add(buttonPanel, BorderLayout.NORTH);
add(splitter, BorderLayout.CENTER);
-
/**
* This Tree likes to be notified when Socket's are accepted so
@@ -466,6 +438,7 @@
private Receiver getCurrentlySelectedReceiver() {
DefaultMutableTreeNode node =
(DefaultMutableTreeNode) receiversTree.getLastSelectedPathComponent();
+
if (node == null) {
return null;
}
@@ -478,19 +451,22 @@
return null;
}
-
+
private Receiver[] getSelectedReceivers() {
TreePath[] paths = receiversTree.getSelectionPaths();
Collection receivers = new ArrayList();
+
for (int i = 0; i < paths.length; i++) {
TreePath path = paths[i];
- DefaultMutableTreeNode node =(DefaultMutableTreeNode)
path.getLastPathComponent();
- if (node !=null && node.getUserObject() instanceof Receiver) {
+ DefaultMutableTreeNode node =
+ (DefaultMutableTreeNode) path.getLastPathComponent();
+
+ if ((node != null) && node.getUserObject() instanceof Receiver) {
receivers.add(node.getUserObject());
}
}
+
return (Receiver[]) receivers.toArray(new Receiver[0]);
-
}
/**
@@ -619,7 +595,7 @@
public void updateReceiverTreeInDispatchThread() {
LogLog.debug(
"updateReceiverTreeInDispatchThread, should not be needed now");
-
+
// if (SwingUtilities.isEventDispatchThread()) {
// updateReceiverTree.run();
// } else {
@@ -627,6 +603,15 @@
// }
}
+ /* (non-Javadoc)
+ * @see java.awt.Component#setVisible(boolean)
+ */
+ public void setVisible(boolean aFlag) {
+ boolean oldValue = isVisible();
+ super.setVisible(aFlag);
+ firePropertyChange("visible", oldValue, isVisible());
+ }
+
/**
* A popup menu that allows the user to choose which
* style of Receiver to create, which spawns a relevant Dialog
@@ -638,12 +623,12 @@
class NewReceiverPopupMenu extends JPopupMenu {
NewReceiverPopupMenu() {
try {
- final List dialogMapEntryList = createSortedDialogMapEntryList();
+ final List receiverList =
+ ReceiversHelper.getInstance().getKnownReceiverClasses();
String separatorCheck = null;
- for (Iterator iter = dialogMapEntryList.iterator(); iter.hasNext();) {
- final Map.Entry entry = (Entry) iter.next();
- final Class toCreate = (Class) entry.getKey();
+ for (Iterator iter = receiverList.iterator(); iter.hasNext();) {
+ final Class toCreate = (Class) iter.next();
Package thePackage = toCreate.getPackage();
final String name =
toCreate.getName().substring(thePackage.getName().length() + 1);
@@ -662,90 +647,45 @@
add(
new AbstractAction("New " + name + "...") {
public void actionPerformed(ActionEvent e) {
- JDialog dialog = (JDialog) entry.getValue();
- dialog.pack();
-// dialog.setLocationRelativeTo(logui);
- dialog.show();
+ final JDialog dialog = new JDialog((JFrame) null, false);
+
+ try {
+ final NewReceiverDialogPanel panel =
+ NewReceiverDialogPanel.create(toCreate);
+ dialog.getContentPane().add(panel);
+ dialog.pack();
+ SwingHelper.centerOnScreen(dialog);
+
+ panel.getOkPanel().getCancelButton().addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ dialog.dispose();
+ }
+ });
+
+ panel.getOkPanel().getOkButton().addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ dialog.dispose();
+ Plugin plugin = panel.getPlugin();
+ PluginRegistry.startPlugin(plugin);
+ MessageCenter.getInstance().addMessage("Plugin '" +
plugin.getName() + "' started");
+ }
+ });
+ dialog.show();
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ MessageCenter.getInstance().getLogger().error(
+ "Failed to create the new Receiver dialog", e1);
+ }
}
});
}
-
- addSeparator();
-
- Action note =
- new AbstractAction("More coming in future....") {
- public void actionPerformed(ActionEvent e) {
- }
- };
-
- note.setEnabled(false);
-
- add(note);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
-
- /**
- * Creates a Map of Class->CreateReceiverDialog instances
- * which are all the Receivers that can be created via the GUI
- * @return
- * @throws IOException
- */
- private List createSortedDialogMapEntryList() throws IOException {
- final Map dialogMap = new HashMap();
- dialogMap.put(
- SocketReceiver.class,
- new CreateReceiverDialog(
- SocketReceiver.class, "SocketReceiver", "Socket Receiver",
- new SimplePortBasedReceiverDialogPanel(
- SocketReceiver.class, "SocketReceiver", SocketAppender.DEFAULT_PORT)));
-
- dialogMap.put(
- SocketHubReceiver.class,
- new CreateReceiverDialog(
- SocketHubReceiver.class, "SocketHubReceiver", "Socket Hub Receiver",
- new SimplePortBasedReceiverDialogPanel(
- SocketHubReceiver.class, "SocketHubReceiver",
- SocketHubAppender.DEFAULT_PORT)));
-
- dialogMap.put(
- UDPReceiver.class,
- new CreateReceiverDialog(
- UDPReceiver.class, "UDPReceiver", "UDP Receiver",
- new SimplePortBasedReceiverDialogPanel(
- UDPReceiver.class, "UDPReceiver", UDPAppender.DEFAULT_PORT)));
-
- dialogMap.put(
- XMLSocketReceiver.class,
- new CreateReceiverDialog(
- XMLSocketReceiver.class, "XMLSocketReceiver", "XML Socket Receiver
(log4j.dtd)",
- new SimplePortBasedReceiverDialogPanel(
- XMLSocketReceiver.class, "XMLSocketReceiver",
XMLSocketReceiver.DEFAULT_PORT)));
-
- List dialogMapEntryList = new ArrayList();
-
- for (Iterator iter = dialogMap.entrySet().iterator(); iter.hasNext();) {
- dialogMapEntryList.add(iter.next());
- }
-
- /**
- * Sort so it's in Alpha order by map.entry key
- */
- Collections.sort(
- dialogMapEntryList,
- new Comparator() {
- public int compare(Object o1, Object o2) {
- Comparable c1 = ((Class) ((Entry) o1).getKey()).getName();
- Comparable c2 = ((Class) ((Entry) o2).getKey()).getName();
-
- return c1.compareTo(c2);
- }
- });
-
- return dialogMapEntryList;
- }
}
/**
@@ -778,7 +718,7 @@
} else if (getCurrentlySelectedReceiver() != null) {
buildForReceiverNode();
} else {
- return;
+ return;
}
this.invalidate();
@@ -868,237 +808,6 @@
}
/**
- * @author Paul Smith <[EMAIL PROTECTED]>
- *
- */
- private abstract static class AbstractReceiverDialogPanel extends JPanel {
- private boolean valid;
-
- /**
- * @param b
- */
- public void setValid(boolean b) {
- boolean oldValue = valid;
- valid = b;
- firePropertyChange("valid", oldValue, b);
- }
-
- /**
- * @return
- */
- public boolean isValid() {
- return valid;
- }
-
- abstract void createReceiver();
- }
-
- /**
- * Verifies the defaults of a TextField by ensuring
- * it conforms to a valid Port Number.
- *
- * If invalid, the text field is suffixed with " (invalid)"
- * and all the text is selected, effectively
- * prompting the user to enter again.
- *
- * @author Paul Smith <[EMAIL PROTECTED]>
- *
- */
- private static final class PortNumberVerifier extends InputVerifier {
- public boolean verify(JComponent input) {
- if (input instanceof JTextField) {
- JTextField textField = ((JTextField) input);
- boolean valid = validPort(textField.getText());
-
- if (!valid) {
- String invalidString = " (invalid)";
-
- if (!textField.getText().endsWith(invalidString)) {
- textField.setText(textField.getText() + invalidString);
- }
-
- textField.selectAll();
- }
-
- return valid;
- }
-
- return true;
- }
-
- /**
- * Returns true if string is a valid Port identifier.
- *
- * It must be a number, and be >0 and <32768
- * @param string
- * @return true/false
- */
- boolean validPort(String string) {
- try {
- int port = Integer.parseInt(string);
-
- return (port > 0) && (port < 32768);
- } catch (NumberFormatException e) {
- }
-
- return false;
- }
- }
-
- private class CreateReceiverDialog extends JDialog {
- final OkCancelPanel okCancelPanel = new OkCancelPanel();
-
- private CreateReceiverDialog(
- Class receiver, String bundleName, String name,
- final AbstractReceiverDialogPanel entryPanel) throws IOException {
- super((JFrame)null, "Create new Receiver", true);
- setResizable(false);
- getContentPane().setLayout(new GridBagLayout());
-
- GridBagConstraints c = new GridBagConstraints();
-
- Container container = getContentPane();
- URL descriptionResource =
- this.getClass().getClassLoader().getResource(
- "org/apache/log4j/chainsaw/Details_" + bundleName + ".html");
-
- JEditorPane infoArea = new JEditorPane(descriptionResource);
- infoArea.addHyperlinkListener(
- new HyperlinkListener() {
- public void hyperlinkUpdate(HyperlinkEvent e) {
- if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
- HelpManager.getInstance().setHelpURL(e.getURL());
- }
- }
- });
-
- // infoArea.setBorder(BorderFactory.createTitledBorder("Description"));
- infoArea.setOpaque(true);
- infoArea.setEditable(false);
- infoArea.setForeground(Color.black);
- infoArea.setBackground(Color.white);
- infoArea.setPreferredSize(new Dimension(320, 240));
-
- c.fill = GridBagConstraints.BOTH;
- c.anchor = GridBagConstraints.NORTHWEST;
- c.weighty = 0.7;
- c.gridx = 0;
- c.gridy = 0;
- c.weightx = 1.0;
- c.gridwidth = 2;
-
- Box lineBox = Box.createHorizontalBox();
-
- // lineBox.setBorder(BorderFactory.createLineBorder(Color.gray));
- container.add(
- new JScrollPane(
- infoArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
- JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), c);
-
- c.gridy++;
- c.weighty = 0.3;
- c.fill = GridBagConstraints.HORIZONTAL;
- container.add(lineBox, c);
-
- c.gridwidth = 1;
- c.gridx = 0;
- c.weightx = 0.25;
- c.gridy++;
- c.insets = new Insets(10, 5, 10, 5);
- c.anchor = GridBagConstraints.WEST;
-
- container.add(entryPanel, c);
-
- Box lineBox3 = Box.createHorizontalBox();
-
- // lineBox3.setBorder(BorderFactory.createLineBorder(Color.gray));
- c.gridx = 0;
- c.gridwidth = 2;
- c.weighty = 0;
- c.gridy++;
- c.fill = GridBagConstraints.HORIZONTAL;
- c.insets = new Insets(0, 0, 0, 0);
- container.add(lineBox3, c);
-
- c.gridwidth = 2;
- c.gridx = 0;
- c.weighty = 0.0;
- c.gridy++;
- c.anchor = GridBagConstraints.SOUTH;
- c.fill = GridBagConstraints.BOTH;
- container.add(okCancelPanel, c);
-
- Action closeAction =
- new AbstractAction("Cancel") {
- public void actionPerformed(ActionEvent e) {
- hide();
- }
- };
-
- okCancelPanel.setCancelAction(closeAction);
-
- final Action okAction =
- new AbstractAction("Ok") {
- public void actionPerformed(ActionEvent e) {
- entryPanel.createReceiver();
- hide();
- }
- };
-
- okCancelPanel.setOkAction(okAction);
-
- entryPanel.addPropertyChangeListener(
- "valid",
- new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- AbstractReceiverDialogPanel component =
- ((AbstractReceiverDialogPanel) evt.getSource());
- okAction.setEnabled(component.isValid());
- }
- });
-
- getRootPane().registerKeyboardAction(
- closeAction, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
- JComponent.WHEN_IN_FOCUSED_WINDOW);
- }
- }
-
- private static class OkCancelPanel extends JPanel {
- final JButton cancelButton = new JButton("Cancel");
- final JButton okButton = new JButton("Ok");
-
- OkCancelPanel() {
- setLayout(new GridBagLayout());
-
- cancelButton.setDefaultCapable(true);
-
- GridBagConstraints c = new GridBagConstraints();
-
- c.fill = GridBagConstraints.HORIZONTAL;
- c.weightx = 1.0;
-
- add(Box.createHorizontalGlue(), c);
-
- c.insets = new Insets(5, 5, 5, 5);
- c.weightx = 0.0;
- c.fill = GridBagConstraints.NONE;
- c.anchor = GridBagConstraints.SOUTHEAST;
-
- add(okButton, c);
- add(cancelButton, c);
- add(Box.createHorizontalStrut(6));
- }
-
- void setCancelAction(Action a) {
- cancelButton.setAction(a);
- }
-
- void setOkAction(Action a) {
- okButton.setAction(a);
- }
- }
-
- /**
* A simple Panel that has toolbar buttons for restarting,
* playing, pausing, and stoping receivers
*
@@ -1166,100 +875,4 @@
updateActions();
}
}
-
- private class SimplePortBasedReceiverDialogPanel
- extends AbstractReceiverDialogPanel {
- private String receiverName;
- private Class receiverClass;
- final JTextField portNumberEntry = new JTextField(8);
-
- SimplePortBasedReceiverDialogPanel(
- Class receiverClass, String receiverName, int defaultPort) {
- this.receiverClass = receiverClass;
- this.receiverName = receiverName;
-
- JLabel portNumber = new JLabel("Port Number:");
-
- portNumberEntry.setInputVerifier(new PortNumberVerifier());
- portNumberEntry.setText(defaultPort + "");
- portNumberEntry.selectAll();
-
- portNumberEntry.addKeyListener(
- new KeyListener() {
- public void keyTyped(KeyEvent e) {
- validateKeyPress(e);
- }
-
- public void keyPressed(KeyEvent e) {
- validateKeyPress(e);
- }
-
- private void validateKeyPress(KeyEvent e) {
- if (portNumberEntry.getInputVerifier().verify(portNumberEntry)) {
- setValid(true);
- } else {
- setValid(false);
- }
- }
-
- public void keyReleased(KeyEvent e) {
- validateKeyPress(e);
- }
- });
- portNumber.setLabelFor(portNumberEntry);
-
- add(portNumber);
- add(portNumberEntry);
- }
-
- /* (non-Javadoc)
- * @see
org.apache.log4j.chainsaw.ReceiversPanel.AbstractReceiverDialogPanel#createReceiver()
- */
- void createReceiver() {
- int port = Integer.parseInt(portNumberEntry.getText());
- Receiver receiver = null;
-
- try {
- receiver = (Receiver) receiverClass.newInstance();
-
- Method method =
- receiver.getClass().getMethod("setPort", new Class[] { int.class });
-
- if (method != null) {
- method.invoke(receiver, new Object[] { new Integer(port) });
- } else {
- throw new Exception("The Receiver class has no setPort method");
- }
- } catch (Exception e) {
- LogLog.error("Error occurred creating the Receiver", e);
- MessageCenter.getInstance().getLogger().error(
- "Error occurred creating the Receiver ::" + e.getMessage());
-
- return;
- }
-
- String name = receiverName;
- String suffix = "";
- int index = 1;
-
- while (PluginRegistry.pluginNameExists(name + suffix)) {
- suffix = index + "";
- index++;
- }
-
- receiver.setName(name + suffix);
- receiver.setThreshold(Level.DEBUG);
- PluginRegistry.startPlugin(receiver);
- updateReceiverTreeInDispatchThread();
- }
- }
- /* (non-Javadoc)
- * @see java.awt.Component#setVisible(boolean)
- */
- public void setVisible(boolean aFlag) {
- boolean oldValue = isVisible();
- super.setVisible(aFlag);
- firePropertyChange("visible", oldValue, isVisible());
- }
-
}
1.1
jakarta-log4j/src/java/org/apache/log4j/chainsaw/receivers/NewReceiverDialogPanel.java
Index: NewReceiverDialogPanel.java
===================================================================
/*
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "log4j" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation. For more information on the
* Apache Software Foundation, please see <http://www.apache.org/>.
*
*/
package org.apache.log4j.chainsaw.receivers;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import org.apache.log4j.chainsaw.helper.OkCancelPanel;
import org.apache.log4j.net.SocketHubReceiver;
import org.apache.log4j.plugins.Plugin;
import org.apache.log4j.plugins.Receiver;
public class NewReceiverDialogPanel extends JPanel {
private PluginPropertyEditorPanel pluginEditorPanel =
new PluginPropertyEditorPanel();
private OkCancelPanel okPanel = new OkCancelPanel();
private NewReceiverDialogPanel() {
setupComponents();
setupListeners();
}
/**
*
*/
private void setupListeners() {
}
/**
*
*/
private void setupComponents() {
setLayout(new BorderLayout());
add(pluginEditorPanel, BorderLayout.CENTER);
add(okPanel, BorderLayout.SOUTH);
}
public static NewReceiverDialogPanel create(Class receiverClass)
throws Exception {
Receiver receiverInstance = (Receiver) receiverClass.newInstance();
NewReceiverDialogPanel panel = new NewReceiverDialogPanel();
panel.pluginEditorPanel.setPlugin(receiverInstance);
return panel;
}
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
NewReceiverDialogPanel panel =
NewReceiverDialogPanel.create(SocketHubReceiver.class);
JDialog dialog = new JDialog((JFrame) null, true);
dialog.getContentPane().add(panel);
ActionListener al =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
};
panel.okPanel.getOkButton().addActionListener(al);
panel.okPanel.getCancelButton().addActionListener(al);
dialog.pack();
dialog.show();
}
/**
* @return Returns the okPanel.
*/
public final OkCancelPanel getOkPanel() {
return okPanel;
}
/**
*
*/
public Plugin getPlugin() {
return this.pluginEditorPanel.getPlugin();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]