/*
 * Jakelib2 - General purpose C++ library
 * Copyright (C) 2001 Florian Wolff  (florian@donuz.de)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * $Id: EventObject.h,v 1.2 2002/06/08 10:09:41 florian Exp $
 */

#ifndef INCLUDE_JAKELIB2_UTIL_EVENTOBJECT_H
# define INCLUDE_JAKELIB2_UTIL_EVENTOBJECT_H

namespace jakelib {
  namespace util {

    /**
     * @brief Represents Events fired by Objects.
     *
     * @class EventObject
     * @version $Id: EventObject.h,v 1.2 2002/06/08 10:09:41 florian Exp $
     * @author Florian 'Overflo' Wolff (florian@donuz.de)
     */
    class EventObject : public jakelib::lang::Object
      {
      public:

        /**
         * @brief Constructs an \c EventObject with the specified source.
         *
         * @param source the source of the event
         */
        EventObject(jakelib::lang::Object* source);

        /**
         * @brief Returns the source of the event.
         *
         * @return the event source
         */
        virtual jakelib::lang::Object* getSource();

        /**
         * @brief Converts the event to a \c String. The format is not specified, but by
         * observation, the JDK uses:
         * <code>getClass().getName() + "[source=" + source + "]";</code>.
         *
         * @return String representation of the Event
         */
        jakelib::lang::String* toString();

      protected:

        jakelib::lang::Object* source;

	JAKELIB_DECLARE_CLASS(EventObject);
      };

  }
}
#endif

