You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
4.8 KiB
175 lines
4.8 KiB
|
|
/***************************************************************************
|
|
* *
|
|
* 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. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
/* This code generated by:
|
|
* Author : thomas
|
|
* Date : Fri Jul 25 2003
|
|
*/
|
|
|
|
/** basicially a class to allow for syncronization of the contents based on the
|
|
* values of the parentClassField's parentObject
|
|
*/
|
|
#include "codeclassfielddeclarationblock.h"
|
|
|
|
#include "codeclassfield.h"
|
|
#include "umlrole.h"
|
|
|
|
// Constructors/Destructors
|
|
//
|
|
|
|
CodeClassFieldDeclarationBlock::CodeClassFieldDeclarationBlock ( CodeClassField * parentCF )
|
|
: CodeBlockWithComments ( (CodeDocument*) parentCF->getParentDocument() ),
|
|
OwnedCodeBlock ((UMLObject*) parentCF->getParentObject())
|
|
{
|
|
init(parentCF);
|
|
}
|
|
|
|
CodeClassFieldDeclarationBlock::~CodeClassFieldDeclarationBlock ( ) {
|
|
// Q: is this needed??
|
|
// m_parentclassfield->getParentObject()->disconnect(this);
|
|
}
|
|
|
|
//
|
|
// Methods
|
|
//
|
|
|
|
// Accessor methods
|
|
//
|
|
|
|
/**
|
|
* Get the value of m_parentclassfield
|
|
* @return the value of m_parentclassfield
|
|
*/
|
|
CodeClassField * CodeClassFieldDeclarationBlock::getParentClassField ( ) {
|
|
return m_parentclassfield;
|
|
}
|
|
|
|
/** Get the tqparent object of the parentCodeClassfield
|
|
*/
|
|
UMLObject * CodeClassFieldDeclarationBlock::getParentObject ( ) {
|
|
return m_parentclassfield->getParentObject();
|
|
}
|
|
|
|
CodeDocument * CodeClassFieldDeclarationBlock::getParentDocument ( ) {
|
|
return TextBlock::getParentDocument();
|
|
}
|
|
|
|
// Other methods
|
|
//
|
|
|
|
// this type of textblock is special
|
|
// we DONT release it when resetTextBlocks is
|
|
// called because we re-use it over and over
|
|
// until the codeclassfield is released.
|
|
void CodeClassFieldDeclarationBlock::release () {
|
|
// do nothing
|
|
}
|
|
|
|
void CodeClassFieldDeclarationBlock::forceRelease () {
|
|
if(m_parentclassfield)
|
|
{
|
|
// m_parentclassfield->getParentObject()->disconnect(this);
|
|
m_parentclassfield->disconnect(this);
|
|
}
|
|
m_parentclassfield = 0;
|
|
OwnedCodeBlock::release();
|
|
TextBlock::release();
|
|
}
|
|
|
|
/**
|
|
* Save the XMI representation of this object
|
|
*/
|
|
void CodeClassFieldDeclarationBlock::saveToXMI ( TQDomDocument & doc, TQDomElement & elem)
|
|
{
|
|
TQDomElement docElement = doc.createElement( "ccfdeclarationcodeblock" );
|
|
|
|
setAttributesOnNode(doc, docElement);
|
|
|
|
elem.appendChild( docElement );
|
|
}
|
|
|
|
void CodeClassFieldDeclarationBlock::loadFromXMI ( TQDomElement & root )
|
|
{
|
|
setAttributesFromNode(root);
|
|
}
|
|
|
|
void CodeClassFieldDeclarationBlock::setAttributesOnNode (TQDomDocument & doc, TQDomElement & elem ) {
|
|
|
|
// set super-class attributes
|
|
CodeBlockWithComments::setAttributesOnNode(doc, elem);
|
|
OwnedCodeBlock::setAttributesOnNode(doc, elem);
|
|
|
|
}
|
|
|
|
/**
|
|
* load params from the appropriate XMI element node.
|
|
*/
|
|
void CodeClassFieldDeclarationBlock::setAttributesFromNode( TQDomElement & root ) {
|
|
|
|
// set attributes from the XMI
|
|
CodeBlockWithComments::setAttributesFromNode(root); // superclass load
|
|
OwnedCodeBlock::setAttributesFromNode(root); // superclass load
|
|
|
|
syncToParent();
|
|
}
|
|
|
|
/** set the class attributes from a passed object
|
|
*/
|
|
void CodeClassFieldDeclarationBlock::setAttributesFromObject (TextBlock * obj) {
|
|
|
|
CodeBlockWithComments::setAttributesFromObject(obj);
|
|
|
|
CodeClassFieldDeclarationBlock * ccb = dynamic_cast<CodeClassFieldDeclarationBlock*>(obj);
|
|
if(ccb)
|
|
{
|
|
m_parentclassfield->disconnect(this);
|
|
init(ccb->getParentClassField());
|
|
|
|
syncToParent();
|
|
}
|
|
|
|
}
|
|
|
|
void CodeClassFieldDeclarationBlock::syncToParent () {
|
|
|
|
// for role-based accessors, we DONT write ourselves out when
|
|
// the name of the role is not defined.
|
|
if(!(getParentClassField()->parentIsAttribute()))
|
|
{
|
|
UMLRole * tqparent = dynamic_cast<UMLRole*>(getParentObject());
|
|
if (tqparent == NULL)
|
|
return;
|
|
if(tqparent->getName().isEmpty())
|
|
{
|
|
getComment()->setWriteOutText(false);
|
|
setWriteOutText(false);
|
|
} else {
|
|
getComment()->setWriteOutText(true);
|
|
setWriteOutText(true);
|
|
}
|
|
}
|
|
|
|
// only update IF we are NOT AutoGenerated
|
|
if(getContentType() != AutoGenerated)
|
|
return;
|
|
|
|
updateContent();
|
|
|
|
}
|
|
|
|
void CodeClassFieldDeclarationBlock::init (CodeClassField * parentCF)
|
|
{
|
|
m_parentclassfield = parentCF;
|
|
m_canDelete = false;
|
|
connect(m_parentclassfield,TQT_SIGNAL(modified()),this,TQT_SLOT(syncToParent()));
|
|
}
|
|
|
|
#include "codeclassfielddeclarationblock.moc"
|