private void createAnnotationAccordionGroup(
      final Annotation annotation, final AnnotationSource annotationSource) {

    final Panel container = new Panel();
    final PanelHeader header = new PanelHeader();
    final PanelCollapse collapse = new PanelCollapse();
    final PanelBody body = new PanelBody();

    container.add(header);
    collapse.add(body);
    container.add(collapse);

    final Button remove = new Button();
    remove.addClickHandler(
        new ClickHandler() {
          @Override
          public void onClick(final ClickEvent clickEvent) {
            presenter.onDeleteAnnotation(annotation);
          }
        });
    remove.setPull(Pull.RIGHT);
    remove.setIcon(IconType.TRASH);
    remove.setType(ButtonType.DANGER);
    remove.setSize(ButtonSize.SMALL);
    remove.getElement().getStyle().setMarginTop(-4, Style.Unit.PX);
    header.add(remove);

    final Heading heading = new Heading(HeadingSize.H4);
    final Anchor anchor = new Anchor();
    anchor.setText(accordionHeading(annotation));
    anchor.setDataToggle(Toggle.COLLAPSE);
    anchor.setDataParent(accordionsContainer.getId());
    anchor.setDataTargetWidget(collapse);
    anchor.addStyleName("collapsed");
    heading.add(anchor);
    header.add(heading);

    accordionsContainer.add(container);

    if (annotation.getAnnotationDefinition() != null
        && annotation.getAnnotationDefinition().getValuePairs() != null) {
      for (AnnotationValuePairDefinition valuePairDefinition :
          annotation.getAnnotationDefinition().getValuePairs()) {
        body.add(createValuePairItem(annotation, valuePairDefinition, annotationSource));
      }
    }
  }
  @Override
  public void setMode(ViewMode mode) {
    this.mode = mode;

    if (mode == ViewMode.CREATE_STRUCTURE) {

      projectTypeLabel.setText(
          Constants.INSTANCE.Repository_structure_view_create_projectTypeLabel());

      groupIdTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_create_groupIdTextBoxHelpInline());
      artifactIdTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_create_artifactIdTextBoxHelpInline());
      versionTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_create_versionTextBoxHelpInline());

    } else if (mode == ViewMode.EDIT_SINGLE_MODULE_PROJECT) {

      projectTypeLabel.setText(
          Constants.INSTANCE.Repository_structure_view_edit_single_projectTypeLabel());

      groupIdTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_edit_single_groupIdTextBoxHelpInline());
      artifactIdTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_edit_single_artifactIdTextBoxHelpInline());
      versionTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_edit_single_versionTextBoxHelpInline());

      groupIdTextBox.setVisible(true);
      groupIdTextBoxHelpInline.setVisible(true);
      artifactIdTextBox.setVisible(true);
      artifactIdTextBoxHelpInline.setVisible(true);
      versionTextBox.setVisible(true);
      versionTextBoxHelpInline.setVisible(true);

    } else if (mode == ViewMode.EDIT_MULTI_MODULE_PROJECT) {

      projectTypeLabel.setText(
          Constants.INSTANCE.Repository_structure_view_edit_multi_projectTypeLabel());

      groupIdTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_edit_multi_groupIdTextBoxHelpInline());
      artifactIdTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_edit_multi_artifactIdTextBoxHelpInline());
      versionTextBoxHelpInline.setText(
          Constants.INSTANCE.Repository_structure_view_edit_multi_versionTextBoxHelpInline());

      groupIdTextBox.setVisible(true);
      groupIdTextBoxHelpInline.setVisible(true);
      artifactIdTextBox.setVisible(true);
      artifactIdTextBoxHelpInline.setVisible(true);
      versionTextBox.setVisible(true);
      versionTextBoxHelpInline.setVisible(true);

    } else if (mode == ViewMode.EDIT_UNMANAGED_REPOSITORY) {

      projectTypeLabel.setText(
          Constants.INSTANCE.Repository_structure_view_edit_unmanaged_projectTypeLabel());

      groupIdTextBox.setVisible(false);
      groupIdTextBoxHelpInline.setVisible(false);
      artifactIdTextBox.setVisible(false);
      artifactIdTextBoxHelpInline.setVisible(false);
      versionTextBox.setVisible(false);
      versionTextBoxHelpInline.setVisible(false);
    }
  }