/**
  * @param {String} $key valid key as specified in validTabs
  * @return {HtmlForm}
  */
 public function getPreferencesForm($key)
 {
     $prefs = array();
     $user = $this->getUser();
     $ctx = $this->getContext();
     switch ($key) {
         case 'personal':
             Preferences::profilePreferences($user, $ctx, $prefs);
             break;
         case 'skin':
             Preferences::skinPreferences($user, $ctx, $prefs);
             break;
         case 'dateformat':
             Preferences::datetimePreferences($user, $ctx, $prefs);
             break;
         case 'files':
             Preferences::filesPreferences($user, $ctx, $prefs);
             break;
         case 'rc':
             Preferences::rcPreferences($user, $ctx, $prefs);
             break;
     }
     Preferences::loadPreferenceValues($user, $ctx, $prefs);
     $htmlForm = new PreferencesForm($prefs, $ctx, 'prefs');
     $htmlForm->suppressReset();
     $htmlForm->setModifiedUser($user);
     $htmlForm->setId('mw-prefs-form');
     $htmlForm->setSubmitText($ctx->msg('saveprefs')->text());
     $htmlForm->setSubmitCallback(array('Preferences', 'tryUISubmit'));
     $htmlForm->setAction(SpecialPage::getTitleFor($this->getName(), $key)->getLocalUrl());
     return $htmlForm;
 }