psmith      2003/09/17 21:03:38

  Modified:    src/java/org/apache/log4j/chainsaw LogUI.java
  Log:
  Things that like to react when new Plugins are started/stopped
  are now decoupled from the things that actually
  create/stop them.  Much cleaner.
  
  Revision  Changes    Path
  1.31      +107 -89   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.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- LogUI.java        17 Sep 2003 01:25:23 -0000      1.30
  +++ LogUI.java        18 Sep 2003 04:03:38 -0000      1.31
  @@ -49,22 +49,6 @@
   
   package org.apache.log4j.chainsaw;
   
  -import org.apache.log4j.Level;
  -import org.apache.log4j.LogManager;
  -import org.apache.log4j.Priority;
  -import org.apache.log4j.UtilLoggingLevel;
  -import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  -import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
  -import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
  -import org.apache.log4j.chainsaw.prefs.SettingsListener;
  -import org.apache.log4j.chainsaw.prefs.SettingsManager;
  -import org.apache.log4j.helpers.LogLog;
  -import org.apache.log4j.helpers.OptionConverter;
  -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;
   import java.awt.Dimension;
  @@ -79,20 +63,15 @@
   import java.awt.event.MouseEvent;
   import java.awt.event.WindowAdapter;
   import java.awt.event.WindowEvent;
  -
   import java.beans.PropertyChangeEvent;
   import java.beans.PropertyChangeListener;
  -
   import java.io.BufferedInputStream;
   import java.io.File;
   import java.io.FileInputStream;
   import java.io.IOException;
   import java.io.ObjectInputStream;
  -
   import java.lang.reflect.Method;
  -
   import java.net.URL;
  -
   import java.util.ArrayList;
   import java.util.HashMap;
   import java.util.Iterator;
  @@ -118,6 +97,24 @@
   import javax.swing.event.ChangeListener;
   import javax.swing.event.EventListenerList;
   
  +import org.apache.log4j.Level;
  +import org.apache.log4j.LogManager;
  +import org.apache.log4j.Priority;
  +import org.apache.log4j.UtilLoggingLevel;
  +import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  +import org.apache.log4j.chainsaw.prefs.LoadSettingsEvent;
  +import org.apache.log4j.chainsaw.prefs.SaveSettingsEvent;
  +import org.apache.log4j.chainsaw.prefs.SettingsListener;
  +import org.apache.log4j.chainsaw.prefs.SettingsManager;
  +import org.apache.log4j.helpers.LogLog;
  +import org.apache.log4j.helpers.OptionConverter;
  +import org.apache.log4j.net.SocketNodeEventListener;
  +import org.apache.log4j.plugins.Plugin;
  +import org.apache.log4j.plugins.PluginEvent;
  +import org.apache.log4j.plugins.PluginListener;
  +import org.apache.log4j.plugins.PluginRegistry;
  +import org.apache.log4j.plugins.Receiver;
  +
   
   /**
    * The main entry point for Chainsaw, this class represents the first frame
  @@ -345,6 +342,49 @@
      * layout, table columns, and sets itself viewable.
      */
     public void activateViewer() {
  +    final SocketNodeEventListener socketListener =
  +      new SocketNodeEventListener() {
  +        public void socketOpened(String remoteInfo) {
  +          statusBar.remoteConnectionReceived(remoteInfo);
  +        }
  +
  +        public void socketClosedEvent(Exception e) {
  +          statusBar.setMessage("Collection lost! :: " + e.getMessage());
  +        }
  +      };
  +
  +    PluginListener pluginListener =
  +      new PluginListener() {
  +        public void pluginStarted(PluginEvent e) {
  +          statusBar.setMessage(e.getPlugin().getName() + " started!");
  +        }
  +
  +        Method getSocketNodeEventListenerMethod(Plugin p) {
  +          try {
  +            return p.getClass().getMethod(
  +              "removeSocketNodeEventListener",
  +              new Class[] { SocketNodeEventListener.class });
  +          } catch (Exception e) {
  +            return null;
  +          }
  +        }
  +
  +        public void pluginStopped(PluginEvent e) {
  +          Method method = getSocketNodeEventListenerMethod(e.getPlugin());
  +
  +          if (method != null) {
  +            try {
  +              method.invoke(e.getPlugin(), new Object[] { socketListener });
  +            } catch (Exception ex) {
  +              LogLog.error("Failed to remove SocketNodeEventListener", ex);
  +            }
  +          }
  +               statusBar.setMessage(e.getPlugin().getName() + " stopped!");
  +        }
  +      };
  +
  +    PluginRegistry.addPluginListener(pluginListener);
  +
       getSettingsManager().configure(
         new SettingsListener() {
           public void loadSettings(LoadSettingsEvent event) {
  @@ -400,30 +440,6 @@
   
       initGUI();
   
  -    /**
  -     * Get all the SocketReceivers and configure a new SocketNodeEventListener
  -     * so we can get notified of new Sockets
  -     */
  -    List list =
  -      PluginRegistry.getPlugins(
  -        LogManager.getLoggerRepository(), SocketReceiver.class);
  -    final SocketNodeEventListener socketListener =
  -      new SocketNodeEventListener() {
  -        public void socketOpened(String remoteInfo) {
  -          statusBar.remoteConnectionReceived(remoteInfo);
  -        }
  -
  -        public void socketClosedEvent(Exception e) {
  -          statusBar.setMessage("Collection lost! :: " + e.getMessage());
  -        }
  -      };
  -
  -    for (Iterator iter = list.iterator(); iter.hasNext();) {
  -      SocketReceiver item = (SocketReceiver) iter.next();
  -      LogLog.debug("Adding listener for " + item.getName());
  -      item.addSocketNodeEventListener(socketListener);
  -    }
  -
       List utilList = UtilLoggingLevel.getAllPossibleLevels();
   
       // TODO: Replace the array list creating with the standard way of retreiving 
the Level set. (TBD)
  @@ -553,14 +569,15 @@
         });
   
       pack();
  -    
  -    this.handler.addPropertyChangeListener("dataRate", new PropertyChangeListener(){
   
  -             public void propertyChange(PropertyChangeEvent evt) {
  -                     double dataRate = ((Double)evt.getNewValue()).doubleValue();
  -                     statusBar.setDataRate(dataRate);
  -                     
  -             }});
  +    this.handler.addPropertyChangeListener(
  +      "dataRate",
  +      new PropertyChangeListener() {
  +        public void propertyChange(PropertyChangeEvent evt) {
  +          double dataRate = ((Double) evt.getNewValue()).doubleValue();
  +          statusBar.setDataRate(dataRate);
  +        }
  +      });
   
       getSettingsManager().addSettingsListener(this);
       getSettingsManager().addSettingsListener(getToolBarAndMenus());
  @@ -581,41 +598,43 @@
     }
   
     /**
  -   * Displays a warning dialog about having no Receivers defined
  -   * and allows the user to choose some options for configuration
  -   */
  +    * Displays a warning dialog about having no Receivers defined
  +    * and allows the user to choose some options for configuration
  +    */
     private void showNoReceiversWarningPanel() {
  -     final NoReceiversWarningPanel noReceiversWarningPanel =
  -      new NoReceiversWarningPanel();
  +    final NoReceiversWarningPanel noReceiversWarningPanel =
  +      new NoReceiversWarningPanel();
  +
  +    final SettingsListener sl =
  +      new SettingsListener() {
  +        public void loadSettings(LoadSettingsEvent event) {
  +          int size = event.asInt("SavedConfigs.Size");
  +          Object[] configs = new Object[size];
   
  -     final SettingsListener sl = new SettingsListener() {
  -       public void loadSettings(LoadSettingsEvent event) {
  -             int size = event.asInt("SavedConfigs.Size");
  -             Object[] configs = new Object[size];
  -
  -             for (int i = 0; i < size; i++) {
  -               configs[i] = event.getSetting("SavedConfigs." + i);
  -             }
  -
  -             noReceiversWarningPanel.getModel().setRememberedConfigs(configs);
  -       }
  -
  -       public void saveSettings(SaveSettingsEvent event) {
  -             Object[] configs =
  -               noReceiversWarningPanel.getModel().getRememberedConfigs();
  -             event.saveSetting("SavedConfigs.Size", configs.length);
  -
  -             for (int i = 0; i < configs.length; i++) {
  -               event.saveSetting("SavedConfigs." + i, configs[i].toString());
  -             }
  -       }
  -     };
  -   /**
  -     * This listener sets up the NoReciversWarningPanel and
  -     * loads saves the configs/logfiles
  -     */
  -   getSettingsManager().addSettingsListener(sl);
  -   getSettingsManager().configure(sl);
  +          for (int i = 0; i < size; i++) {
  +            configs[i] = event.getSetting("SavedConfigs." + i);
  +          }
  +
  +          noReceiversWarningPanel.getModel().setRememberedConfigs(configs);
  +        }
  +
  +        public void saveSettings(SaveSettingsEvent event) {
  +          Object[] configs =
  +            noReceiversWarningPanel.getModel().getRememberedConfigs();
  +          event.saveSetting("SavedConfigs.Size", configs.length);
  +
  +          for (int i = 0; i < configs.length; i++) {
  +            event.saveSetting("SavedConfigs." + i, configs[i].toString());
  +          }
  +        }
  +      };
  +
  +    /**
  +         * This listener sets up the NoReciversWarningPanel and
  +         * loads saves the configs/logfiles
  +         */
  +    getSettingsManager().addSettingsListener(sl);
  +    getSettingsManager().configure(sl);
   
       SwingUtilities.invokeLater(
         new Runnable() {
  @@ -666,9 +685,6 @@
   
                 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(
  @@ -690,7 +706,9 @@
                       } catch (Exception e) {
                         LogLog.error("Error initializing Log4j", e);
                       }
  -                    
LogManager.getLoggerRepository().getRootLogger().addAppender(handler);
  +
  +                    LogManager.getLoggerRepository().getRootLogger()
  +                              .addAppender(handler);
   
                       receiversPanel.updateReceiverTreeInDispatchThread();
                     }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to