diff options
Diffstat (limited to 'umbrello/umbrello/package.h')
-rw-r--r-- | umbrello/umbrello/package.h | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/umbrello/umbrello/package.h b/umbrello/umbrello/package.h new file mode 100644 index 00000000..b7d51000 --- /dev/null +++ b/umbrello/umbrello/package.h @@ -0,0 +1,198 @@ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * copyright (C) 2003-2006 * + * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * + ***************************************************************************/ + +#ifndef PACKAGE_H +#define PACKAGE_H + +#include "umlcanvasobject.h" +#include "umlclassifierlist.h" + +// forward declarations +class UMLAssociation; + + +/** + * This class contains the non-graphical information required for a UML + * Package. + * This class inherits from @ref UMLCanvasObject which contains most of the + * information. + * + * @short Non-graphical information for a Package. + * @author Jonathan Riddell + * @see UMLCanvasObject + * Bugs and comments to uml-devel@lists.sf.net or http://bugs.kde.org + */ + +class UMLPackage : public UMLCanvasObject { + Q_OBJECT +public: + /** + * Sets up a Package. + * + * @param name The name of the Concept. + * @param id The unique id of the Concept. + */ + explicit UMLPackage(const QString & name = "", Uml::IDType id = Uml::id_None); + + /** + * Empty deconstructor. + */ + virtual ~UMLPackage(); + + /** + * Copy the internal presentation of this object into the new + * object. + */ + virtual void copyInto(UMLPackage *rhs) const; + + /** + * Make a clone of this object. + */ + virtual UMLObject* clone() const; + + /** + * Initializes key variables of the class. + */ + void init(); + + /** + * Adds an object in this package. + * + * @param pObject Pointer to the UMLObject to add. + * @return True if the object was actually added. + */ + bool addObject(UMLObject *pObject); + + /** + * Removes an object from this package. + * Does not physically delete the object. + * + * @param pObject Pointer to the UMLObject to be removed. + */ + void removeObject(UMLObject *pObject); + + /** + * Removes all objects from this package. + * Inner containers (e.g. nested packages) are removed recursively. + */ + virtual void removeAllObjects(); + + /** + * Returns the list of objects contained in this package. + */ + UMLObjectList containedObjects(); + + /** + * Adds an existing association to the matching concept in the list of concepts. + * The selection of the matching concept depends on the association type: + * For generalizations, the assoc is added to the concept that matches role A. + * For aggregations and compositions , the assoc is added to the concept + * that matches role B. + * + * @param assoc The association to add + */ + void addAssocToConcepts(UMLAssociation* assoc); + + /** + * Remove the association from the participating concepts. + */ + void removeAssocFromConcepts(UMLAssociation *assoc); + + /** + * Find the object of the given name in the list of contained objects. + * + * @param name The name to seek. + * @return Pointer to the UMLObject found or NULL if not found. + */ + UMLObject * findObject(const QString &name); + + /** + * Find the object of the given ID in the list of contained objects. + * + * @param id The ID to seek. + * @return Pointer to the UMLObject found or NULL if not found. + */ + UMLObject * findObjectById(Uml::IDType id); + + /** + * Append all classifiers from this package (and those from + * nested packages) to the given UMLClassifierList. + * + * @param classifiers The list to append to. + * @param includeNested Whether to include the classifiers from + * nested packages (default: true.) + */ + void appendClassifiers( UMLClassifierList& classifiers, + bool includeNested = true ); + + /** + * Append all classes from this package (and those from + * nested packages) to the given UMLClassifierList. + * + * @param classes The list to append to. + * @param includeNested Whether to include the classes from + * nested packages (default: true.) + */ + void appendClasses( UMLClassifierList& classes, bool includeNested = true ); + + /** + * Append all classes and interfaces from this package (and those + * from nested packages) to the given UMLClassifierList. + * + * @param classifiers The list to append to. + * @param includeNested Whether to include the classifiers from + * nested packages (default: true.) + */ + void appendClassesAndInterfaces(UMLClassifierList& classifiers, + bool includeNested = true); + + /** + * Append all interfaces from this package (and those from + * nested packages) to the given UMLClassifierList. + * + * @param interfaces The list to append to. + * @param includeNested Whether to include the interfaces from + * nested packages (default: true.) + */ + void appendInterfaces(UMLClassifierList& interfaces, + bool includeNested = true ); + + /** + * Resolve types. Required when dealing with foreign XMI files. + * Needs to be called after all UML objects are loaded from file. + * Overrides the method from UMLObject. + * Calls resolveRef() on each contained object. + * + * @return True for overall success. + */ + virtual bool resolveRef(); + + /** + * Creates the <UML:Package> XMI element. + */ + virtual void saveToXMI(QDomDocument& qDoc, QDomElement& qElement); + +protected: + /** + * Loads the <UML:Package> XMI element. + * Auxiliary to UMLObject::loadFromXMI. + */ + virtual bool load(QDomElement& element); + + /** + * References to the objects contained in this package. + * The UMLPackage is the owner of the objects. + */ + UMLObjectList m_objects; + +}; + +#endif |