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]

Reply via email to