public EditWebAccountForm(
      Model model, Controller controller, ExternalNetwork nw, Identity iden, Style style) {
    super(model, controller, null, style);

    this.network = nw;
    this.iden = iden;

    // #style webaccount_edit_headline
    Container info = new Container(false);
    info.setAppearanceMode(Item.PLAIN);

    // constructs network icon and sets default style to focused/'white'
    IconItem networkIcon =
        UiFactory.createNetworkIcon(
            (null != this.network ? this.network.getNetworkId() : ""), false);
    networkIcon.setStyle(networkIcon.getFocusedStyle());
    networkIcon.setAppearanceMode(Item.PLAIN);

    info.add(networkIcon);
    info.add(
        // #style webaccount_edit_headline_text
        new StringItem(
            null,
            (null != this.network ? this.network.getName() : "")
                + " "
                + Locale.get("nowplus.client.java.webaccounts.edit.info.suffix")));
    this.append(info);

    String credentialsLabel = null;
    if (nw.getCredentialsType() == ExternalNetwork.CREDENTIALS_USERNAME) {
      credentialsLabel = Locale.get("nowplus.client.java.webaccounts.edit.username");
    } else if (nw.getCredentialsType() == ExternalNetwork.CREDENTIALS_USERNAME_OR_EMAIL) {
      credentialsLabel = Locale.get("nowplus.client.java.webaccounts.edit.username_email");
    }

    // add username textfield
    this.usernameTextField =
        UiFactory.createTextField(
            null, null, 128, TextField.ANY | TextField.INITIAL_CAPS_NEVER, this);
    // fix for PBLA-816 Touch device: predictive text while disabling the surepress
    // #if polish.blackberry
    this.usernameTextField.setNoComplexInput(true);
    // #endif

    // #if using.native.textfield:defined
    this.usernameTextField.setTitle(credentialsLabel);
    // #if (${lowercase(polish.vendor)}==samsung)
    UiFactory.fixSamsungNativeTextField(this.usernameTextField);
    // #endif
    // #endif

    // check for existing username
    if (null == this.iden) {
      this.usernameTextField.setHelpText(credentialsLabel);

      // #if polish.blackberry
      // #style ui_factory_textfield_helpfont
      usernameTextField.setHelpStyle();
      // #endif
    } else {
      this.usernameTextField.setString(this.iden.getName());

      // username uneditable in 'edit mode'
      //			this.usernameTextField.setAppearanceMode(Item.PLAIN);
    }

    // add password textfield
    this.passwordTextField =
        UiFactory.createTextField(
            null,
            null,
            128,
            TextField.NON_PREDICTIVE | TextField.INITIAL_CAPS_NEVER | TextField.PASSWORD,
            this);
    // #if using.native.textfield:defined
    this.passwordTextField.setTitle(Locale.get("nowplus.client.java.webaccounts.edit.password"));
    // #if (${lowercase(polish.vendor)}==samsung)
    UiFactory.fixSamsungNativeTextField(this.passwordTextField);
    // #elif polish.device.textField.requires.initialCapsNeverFix
    UiFactory.fixS40NativeTextField(this.passwordTextField);
    // #endif
    // #endif

    // check for existing password
    this.passwordTextField.setHelpText(Locale.get("nowplus.client.java.webaccounts.edit.password"));

    // #if polish.blackberry
    // #style ui_factory_textfield_helpfont
    this.passwordTextField.setHelpStyle();
    // #endif

    // #if polish.blackberry
    removeCommand(cmdBack);

    // #style ui_factory_button_item
    StringItem loginButton =
        UiFactory.createButtonItem(
            null, cmdLogin.getLabel(), (de.enough.polish.ui.Command) cmdLogin, null, null);

    append(loginButton);

    // #endif

    // adding disclaimer for given network
    if (null != this.network) {
      String[] disclaimer = this.network.getDisclaimer();

      if (disclaimer[0] != null) {
        // #style .webaccount_edit_disclaimer_header
        this.append(disclaimer[0]);
      }

      for (int i = 1; i < disclaimer.length; i++) {
        // #style .webaccount_edit_disclaimer_text
        this.append(disclaimer[i]);
      }
    }

    // #if !polish.blackberry
    this.addCommand(cmdLogin);
    this.addCommand(cmdBack);
    // #endif
  }
  private void initForm(boolean firstLogin) {
    // #if !polish.blackberry
    this.addCommand(cmdSave);

    if (firstLogin) this.addCommand(cmdCancel);
    else this.addCommand(cmdExit);
    // #endif

    StringItem headLine;
    // #if polish.blackberry
    // #if polish.blackberry.isTouchBuild == false
    // #style .login_headline
    headLine = new StringItem(null, Locale.get("nowplus.client.java.loginform.headline"));
    this.append(headLine);
    // #endif
    // #else
    // #style .login_headline
    headLine = new StringItem(null, Locale.get("nowplus.client.java.loginform.headline"));
    this.append(headLine);

    // #endif

    // #if polish.blackberry && polish.blackberry.isTouchBuild == false
    headLine.setAppearanceMode(Item.PLAIN);
    // #endif

    String usernameString = model.getUserName();
    String passwordString = "";

    // #if username:defined
    // #message Username is set
    // #= usernameString = "${username}";
    // #endif

    // #if password:defined
    // #message Password is set
    // #= passwordString = "${password}";
    // #endif

    if (usernameString == null) usernameString = "";
    if (passwordString == null) passwordString = "";

    // username textfield

    // #if polish.blackberry
    userName =
        UiFactory.createTextField(
            Locale.get("nowplus.client.java.loginform.username.hint"),
            usernameString,
            255,
            TextField.NON_PREDICTIVE,
            this);
    // fix for PBLA-816 Touch device: predictive text while disabling the surepress
    userName.setNoComplexInput(true);
    // #else
    userName = UiFactory.createTextField(null, usernameString, 255, TextField.NON_PREDICTIVE, this);
    // #endif

    UiAccess.setTextfieldHelp(userName, Locale.get("nowplus.client.java.loginform.username.hint"));
    // #if using.native.textfield:defined
    userName.setTitle(Locale.get("nowplus.client.java.loginform.username.hint"));
    // #if (${lowercase(polish.vendor)}==samsung)
    UiFactory.fixSamsungNativeTextField(userName);
    // #endif
    // #endif

    if (userName.getText().length() > 0) {
      // Change username textfield into uneditable field once authenticated once to keep users from
      // switching username
      userName.setConstraints(TextField.NON_PREDICTIVE | TextField.UNEDITABLE);

      usernameReadonly = true;

      // #if not polish.blackberry
      // #style .login_textfield_readonly
      // #= userName.setStyle();
      // #endif
    }

    // password textfield

    // #if polish.blackberry
    passWord =
        UiFactory.createTextField(
            Locale.get("nowplus.client.java.loginform.password.hint"),
            passwordString,
            255,
            TextField.NON_PREDICTIVE | TextField.INITIAL_CAPS_NEVER | TextField.PASSWORD,
            this);
    // #else
    passWord =
        UiFactory.createTextField(
            null, passwordString, 255, TextField.INITIAL_CAPS_NEVER | TextField.PASSWORD, this);
    // #endif

    UiAccess.setTextfieldHelp(passWord, Locale.get("nowplus.client.java.loginform.password.hint"));
    // #if using.native.textfield:defined
    passWord.setTitle(Locale.get("nowplus.client.java.loginform.password.hint"));
    // #if (${lowercase(polish.vendor)}==samsung)
    UiFactory.fixSamsungNativeTextField(passWord);
    // #elif polish.device.textField.requires.initialCapsNeverFix:defined
    UiFactory.fixS40NativeTextField(passWord);
    // #endif
    // #endif

    rememberMeItem =
        UiFactory.createChoiceCheckBoxItem(
            Locale.get("nowplus.client.java.loginform.rememberme.label"), Choice.MULTIPLE);
    rememberMeItem.select(model.stayLoggedIn());
    UiFactory.createChoiceGroup(
        null,
        ChoiceGroup.MULTIPLE,
        new ChoiceItem[] {rememberMeItem},
        0,
        rememberMeItem.isSelected,
        null,
        this);

    // #if !polish.blackberry
    if (usernameReadonly) {
      this.focus(passWord);
    }
    // #endif

    // #if polish.blackberry
    // #style ui_factory_button_item
    StringItem loginButton =
        UiFactory.createButtonItem(
            null, cmdSave.getLabel(), (de.enough.polish.ui.Command) cmdSave, null, null);
    append(loginButton);

    if (firstLogin) {
      cmdQuit = cmdCancel;
    } else {
      cmdQuit = cmdExit;
    }
    // #endif
  }