public function __construct(NarroProject $objProject, NarroLanguage $objLanguage, $objParentObject, $strControlId = null)
 {
     // Call the Parent
     try {
         parent::__construct($objParentObject, $strControlId);
     } catch (QCallerException $objExc) {
         $objExc->IncrementOffset();
         throw $objExc;
     }
     $this->objProject = $objProject;
     $this->objLanguage = $objLanguage;
     $this->pnlTranslationSource = new QTabs($this);
     $objDirectoryPanel = new NarroDirectorySourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     $objDirectoryPanel->Directory = $this->objProject->DefaultTranslationPath;
     new NarroUploadSourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     new NarroWebSourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     new NarroProjectSourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     new NarroLanguageSourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     if (NarroUtils::CanExec('/usr/bin/hg --help')) {
         new NarroMercurialSourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     }
     if (NarroUtils::CanExec('/usr/bin/svn --help')) {
         new NarroSvnSourcePanel($objProject, $objLanguage, $this->pnlTranslationSource);
     }
     $this->pnlTranslationSource->Headers = array(t('On this server'), t('On my computer'), t('On the web'), t('Another project'), t('Another language'), t('Mercurial'), t('SVN'));
 }