private void showI18nizeMultipleStringsDialog(@NotNull Project project,
                                                @NotNull List<I18nizedPropertyData<HardcodedStringInFormData>> dataList,
                                                @NotNull HashSet<PsiFile> contextFiles,
                                                @NotNull ResourceBundleManager bundleManager,
                                                @NotNull Map<VirtualFile, RadRootContainer> containerMap,
                                                @NotNull Map<String, List<I18nizedPropertyData<HardcodedStringInFormData>>> duplicates) {
    I18nizeMultipleStringsDialog<HardcodedStringInFormData> dialog =
      new I18nizeMultipleStringsDialog<>(project, dataList, contextFiles, bundleManager,
                                         I18nizeFormBatchFix::createUsageInfo,
                                         UIDesignerIcons.InspectionSuppression,
                                         false);
    if (dialog.showAndGet()) {
      PropertiesFile propertiesFile = dialog.getPropertiesFile();
      PsiManager manager = PsiManager.getInstance(project);
      Set<PsiFile> files = new HashSet<>();
      for (VirtualFile file : containerMap.keySet()) {
        ContainerUtil.addIfNotNull(files, manager.findFile(file));
      }
      if (files.isEmpty()) {
        return;
      }
      files.add(propertiesFile.getContainingFile());

      String bundleName = I18nizeFormQuickFix.getBundleName(project, propertiesFile);
      if (bundleName == null) {
        return;
      }
      WriteCommandAction.runWriteCommandAction(project, getFamilyName(), null, () -> {
        for (I18nizedPropertyData<HardcodedStringInFormData> data : dataList) {
          StringDescriptor valueDescriptor;
          if (!data.markAsNonNls()) {
            JavaI18nUtil.DEFAULT_PROPERTY_CREATION_HANDLER.createProperty(project,
                                                                          Collections.singletonList(propertiesFile),
                                                                          data.key(),
                                                                          data.value(),
                                                                          new UExpression[0]);
            valueDescriptor = new StringDescriptor(bundleName, data.key());
          }
          else {
            valueDescriptor = StringDescriptor.create(data.value());
            valueDescriptor.setNoI18n(true);
          }

          setPropertyValue(data.contextData().getComponent(), data.contextData().getPropertyName(), valueDescriptor);
          List<I18nizedPropertyData<HardcodedStringInFormData>> duplicateValues = duplicates.get(data.value());
          if (duplicateValues != null) {
            for (I18nizedPropertyData<HardcodedStringInFormData> duplicateBean : duplicateValues) {
              setPropertyValue(duplicateBean.contextData().getComponent(), duplicateBean.contextData().getPropertyName(),
                               valueDescriptor);
            }
          }
        }

        for (Map.Entry<VirtualFile, RadRootContainer> entry : containerMap.entrySet()) {
          try {
            final XmlWriter writer = new XmlWriter();
            entry.getValue().write(writer);
            VfsUtil.saveText(entry.getKey(), writer.getText());
          }
          catch (Exception e) {
            LOG.error(e);
          }
        }
      }, files.toArray(PsiFile.EMPTY_ARRAY));
    }
  }
private void showI18nizeMultipleStringsDialog(@NotNull Project project,
                                                @NotNull List<I18nizedPropertyData<HardcodedStringInFormData>> dataList,
                                                @NotNull HashSet<PsiFile> contextFiles,
                                                @NotNull ResourceBundleManager bundleManager,
                                                @NotNull Map<VirtualFile, RadRootContainer> containerMap,
                                                @NotNull Map<String, List<I18nizedPropertyData<HardcodedStringInFormData>>> duplicates)