private void showHideDynamicsControls() {
    // PTODO SML Optimize
    // 1. Hide all controls:
    for (IRepositoryFactory f : dynamicControls.keySet()) {
      for (LabelText control : dynamicControls.get(f).values()) {
        control.setVisible(false);
      }

      for (Button control : dynamicButtons.get(f).values()) {
        control.setVisible(false);
      }

      for (LabelledCombo control : dynamicChoices.get(f).values()) {
        control.setVisible(false);
      }
    }

    // 2. Show active repository controls:
    if (getRepository() != null) {
      for (LabelText control : dynamicControls.get(getRepository()).values()) {
        control.setVisible(true);
      }

      for (Button control : dynamicButtons.get(getRepository()).values()) {
        control.setVisible(true);
      }

      for (LabelledCombo control : dynamicChoices.get(getRepository()).values()) {
        control.setVisible(true);
      }
    }
  }
  private void fillFields() {
    if (connection != null) {
      removeListeners();
      String repositoryId = connection.getRepositoryId();
      if (repositoryId == null || "".equals(repositoryId)) {
        if (getRepository() != null) {
          connection.setRepositoryId(getRepository().getId());
        } else {
          connection.setRepositoryId(RepositoryConstants.REPOSITORY_LOCAL_ID);
        }
      }
      IRepositoryFactory repositoriyById =
          RepositoryFactoryProvider.getRepositoriyById(repositoryId);
      repositoryCombo.setSelection(new StructuredSelection(new Object[] {repositoriyById}));

      if (getRepository() != null) {
        Map<String, LabelText> map = dynamicControls.get(getRepository());

        for (String fieldKey : map.keySet()) {
          LabelText current = map.get(fieldKey);
          String string = connection.getDynamicFields().get(fieldKey);
          current.setText(string == null ? "" : string); // $NON-NLS-1$
        }

        Map<String, LabelledCombo> map2 = dynamicChoices.get(getRepository());
        for (String fieldKey : map2.keySet()) {
          Combo combo = map2.get(fieldKey).getCombo();
          String value = connection.getDynamicFields().get(fieldKey);
          combo.deselectAll();
          for (DynamicChoiceBean dynamicChoiceBean : getRepository().getChoices()) {
            if (dynamicChoiceBean.getId().equals(fieldKey)) {
              combo.select(dynamicChoiceBean.getChoiceIndex(value));
            }
          }
        }
      }
      nameText.setText((connection.getName() == null ? "" : connection.getName())); // $NON-NLS-1$
      descriptionText.setText(
          (connection.getDescription() == null ? "" : connection.getDescription())); // $NON-NLS-1$
      userText.setText((connection.getUser() == null ? "" : connection.getUser())); // $NON-NLS-1$
      passwordText.setText(
          (connection.getPassword() == null ? "" : connection.getPassword())); // $NON-NLS-1$
      workSpaceText.setText(
          ("".equals(connection.getWorkSpace()) || connection.getWorkSpace() == null)
              ? getRecentWorkSpace()
              : connection.getWorkSpace()); // $NON-NLS-1$
      addListeners();
    }
  }
  private void removeListeners() {
    repositoryCombo.removePostSelectionChangedListener(repositoryListener);
    nameText.removeModifyListener(standardTextListener);
    descriptionText.removeModifyListener(standardTextListener);
    userText.removeModifyListener(standardTextListener);
    passwordText.removeModifyListener(standardTextListener);

    for (IRepositoryFactory f : dynamicControls.keySet()) {
      for (LabelText control : dynamicControls.get(f).values()) {
        control.removeModifyListener(standardTextListener);
      }
    }

    for (IRepositoryFactory f : dynamicChoices.keySet()) {
      for (LabelledCombo control : dynamicChoices.get(f).values()) {
        control.getCombo().removeModifyListener(standardTextListener);
      }
    }
  }
  private void addListeners() {
    repositoryCombo.addPostSelectionChangedListener(repositoryListener);
    nameText.addModifyListener(standardTextListener);
    descriptionText.addModifyListener(standardTextListener);
    userText.addModifyListener(standardTextListener);
    passwordText.addModifyListener(standardTextListener);
    workSpaceText.addModifyListener(standardTextListener);

    for (IRepositoryFactory f : dynamicControls.keySet()) {
      for (LabelText control : dynamicControls.get(f).values()) {
        control.addModifyListener(standardTextListener);
      }
    }

    for (IRepositoryFactory f : dynamicChoices.keySet()) {
      for (LabelledCombo control : dynamicChoices.get(f).values()) {
        control.getCombo().addModifyListener(standardTextListener);
      }
    }

    deleteProjectsButton.addSelectionListener(deleteProjectClickListener);
  }
  private void showHideDynamicsControls() {
    // PTODO SML Optimize
    // 1. Hide all controls:
    for (IRepositoryFactory f : dynamicControls.keySet()) {
      for (LabelText control : dynamicControls.get(f).values()) {
        // control.setVisible(false);
        hideControl(control.getLabelControl(), true, false);
        hideControl(control.getTextControl(), true, false);
      }

      for (Button control : dynamicButtons.get(f).values()) {
        // control.setVisible(false);
        hideControl(control, true, false);
      }

      for (LabelledCombo control : dynamicChoices.get(f).values()) {
        // control.setVisible(false);
        hideControl(control.getCombo(), true, false);
      }
    }

    // 2. Show active repository controls:
    if (getRepository() != null) {
      for (LabelText control : dynamicControls.get(getRepository()).values()) {
        // control.setVisible(true);
        hideControl(control.getLabelControl(), false, false);
        hideControl(control.getTextControl(), false, false);
      }

      for (Button control : dynamicButtons.get(getRepository()).values()) {
        // control.setVisible(true);
        hideControl(control, false, false);
      }

      for (LabelledCombo control : dynamicChoices.get(getRepository()).values()) {
        // control.setVisible(true);
        hideControl(control.getCombo(), false, false);
      }
    }
    nameText.getParent().layout();
  }
  private boolean validateFields() {
    String errorMsg = null;
    boolean valid = true;
    if (dialog.getOKButton() != null) {
      dialog.getOKButton().setEnabled(true);
    }
    IBrandingService brandingService =
        (IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class);
    boolean isOnlyRemoteConnection =
        brandingService.getBrandingConfiguration().isOnlyRemoteConnection();
    boolean usesMailCheck = brandingService.getBrandingConfiguration().isUseMailLoginCheck();
    LabelText emptyUrl = null;
    if (getRepository() != null) {
      for (LabelText currentUrlLabel : dynamicRequiredControls.get(getRepository()).values()) {
        if (valid && currentUrlLabel.getText().length() == 0) {
          emptyUrl = currentUrlLabel;
        }
      }
    }
    if (valid && getRepository() == null) {
      errorMsg = Messages.getString("connections.form.emptyField.repository"); // $NON-NLS-1$
    } else if (valid && getTextName().length() == 0) {
      errorMsg = Messages.getString("connections.form.emptyField.connname"); // $NON-NLS-1$
    } else if (valid && getUser().length() == 0) {
      errorMsg = Messages.getString("connections.form.emptyField.username"); // $NON-NLS-1$
    } else if (valid
        && usesMailCheck
        && !Pattern.matches(RepositoryConstants.MAIL_PATTERN, getUser())) {
      errorMsg = Messages.getString("connections.form.malformedField.username"); // $NON-NLS-1$
    } else if (valid && emptyUrl != null) {
      errorMsg =
          Messages.getString(
              "connections.form.dynamicFieldEmpty", emptyUrl.getLabel()); // $NON-NLS-1$
    } else if (valid && !this.isValidatedWorkspace(this.getWorkspace())) {
      errorMsg = Messages.getString("ConnectionFormComposite.workspaceInvalid"); // $NON-NLS-1$
    } else if (valid && isOnlyRemoteConnection) {
      // Uniserv feature 8,Add new Extension point to allow Uniserv to add some custom controls
      // during TAC
      // connection check
      List<ILoginConnectionService> loginConnections =
          LoginConnectionManager.getRemoteConnectionService();
      for (ILoginConnectionService loginConncetion : loginConnections) {
        errorMsg =
            loginConncetion.checkConnectionValidation(
                getTextName(),
                getDesc(),
                getUser(),
                getPassword(),
                getWorkspace(),
                connection.getDynamicFields().get(RepositoryConstants.REPOSITORY_URL));
      }
    } else if (valid && getTextName() != null) {
      List<ConnectionBean> connectionBeanList = dialog.getConnections();
      if (connectionBeanList != null && connectionBeanList.size() > 1) {
        for (ConnectionBean connectionBean : connectionBeanList) {
          String connectionBeanName = connectionBean.getName();
          if (connectionBeanName != null) {
            if (this.connection != connectionBean) {
              if (connectionBeanName.equals(getTextName())) {
                errorMsg =
                    Messages.getString(
                        "ConnectionFormComposite.connectionNameInvalid"); //$NON-NLS-1$
              }
            }
          }
        }
      }
    }
    if (errorMsg != null && !errorMsg.equals("")) { // $NON-NLS-1$
      valid = false;
    }
    if (!valid) {
      dialog.setErrorMessage(errorMsg);
      if (dialog.getOKButton() != null) {
        dialog.getOKButton().setEnabled(false);
      }
    } else {
      dialog.setErrorMessage(null);
    }

    if (connection != null) {
      connection.setComplete(valid);
      connectionsListComposite.refresh(connection);
    }
    return valid;
  }