/** * Returns the class for the control that will be created to edit the given column, * including the 'virtual' columns of reverse references (many to one) and many-to-many references. * * @param QSqlColumn|QReverseReference|QManyToManyReference $objColumn * * @return AbstractControl_CodeGenerator helper object * @throws Exception */ public function GetControlCodeGenerator($objColumn) { $strControlClass = $this->ModelConnectorControlClass($objColumn); if (method_exists($strControlClass, 'GetCodeGenerator')) { return call_user_func($strControlClass . '::GetCodeGenerator'); } switch ($strControlClass) { case 'QLabel': return QLabel_CodeGenerator::Instance(); case 'QListBox': return new QListBox_CodeGenerator(); case 'QCheckBox': return new QCheckBox_CodeGenerator(); case 'QDateTimePicker': return new QDateTimePicker_CodeGenerator(); case 'QTextBox': return new QTextBox_CodeGenerator(); case 'QIntegerTextBox': return new QIntegerTextBox_CodeGenerator(); case 'QFloatTextBox': return new QFloatTextBox_CodeGenerator(); case 'QCheckBoxList': return new QCheckBoxList_CodeGenerator(); default: break; } $strOrigControlClass = $strControlClass; $strControlCodeGeneratorClass = $strControlClass . '_CodeGenerator'; while (!class_exists($strControlCodeGeneratorClass)) { $strControlClass = get_parent_class($strControlClass); if ($strControlClass === 'QControl') { throw new QCallerException("Cannot find an appropriate subclass of AbstractControl_CodeGenerator for " . $strOrigControlClass); } $strControlCodeGeneratorClass = $strControlClass . '_CodeGenerator'; } return new $strControlCodeGeneratorClass($strOrigControlClass); }
echo QLabel_CodeGenerator::Instance()->ConnectorCreate($objCodeGen, $objTable, $objColumn); } echo "\n\n"; } foreach ($objTable->ReverseReferenceArray as $objReverseReference) { if (!$objReverseReference->Unique) { continue; } if (isset($objReverseReference->Options['FormGen']) && $objReverseReference->Options['FormGen'] == QFormGen::None) { continue; } $objControlCodeGenerator = $objCodeGen->GetControlCodeGenerator($objReverseReference); echo $objControlCodeGenerator->ConnectorCreate($objCodeGen, $objTable, $objReverseReference); if ($objControlCodeGenerator->GetControlClass() != 'QLabel' && (!isset($objReverseReference->Options['FormGen']) || $objReverseReference->Options['FormGen'] == QFormGen::Both)) { // also generate a QLabel for each control that generates both echo QLabel_CodeGenerator::Instance()->ConnectorCreate($objCodeGen, $objTable, $objReverseReference); } echo "\n\n"; } foreach ($objTable->ManyToManyReferenceArray as $objManyToManyReference) { if (isset($objManyToManyReference->Options['FormGen']) && $objManyToManyReference->Options['FormGen'] == QFormGen::None) { continue; } $objControlCodeGenerator = $objCodeGen->GetControlCodeGenerator($objManyToManyReference); echo $objControlCodeGenerator->ConnectorCreate($objCodeGen, $objTable, $objManyToManyReference); if ($objControlCodeGenerator->GetControlClass() != 'QLabel' && (!isset($objManyToManyReference->Options['FormGen']) || $objManyToManyReference->Options['FormGen'] == QFormGen::Both)) { // also generate a QLabel for each control that generates both echo QLabel_CodeGenerator::Instance()->ConnectorCreate($objCodeGen, $objTable, $objManyToManyReference); } echo "\n\n"; }
foreach ($objTable->ReverseReferenceArray as $objReverseReference) { if (!$objReverseReference->Unique) { continue; } if (isset($objReverseReference->Options['FormGen']) && $objReverseReference->Options['FormGen'] == QFormGen::None) { continue; } $objControlCodeGenerator = $objCodeGen->GetControlCodeGenerator($objReverseReference); echo $objControlCodeGenerator->ConnectorVariableDeclaration($objCodeGen, $objReverseReference); if ($objControlCodeGenerator->GetControlClass() != 'QLabel' && (!isset($objReverseReference->Options['FormGen']) || $objReverseReference->Options['FormGen'] == QFormGen::Both)) { // also generate a QLabel for each control that is not defaulted as a label already echo QLabel_CodeGenerator::Instance()->ConnectorVariableDeclaration($objCodeGen, $objReverseReference); } } foreach ($objTable->ManyToManyReferenceArray as $objManyToManyReference) { if (isset($objManyToManyReference->Options['FormGen']) && $objManyToManyReference->Options['FormGen'] == QFormGen::None) { continue; } $objControlCodeGenerator = $objCodeGen->GetControlCodeGenerator($objManyToManyReference); echo $objControlCodeGenerator->ConnectorVariableDeclaration($objCodeGen, $objManyToManyReference); if ($objControlCodeGenerator->GetControlClass() != 'QLabel' && (!isset($objManyToManyReference->Options['FormGen']) || $objManyToManyReference->Options['FormGen'] == QFormGen::Both)) { // also generate a QLabel for each control that is not defaulted as a label already echo QLabel_CodeGenerator::Instance()->ConnectorVariableDeclaration($objCodeGen, $objManyToManyReference); } ?> protected $str<?php echo $objManyToManyReference->ObjectDescription; ?> Glue = ', '; <?php }