MvcCore/models/elementdocevents.h

Go to the documentation of this file.
00001 /*  -*- c++ -*-  (for Emacs)
00002  *
00003  *  elementdocevents.h
00004  *  Digest
00005  * 
00006  *  Created by Aidan Lane on Thu Jun 10 2005.
00007  *  Copyright (c) 2005 Optimisation and Constraint Solving Group,
00008  *  Monash University. All rights reserved.
00009  *
00010  *  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU General Public License as published by
00012  *  the Free Software Foundation; either version 2 of the License, or
00013  *  (at your option) any later version.
00014  *
00015  *  This program is distributed in the hope that it will be useful,
00016  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  *  GNU General Public License for more details.
00019  *
00020  *  You should have received a copy of the GNU General Public License
00021  *  along with this program; if not, write to the Free Software
00022  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00023  */
00024 
00025 #ifndef ELEMENTDOCEVENTS_H
00026 #define ELEMENTDOCEVENTS_H
00027 
00028 
00029 #include "attributedocevents.h"
00030 #include "elementdoccontainers.h"
00031 
00032 
00033 class MElementDocEvent : public MAttributeDocEvent {
00034 public:
00035   enum Type {
00036     ElementAddPtr          = MAttributeDocEvent::User,
00037     ElementRemovePtr,
00038     ElementSetChangeOrder,
00039     User                   = MAttributeDocEvent::User + 1000
00040   };
00041 
00042   MElementDocEvent( Type type )
00043     : MAttributeDocEvent((MAttributeDocEvent::Type)type) {}
00044 };
00045 
00046 
00047 class MElementEvent : public MElementDocEvent,
00048                       public AbstractElementContainer {
00049 public:
00050   MElementEvent( Type type,
00051                  AbstractElement* element )
00052     : MElementDocEvent(type),
00053       AbstractElementContainer(element) {}
00054 };
00055 
00056 
00057 class MElementSetEvent : public MElementDocEvent,
00058                          public AbstractElementSetContainer {
00059 public:
00060   MElementSetEvent( Type type,
00061                     const AbstractElementSet& elements )
00062     : MElementDocEvent(type),
00063       AbstractElementSetContainer(elements) {}
00064 };
00065 
00066 
00068 class MElementAddPtrEvent : public MElementEvent {
00069 public:
00070   MElementAddPtrEvent( AbstractElement* element )
00071     : MElementEvent(ElementAddPtr, element) {}
00072 };
00073 
00075 class MElementRemovePtrEvent : public MElementEvent {
00076 public:
00077   MElementRemovePtrEvent( AbstractElement* element )
00078     : MElementEvent(ElementRemovePtr, element) {}
00079 };
00080 
00081 
00082 class MElementSetChangeOrderEvent : public MElementSetEvent,
00083                                     public ElementOrderActionContainer {
00084 public:
00085   MElementSetChangeOrderEvent( const AbstractElementSet& elements,
00086                                Action action )
00087     : MElementSetEvent(ElementSetChangeOrder, elements),
00088       ElementOrderActionContainer(action) {}
00089 };
00090 
00091 
00092 #endif //  ! ELEMENTDOCEVENTS_H

Generated on Mon Jul 30 09:46:50 2007 for Digest by  doxygen 1.5.2