Please find attached a patch file for existing classes, plus some attachments for additional classes for Chainsaw, and the example log4j.xml file that can be used to start it using the Receiver model.
I've verified that after the "jar" target has been run, Chainsaw can start on W2K using the following command(from the root of the jakarta-log4j directory): %JAVA_HOME%\bin\javaw.exe -cp .;log4j-1.3alpha.jar;log4j-chainsaw-1.3alpha.jar;dist\classes org.apache.log4j.chainsaw.Start Notes: ====== 1) Note the new Start class that does the Log4J initialization, I've replaced the Main.main() method with a call to the Start class for legacy support 2) Currently looks for the log4j.xml file using a Classloader.getResource() or asks the user via JFileChooser. I still need to add a strategy to first check for the system property, but that is a pretty minor addition. 3) The LoggingReceiver class is now no longer used (relies on the SocketReceiver being configured to receive events into the local log4j environment) 4) Still only supports a single Chainsaw panel, not sure where the multi-panel support others are working at the moment, but should be easy to integrate. 5) I've taken the liberty of applying the Apache 1.1 licence contained in some of the other files to all the other files, and optimizing the imports. cheers, _________________________ Paul Smith Lawlex Compliance Solutions phone: +61 3 9278 1511 email: [EMAIL PROTECTED]
Index: DetailPanel.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/DetailPanel.java,v retrieving revision 1.1 diff -u -r1.1 DetailPanel.java --- DetailPanel.java 23 Mar 2002 07:51:26 -0000 1.1 +++ DetailPanel.java 27 Feb 2003 22:25:03 -0000 @@ -1,9 +1,52 @@ /* - * Copyright (C) The Apache Software Foundation. All rights reserved. + * ============================================================================ + * The Apache Software License, Version 1.1 + * ============================================================================ * - * This software is published under the terms of the Apache Software - * License version 1.1, a copy of which has been included with this - * distribution in the LICENSE.txt file. */ + * 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; import java.awt.BorderLayout; Index: LoadXMLAction.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoadXMLAction.java,v retrieving revision 1.2 diff -u -r1.2 LoadXMLAction.java --- LoadXMLAction.java 25 Feb 2003 12:49:14 -0000 1.2 +++ LoadXMLAction.java 27 Feb 2003 22:25:03 -0000 @@ -56,7 +56,7 @@ import javax.swing.JFrame; import javax.swing.JOptionPane; -import org.apache.log4j.Category; +import org.apache.log4j.Logger; /** * Encapsulates the action to load an XML file. @@ -68,8 +68,8 @@ extends AbstractAction { /** use to log messages **/ - private static final Category LOG = - Category.getInstance(LoadXMLAction.class); + private static final Logger LOG = + Logger.getLogger(LoadXMLAction.class); /** the parent frame **/ private final JFrame mParent; @@ -92,12 +92,12 @@ * Creates a new <code>LoadXMLAction</code> instance. * * @param aParent the parent frame - * @param aModel the model to add events to + * @param eventSink the eventSink to add events to */ - LoadXMLAction(JFrame aParent, MyTableModel aModel) + LoadXMLAction(JFrame aParent, EventDetailSink eventSink) { mParent = aParent; - mHandler = new XMLFileHandler(aModel); + mHandler = new XMLFileHandler(eventSink); } /** Index: LoggingReceiver.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingReceiver.java,v retrieving revision 1.3 diff -u -r1.3 LoggingReceiver.java --- LoggingReceiver.java 25 May 2002 12:38:02 -0000 1.3 +++ LoggingReceiver.java 27 Feb 2003 22:25:03 -0000 @@ -52,7 +52,7 @@ new ObjectInputStream(mClient.getInputStream()); while (true) { final LoggingEvent event = (LoggingEvent) ois.readObject(); - mModel.addEvent(new EventDetails(event)); + eventSink.addEvent(new EventDetails(event)); } } catch (EOFException e) { LOG.info("Reached EOF, closing connection"); @@ -73,7 +73,7 @@ } /** where to put the events **/ - private final MyTableModel mModel; + private final EventDetailSink eventSink; /** server for listening for connections **/ private final ServerSocket mSvrSock; @@ -81,13 +81,13 @@ /** * Creates a new <code>LoggingReceiver</code> instance. * - * @param aModel model to place put received into + * @param eventSink eventSink to place put received into * @param aPort port to listen on * @throws IOException if an error occurs */ - LoggingReceiver(MyTableModel aModel, int aPort) throws IOException { + LoggingReceiver(EventDetailSink eventSink, int aPort) throws IOException { setDaemon(true); - mModel = aModel; + this.eventSink = eventSink; mSvrSock = new ServerSocket(aPort); } Index: Main.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/Main.java,v retrieving revision 1.4 diff -u -r1.4 Main.java --- Main.java 25 Feb 2003 12:49:14 -0000 1.4 +++ Main.java 27 Feb 2003 22:25:03 -0000 @@ -50,12 +50,11 @@ import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.event.ActionListener; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.io.IOException; -import java.util.Properties; + import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JMenu; @@ -67,8 +66,8 @@ import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; -import org.apache.log4j.Category; -import org.apache.log4j.PropertyConfigurator; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; /** * The main application. @@ -78,12 +77,6 @@ public class Main extends JFrame { - /** the default port number to listen on **/ - private static final int DEFAULT_PORT = 4445; - - /** name of property for port name **/ - public static final String PORT_PROP_NAME = "chainsaw.port"; - /** Window x-position property */ public static final String X_POSITION_PROPERTY = Preferences.PROP_PREFIX + ".x"; @@ -100,95 +93,25 @@ public static final String DETAILS_SEPARATOR_PROPERTY = Preferences.PROP_PREFIX + ".details.separator"; - /** use to log messages **/ - private static final Category LOG = Category.getInstance(Main.class); - private static final Preferences PREFS = Preferences.getInstance(); - private final JSplitPane aDetailsDivider; + private JSplitPane aDetailsDivider; private final MyTableColumnModel mColumnModel; /** * Creates a new <code>Main</code> instance. */ - private Main() { + public Main() { super("CHAINSAW - Log4J Log Viewer"); ExitAction.INSTANCE.addShutdownHook(new Thread(new Shutdown())); - // create the all important model - final MyTableModel model = new MyTableModel(); + // create the all important models + final ChainsawAppender model = ChainsawAppender.getInstance(); mColumnModel = new MyTableColumnModel(model); - //Create the menu bar. - final JMenuBar menuBar = new JMenuBar(); - setJMenuBar(menuBar); - final JMenu menu = new JMenu("File"); - menu.setMnemonic('F'); - menuBar.add(menu); - - try { - final LoadXMLAction lxa = new LoadXMLAction(this, model); - final JMenuItem loadMenuItem = new JMenuItem("Load file..."); - loadMenuItem.setMnemonic('L'); - menu.add(loadMenuItem); - loadMenuItem.addActionListener(lxa); - } catch (NoClassDefFoundError e) { - LOG.info("Missing classes for XML parser", e); - JOptionPane.showMessageDialog( - this, - "XML parser not in classpath - unable to load XML events.", - "CHAINSAW", - JOptionPane.ERROR_MESSAGE); - } catch (Exception e) { - LOG.info("Unable to create the action to load XML files", e); - JOptionPane.showMessageDialog( - this, - "Unable to create a XML parser - unable to load XML events.", - "CHAINSAW", - JOptionPane.ERROR_MESSAGE); - } - - final RecentFilesMenu recent = new RecentFilesMenu(model); - recent.setMnemonic('R'); - menu.add(recent); - PREFS.setRecentFilesMenu(recent); - recent.rebuild(); - - final JMenuItem prefsMenuItem = new JMenuItem("Preferences"); - prefsMenuItem.setMnemonic('P'); - menu.add(prefsMenuItem); - prefsMenuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent ae) { - new PreferencesDialog(Main.this, mColumnModel).show(); - } - }); - - final JMenuItem exitMenuItem = new JMenuItem("Exit"); - exitMenuItem.setMnemonic('x'); - menu.add(exitMenuItem); - exitMenuItem.addActionListener(ExitAction.INSTANCE); - - // Add control panel - final ControlPanel cp = new ControlPanel(model); - getContentPane().add(cp, BorderLayout.NORTH); - - // Create the table - final JTable table = new JTable(model, mColumnModel); - table.setAutoCreateColumnsFromModel(true); - table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - final JScrollPane scrollPane = new JScrollPane(table); - scrollPane.setBorder(BorderFactory.createTitledBorder("Events: ")); - scrollPane.setPreferredSize(new Dimension(900, 300)); - - // Create the details - final JPanel details = new DetailPanel(table, model); - details.setPreferredSize(new Dimension(900, 100)); - - // Add the table and stack trace into a splitter - aDetailsDivider = new JSplitPane(JSplitPane.VERTICAL_SPLIT, - scrollPane, details); - getContentPane().add(aDetailsDivider, BorderLayout.CENTER); + buildMenus(model); + buildComponents(model); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent aEvent) { @@ -199,45 +122,106 @@ loadGuiPrefs(); setVisible(true); - setupReceiver(model); } /** - * Setup recieving messages. - * - * @param aModel a <code>MyTableModel</code> value + * Constructs the JTable used for displaying the Events logs + * @param tableModel + * @param tableColumnModel + * @return */ - private void setupReceiver(MyTableModel aModel) { - int port = DEFAULT_PORT; - final String strRep = System.getProperty(PORT_PROP_NAME); - if (strRep != null) { - try { - port = Integer.parseInt(strRep); - } catch (NumberFormatException nfe) { - LOG.fatal("Unable to parse " + PORT_PROP_NAME + - " property with value " + strRep + "."); - JOptionPane.showMessageDialog( - this, - "Unable to parse port number from '" + strRep + - "', quitting.", - "CHAINSAW", - JOptionPane.ERROR_MESSAGE); - System.exit(1); - } - } + private JTable buildTable(TableModel tableModel, TableColumnModel tableColumnModel) + { + JTable table = new JTable(tableModel, mColumnModel); + table.setAutoCreateColumnsFromModel(true); + table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + return table; + } + + /** + * Constructs all the components required for this frame + * and attaches the ChainsawAppender to components that require it + * @param model + */ + private void buildComponents(ChainsawAppender model) + { + // Add control panel + final ControlPanel cp = new ControlPanel(model.getWrappedModel()); + getContentPane().add(cp, BorderLayout.NORTH); + + // Create the table + final JTable table = buildTable(model, mColumnModel); + final JScrollPane scrollPane = new JScrollPane(table); + scrollPane.setBorder(BorderFactory.createTitledBorder("Events: ")); + scrollPane.setPreferredSize(new Dimension(900, 300)); + + // Create the details + final JPanel details = new DetailPanel(table, model.getWrappedModel()); + details.setPreferredSize(new Dimension(900, 100)); + + // Add the table and stack trace into a splitter + aDetailsDivider = new JSplitPane(JSplitPane.VERTICAL_SPLIT, + scrollPane, details); + getContentPane().add(aDetailsDivider, BorderLayout.CENTER); + + } + + /** + * Initialises the Menu bar for this frame, and bind + * actions + * @param eventSink + */ + private void buildMenus(EventDetailSink eventSink) + { + //Create the menu bar. + final JMenuBar menuBar = new JMenuBar(); + setJMenuBar(menuBar); + final JMenu menu = new JMenu("File"); + menu.setMnemonic('F'); + menuBar.add(menu); + + try { + final LoadXMLAction lxa = new LoadXMLAction(this, eventSink); + final JMenuItem loadMenuItem = new JMenuItem("Load file..."); + loadMenuItem.setMnemonic('L'); + menu.add(loadMenuItem); + loadMenuItem.addActionListener(lxa); + } catch (NoClassDefFoundError e) { + System.err.println("Missing classes for XML parser :" +e ); + JOptionPane.showMessageDialog( + this, + "XML parser not in classpath - unable to load XML events.", + "CHAINSAW", + JOptionPane.ERROR_MESSAGE); + } catch (Exception e) { + System.err.println("Unable to create the action to load XML files:" + e.getMessage()); + JOptionPane.showMessageDialog( + this, + "Unable to create a XML parser - unable to load XML events.", + "CHAINSAW", + JOptionPane.ERROR_MESSAGE); + } + + final RecentFilesMenu recent = new RecentFilesMenu(eventSink); + recent.setMnemonic('R'); + menu.add(recent); + PREFS.setRecentFilesMenu(recent); + recent.rebuild(); + + final JMenuItem prefsMenuItem = new JMenuItem("Preferences"); + prefsMenuItem.setMnemonic('P'); + menu.add(prefsMenuItem); + prefsMenuItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ae) { + new PreferencesDialog(Main.this, mColumnModel).show(); + } + }); + + final JMenuItem exitMenuItem = new JMenuItem("Exit"); + exitMenuItem.setMnemonic('x'); + menu.add(exitMenuItem); + exitMenuItem.addActionListener(ExitAction.INSTANCE); - try { - final LoggingReceiver lr = new LoggingReceiver(aModel, port); - lr.start(); - } catch (IOException e) { - LOG.fatal("Unable to connect to socket server, quiting", e); - JOptionPane.showMessageDialog( - this, - "Unable to create socket on port " + port + ", quitting.", - "CHAINSAW", - JOptionPane.ERROR_MESSAGE); - System.exit(1); - } } private void loadGuiPrefs() { @@ -278,31 +262,18 @@ // static methods //////////////////////////////////////////////////////////////////////////// - - /** initialise log4j **/ - private static void initLog4J() { - final Properties props = new Properties(); - props.setProperty("log4j.rootCategory", "DEBUG, A1"); - props.setProperty("log4j.appender.A1", - "org.apache.log4j.ConsoleAppender"); - props.setProperty("log4j.appender.A1.layout", - "org.apache.log4j.TTCCLayout"); - PropertyConfigurator.configure(props); + private class Shutdown implements Runnable { + public void run() { + saveGuiPrefs(); + } } /** - * The main method. - * - * @param aArgs ignored + * @deprecated, should be started from the Start class + * @param args */ - public static void main(String[] aArgs) { - initLog4J(); - new Main(); + public static void main(String[] args) { + Start.main(args); } - private class Shutdown implements Runnable { - public void run() { - saveGuiPrefs(); - } - } } Index: MyTableColumnModel.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/MyTableColumnModel.java,v retrieving revision 1.1 diff -u -r1.1 MyTableColumnModel.java --- MyTableColumnModel.java 25 Feb 2003 12:51:16 -0000 1.1 +++ MyTableColumnModel.java 27 Feb 2003 22:25:03 -0000 @@ -58,6 +58,7 @@ import javax.swing.table.TableColumn; import org.apache.log4j.Logger; +import javax.swing.table.TableModel; /** @@ -85,14 +86,14 @@ /** Map of TableColumns to PreferenceSets */ private final Map mColPrefMap = new HashMap(); - private final MyTableModel mTableModel; + private final TableModel mTableModel; /** * Construct a MyTableColumnModel. * * @param tableModel table model to work with */ - public MyTableColumnModel(MyTableModel tableModel) { + public MyTableColumnModel(TableModel tableModel) { mTableModel = tableModel; } Index: MyTableModel.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/MyTableModel.java,v retrieving revision 1.4 diff -u -r1.4 MyTableModel.java --- MyTableModel.java 24 Apr 2002 14:41:47 -0000 1.4 +++ MyTableModel.java 27 Feb 2003 22:25:03 -0000 @@ -1,9 +1,51 @@ /* - * Copyright (C) The Apache Software Foundation. All rights reserved. + * ============================================================================ + * The Apache Software License, Version 1.1 + * ============================================================================ * - * This software is published under the terms of the Apache Software - * License version 1.1, a copy of which has been included with this - * distribution in the LICENSE.txt file. */ + * 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; import java.text.DateFormat; @@ -14,9 +56,11 @@ import java.util.List; import java.util.SortedSet; import java.util.TreeSet; + import javax.swing.table.AbstractTableModel; -import org.apache.log4j.Priority; + import org.apache.log4j.Category; +import org.apache.log4j.Priority; /** * Represents a list of <code>EventDetails</code> objects that are sorted on @@ -25,7 +69,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Oliver Burn</a> */ class MyTableModel - extends AbstractTableModel + extends AbstractTableModel implements EventDetailSink { /** used to log messages **/ Index: RecentFilesMenu.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/RecentFilesMenu.java,v retrieving revision 1.1 diff -u -r1.1 RecentFilesMenu.java --- RecentFilesMenu.java 25 Feb 2003 12:51:16 -0000 1.1 +++ RecentFilesMenu.java 27 Feb 2003 22:25:03 -0000 @@ -68,7 +68,7 @@ public class RecentFilesMenu extends JMenu { /** Logger for class */ private static final Logger LOG = Logger.getLogger(RecentFilesMenu.class); - private final MyTableModel mModel; + private final EventDetailSink eventSink; private final XMLFileHandler mHandler; /** @@ -77,10 +77,10 @@ * * @param model the table model */ - public RecentFilesMenu(MyTableModel model) { + public RecentFilesMenu(EventDetailSink eventSink) { super("Recent Files"); - mModel = model; - mHandler = new XMLFileHandler(model); + this.eventSink = eventSink; + mHandler = new XMLFileHandler(eventSink); } /** Index: XMLFileHandler.java =================================================================== RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java,v retrieving revision 1.6 diff -u -r1.6 XMLFileHandler.java --- XMLFileHandler.java 25 Feb 2003 12:49:14 -0000 1.6 +++ XMLFileHandler.java 27 Feb 2003 22:25:03 -0000 @@ -86,7 +86,7 @@ private static final String TAG_LOCATION_INFO = "log4j:locationInfo"; /** where to put the events **/ - private final MyTableModel mModel; + private final EventDetailSink eventSink; /** the number of events in the document **/ private int mNumEvents; @@ -114,8 +114,8 @@ * * @param aModel where to add the events */ - XMLFileHandler(MyTableModel aModel) { - mModel = aModel; + XMLFileHandler(EventDetailSink eventSink) { + this.eventSink = eventSink; } /** @see DefaultHandler **/ @@ -200,7 +200,7 @@ /** Add an event to the model **/ private void addEvent() { - mModel.addEvent(new EventDetails(mTimeStamp, + eventSink.addEvent(new EventDetails(mTimeStamp, mPriority, mCategoryName, mNDC,
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]