public ProjectConfigurationProblem(
     ProjectStructureProblemDescription description, Project project) {
   super(
       StringUtil.unescapeXml(description.getMessage(true)),
       computeDescription(description),
       getSettings(project, description.getProblemLevel()).isIgnored(description));
   myDescription = description;
   myProject = project;
 }
  @Override
  public void fix(final JComponent contextComponent, RelativePoint relativePoint) {
    JBPopupFactory.getInstance()
        .createListPopup(
            new BaseListPopupStep<ConfigurationErrorQuickFix>(null, myDescription.getFixes()) {
              @NotNull
              @Override
              public String getTextFor(ConfigurationErrorQuickFix value) {
                return value.getActionName();
              }

              @Override
              public PopupStep onChosen(
                  final ConfigurationErrorQuickFix selectedValue, boolean finalChoice) {
                return doFinalStep(
                    new Runnable() {
                      @Override
                      public void run() {
                        selectedValue.performFix();
                      }
                    });
              }
            })
        .show(relativePoint);
  }
 @Override
 public void setIgnored(@NotNull ProjectStructureProblemDescription description, boolean ignored) {
   final String id = description.getId();
   if (ignored) {
     myIgnoredProblems.add(id);
   } else {
     myIgnoredProblems.remove(id);
   }
 }
 @Override
 public boolean canBeFixed() {
   return !myDescription.getFixes().isEmpty();
 }
 @Override
 public void navigate() {
   myDescription.getPlace().navigate();
 }
 @Override
 public void ignore(boolean ignored) {
   super.ignore(ignored);
   getSettings(myProject, myDescription.getProblemLevel()).setIgnored(myDescription, ignored);
 }
 private static String computeDescription(ProjectStructureProblemDescription description) {
   final String descriptionString = description.getDescription();
   return descriptionString != null ? descriptionString : description.getMessage(true);
 }
 @Override
 public boolean isIgnored(@NotNull ProjectStructureProblemDescription description) {
   return myIgnoredProblems.contains(description.getId());
 }