classifiercodedocument.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CLASSIFIERCODEDOCUMENT_H
00020 #define CLASSIFIERCODEDOCUMENT_H
00021
00022 #include <qmap.h>
00023 #include <qstring.h>
00024 #include <qptrlist.h>
00025
00026 #include "classifier.h"
00027 #include "codeaccessormethod.h"
00028 #include "codedocument.h"
00029 #include "codeoperation.h"
00030 #include "codeclassfield.h"
00031 #include "codeclassfieldlist.h"
00032 #include "umlassociationlist.h"
00033
00034 class UMLRole;
00035
00041 class ClassifierCodeDocument : public CodeDocument
00042 {
00043 friend class HierarchicalCodeBlock;
00044 Q_OBJECT
00045 public:
00046
00047
00048
00049
00050
00054 ClassifierCodeDocument ( UMLClassifier * parent );
00055
00059 virtual ~ClassifierCodeDocument ( );
00060
00064 bool addCodeClassField ( CodeClassField * add_object );
00065
00069 bool removeCodeClassField ( CodeClassField * remove_object );
00070
00076 CodeClassFieldList * getCodeClassFieldList ( );
00077
00078
00079
00083 bool parentIsInterface();
00084
00088 bool parentIsClass();
00089
00093 bool hasAssociationClassFields();
00097 bool hasAttributeClassFields();
00098
00102 bool hasObjectVectorClassFields();
00103
00107 bool hasClassFields();
00108
00113 QPtrList<CodeOperation> getCodeOperations ( );
00114
00118 CodeClassFieldList getSpecificClassFields (CodeClassField::ClassFieldType cfType);
00119
00123 CodeClassFieldList getSpecificClassFields (CodeClassField::ClassFieldType cfType, bool isStatic);
00124
00128 CodeClassFieldList getSpecificClassFields (CodeClassField::ClassFieldType cfType, Uml::Visibility visibility);
00129
00133 CodeClassFieldList getSpecificClassFields (CodeClassField::ClassFieldType cfType, bool isStatic, Uml::Visibility visibility);
00134
00144 CodeClassField * findCodeClassFieldFromParentID (Uml::IDType id, int role_id = -1);
00145
00150 UMLClassifier * getParentClassifier ( );
00151
00152
00153 void addCodeClassFieldMethods(CodeClassFieldList &list );
00154
00158 virtual void initCodeClassFields ( );
00159
00160
00161 virtual void synchronize();
00162
00166 virtual bool addCodeOperation (CodeOperation *opBlock) = 0;
00167
00171 virtual void saveToXMI ( QDomDocument & doc, QDomElement & root );
00172
00176 virtual void loadFromXMI ( QDomElement & root );
00177
00178 protected:
00179
00183 void loadClassFieldsFromXMI( QDomElement & childElem);
00184
00188 virtual void setAttributesOnNode ( QDomDocument & doc, QDomElement & blockElement);
00189
00193 virtual void setAttributesFromNode ( QDomElement & element);
00194
00195
00196
00197 TextBlock * findCodeClassFieldTextBlockByTag (const QString &tag);
00198
00199
00200 void declareClassFields (CodeClassFieldList & list , CodeGenObjectWithTextBlocks * parent);
00201
00202 virtual void updateContent( ) = 0;
00203
00204
00205 void syncClassFields( );
00206
00207
00208
00209
00210 void syncNamesToParent( );
00211
00212 private:
00213
00214 CodeClassFieldList m_classfieldVector;
00215 UMLClassifier* m_parentclassifier;
00216
00217
00218
00219 void updateAssociationClassFields ( UMLAssociationList &assocList );
00220
00221
00222 void updateOperations( );
00223
00228 QMap<UMLObject *,CodeClassField *> m_classFieldMap;
00229
00234 void init ( UMLClassifier * classifier );
00235
00236 public slots:
00237
00241 void addAttributeClassField(UMLClassifierListItem *at, bool syncToParentIfAdded = true);
00242 void addAssociationClassField (UMLAssociation * assoc, bool syncToParentIfAdded = true);
00243 void removeAttributeClassField(UMLClassifierListItem *at);
00244 void removeAssociationClassField(UMLAssociation *assoc);
00245 void addOperation (UMLClassifierListItem * obj);
00246 void removeOperation (UMLClassifierListItem * obj);
00247 void syncToParent( );
00248
00249 };
00250
00251 #endif // CLASSIFIERCODEDOCUMENT_H
This file is part of the documentation for umbrello Version 3.1.0.