On going implementation of the designer

SVN:trunk[1887]
This commit is contained in:
Denis Flaven
2012-03-09 08:45:12 +00:00
parent 73e715efb4
commit 9c4ef578f6

View File

@@ -734,7 +734,18 @@ EOF
}
return $oClassNode;
}
public function GetChildClasses($oClassNode, $bFlattenLayers = true)
{
$sXPath = "class";
if ($bFlattenLayers)
{
$sXPath = "class[(@_operation!='removed')]";
}
return $this->_priv_GetNodes($sXPath, $oClassNode);
}
public function GetField($sClassName, $sAttCode, $bFlattenLayers = true)
{
if (!$this->ClassNameExists($sClassName))
@@ -1126,7 +1137,7 @@ EOF
$sOperation = $oChildNode->getAttribute('_operation');
}
//echo str_repeat('+', $iDepth)." $sNodeName [$sName], operation: $sOperation\n";
echo str_repeat('+', $iDepth)." $sNodeName [$sName], operation: $sOperation\n";
switch($sOperation)
{
@@ -1142,22 +1153,37 @@ EOF
{
$oDestNode->appendChild($oDeletedNode);
}
//echo "<p>".str_repeat('+', $iDepth).$oChildNode->getAttribute('name')." was removed...</p>";
echo "<p>".str_repeat('+', $iDepth).$oChildNode->getAttribute('name')." was removed...</p>";
break;
case 'added':
//echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was created...</p>";
echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was created...</p>";
$oModifiedNode = $oDoc->importNode($oChildNode, true); // Copies all the node's attributes, and the child nodes as well
if ($oChildNode instanceof DOMElement)
{
$oModifiedNode->removeAttribute('_source');
if ($oModifiedNode->tagName == 'class')
{
echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." inserting under 'classes'...</p>";
// classes are always located under the root node
$oDoc->firstChild->appendChild($oModifiedNode);
// Process any subclasses: move them under the root of the document
$oSubclasses = $oModifiedNode->GetElementsByTagName('class');
$aSubClasses = array();
foreach($oSubclasses as $oSubclassNode)
{
$aSubClasses[] = $oSubclassNode;
}
for($index = count($aSubClasses)-1; $index >= 0; $index--)
{
$aSubClasses[$index]->parentNode->removeChild($aSubClasses[$index]);
$oDoc->firstChild->appendChild($aSubClasses[$index]);
}
}
else
{
echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." inserting in the hierarchy...</p>";
$oDestNode->appendChild($oModifiedNode);
}
}
@@ -1168,7 +1194,7 @@ EOF
break;
case 'replaced':
//echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was replaced...</p>";
echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was replaced...</p>";
$oModifiedNode = $oDoc->importNode($oChildNode, true); // Copies all the node's attributes, and the child nodes as well
if ($oChildNode instanceof DOMElement)
{
@@ -1178,10 +1204,10 @@ EOF
break;
case 'modified':
//echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was modified...</p>";
echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was modified...</p>";
if ($oChildNode instanceof DOMElement)
{
//echo str_repeat('+', $iDepth)." Copying (NON recursively) the modified node\n";
echo str_repeat('+', $iDepth)." Copying (NON recursively) the modified node\n";
$oModifiedNode = $oDoc->importNode($oChildNode, false); // Copies all the node's attributes, but NOT the child nodes
$oModifiedNode->removeAttribute('_source');
$this->_priv_ImportModifiedChildren($oDoc, $oModifiedNode, $oChildNode);
@@ -1197,27 +1223,23 @@ EOF
}
else
{
//echo str_repeat('+', $iDepth)." Copying (recursively) the modified node\n";
echo str_repeat('+', $iDepth)." Copying (recursively) the modified node\n";
$oModifiedNode = $oDoc->importNode($oChildNode, true); // Copies all the node's attributes, and the child nodes
$oDestNode->appendChild($oModifiedNode);
}
break;
default:
// No change: search if there is not a modified child class
$oModifiedNode = $oDoc->importNode($oChildNode->cloneNode(false)); // Copies all the node's attributes, but NOT the child nodes
//echo str_repeat('+', $iDepth)." Importing (NON recursively) the modified node\n";
if ($oChildNode instanceof DOMElement)
// No change: do nothing
echo "<p>".str_repeat('+', $iDepth).$oChildNode->tagName.':'.$oChildNode->getAttribute('name')." was NOT modified...</p>";
$oModifiedNode = $oDoc->importNode($oChildNode, true); // Importing the node for future recusrsion if needed
if ($oChildNode->tagName == 'class')
{
$oModifiedNode->removeAttribute('_source');
echo "<p>".str_repeat('+', $iDepth)."Checking if a subclass of ".$oChildNode->getAttribute('name')." was modified...</p>";
// classes are always located under the root node
$this->_priv_ImportModifiedChildren($oDoc, $oModifiedNode, $oChildNode);
}
}
if ($oChildNode->tagName == 'class')
{
//echo "<p>".str_repeat('+', $iDepth)."Checking if a subclass of ".$oChildNode->getAttribute('name')." was modified...</p>";
// classes are always located under the root node
$this->_priv_ImportModifiedChildren($oDoc, $oModifiedNode, $oChildNode);
}
}
$iDepth--;
}