public void setSpecificConfiguration(
     Map<String, String> newPropertyValues,
     Map<String, Integer> newMessageSeverities,
     IProject project) {
   if (project != null && hasProjectSpecificOptions(project)) {
     for (Map.Entry<String, String> entry : newPropertyValues.entrySet()) {
       SpringCorePreferences.getProjectPreferences(project)
           .putString(PROPERTY_PREFIX + entry.getKey(), entry.getValue());
     }
     for (Map.Entry<String, Integer> entry : newMessageSeverities.entrySet()) {
       SpringCorePreferences.getProjectPreferences(project)
           .putString(MESSAGE_PREFIX + entry.getKey(), Integer.toString(entry.getValue()));
     }
   } else {
     for (Map.Entry<String, String> entry : newPropertyValues.entrySet()) {
       SpringCore.getDefault()
           .getPluginPreferences()
           .setValue(PROPERTY_PREFIX + entry.getKey(), entry.getValue());
     }
     for (Map.Entry<String, Integer> entry : newMessageSeverities.entrySet()) {
       SpringCore.getDefault()
           .getPluginPreferences()
           .setValue(MESSAGE_PREFIX + entry.getKey(), Integer.toString(entry.getValue()));
     }
   }
 }
  /** {@inheritDoc} */
  @Override
  protected void doConfigure(
      final MavenProject mavenProject,
      IProject project,
      ProjectConfigurationRequest request,
      final IProgressMonitor monitor)
      throws CoreException {

    if (configureNature(project, mavenProject, GAE_NATURE_ID, false, monitor)) {

      // Remove DN support if we use GAE
      if (mavenProject.getPlugin("org.datanucleus:maven-datanucleus-plugin") != null) {
        for (ProjectBuilderDefinition builderDefinition :
            ProjectBuilderDefinitionFactory.getProjectBuilderDefinitions()) {
          if (DN_BUILDER_ID.equals(builderDefinition.getId())) {
            builderDefinition.setEnabled(false, project);
            break;
          }
        }
      }
    } else {
      // Make sure that we add DN support if DN is being used in the pom.xml
      if (mavenProject.getPlugin("org.datanucleus:maven-datanucleus-plugin") != null) {
        for (ProjectBuilderDefinition builderDefinition :
            ProjectBuilderDefinitionFactory.getProjectBuilderDefinitions()) {
          if (DN_BUILDER_ID.equals(builderDefinition.getId())) {
            SpringCorePreferences.getProjectPreferences(project)
                .putBoolean(SpringCore.PROJECT_PROPERTY_ID, true);
            builderDefinition.setEnabled(true, project);
            break;
          }
        }
      }
    }
  }
 protected void readSpecificConfiguration(IProject project) {
   if (project != null && hasProjectSpecificOptions(project)) {
     for (Map.Entry<String, String> entry : originalPropertyValues.entrySet()) {
       String value =
           SpringCorePreferences.getProjectPreferences(project)
               .getString(PROPERTY_PREFIX + entry.getKey(), entry.getValue());
       propertyValues.put(entry.getKey(), value);
     }
     for (Map.Entry<String, Integer> entry : originalMessageSeverities.entrySet()) {
       String value =
           SpringCorePreferences.getProjectPreferences(project)
               .getString(MESSAGE_PREFIX + entry.getKey(), Integer.toString(entry.getValue()));
       messageSeverities.put(entry.getKey(), Integer.valueOf(value));
     }
   } else {
     for (Map.Entry<String, String> entry : originalPropertyValues.entrySet()) {
       String value =
           SpringCore.getDefault()
               .getPluginPreferences()
               .getString(PROPERTY_PREFIX + entry.getKey());
       if (StringUtils.hasText(value)) {
         propertyValues.put(entry.getKey(), value);
       }
     }
     for (Map.Entry<String, Integer> entry : originalMessageSeverities.entrySet()) {
       String value =
           SpringCore.getDefault()
               .getPluginPreferences()
               .getString(MESSAGE_PREFIX + entry.getKey());
       if (StringUtils.hasText(value)) {
         messageSeverities.put(entry.getKey(), Integer.valueOf(value));
       }
     }
   }
   rulePropertiesInitialized = false;
 }
  public Control createControl(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = 3;
    layout.marginWidth = 3;
    composite.setLayout(layout);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));

    Label description = new Label(composite, SWT.WRAP);
    description.setText(BeansUIPlugin.getResourceString(DESCRIPTION));
    description.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Composite tableAndButtons = new Composite(composite, SWT.NONE);
    tableAndButtons.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    layout.numColumns = 2;
    tableAndButtons.setLayout(layout);

    // Create table and viewer for Spring bean config files
    configsTable =
        new Table(
            tableAndButtons,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    data.widthHint = TABLE_WIDTH;
    data.heightHint = TABLE_WIDTH;
    configsTable.setLayoutData(data);
    configsTable.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            handleTableSelectionChanged();
          }
        });
    configsViewer = new TableViewer(configsTable);
    configsViewer.setContentProvider(new ConfigFilesContentProvider(project));
    configsViewer.setLabelProvider(new PropertiesModelLabelProvider());
    configsViewer.setInput(this); // activate content provider
    configsViewer.setSorter(new ConfigFilesSorter());

    if (this.selectedElement != null) {
      configsViewer.setSelection(new StructuredSelection(selectedElement), true);
    }

    if (BeansConfigLocatorFactory.hasEnabledBeansConfigLocatorDefinitions(project.getProject())) {
      Label note = new Label(composite, SWT.WRAP);
      note.setText(BeansUIPlugin.getResourceString(NOTE_LABEL));
      note.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    }

    Label options = new Label(composite, SWT.WRAP);
    options.setText("Options:");
    options.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    // Create enable import checkbox
    enableImportText =
        SpringUIUtils.createCheckBox(
            composite, BeansUIPlugin.getResourceString(ENABLE_IMPORT_LABEL));
    enableImportText.setSelection(project.isImportsEnabled());
    enableImportText.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            handleImportEnabledChanged();
          }
        });

    // Create ignore missing namespace handler checkbox
    ignoreMissingNamespaceHandlerText =
        SpringUIUtils.createCheckBox(
            composite, BeansUIPlugin.getResourceString(IGNORE_MISSING_NAMESPACEHANDLER_LABEL));
    ignoreMissingNamespaceHandlerText.setSelection(
        SpringCorePreferences.getProjectPreferences(project.getProject(), BeansCorePlugin.PLUGIN_ID)
            .getBoolean(
                BeansCorePlugin.IGNORE_MISSING_NAMESPACEHANDLER_PROPERTY,
                BeansCorePlugin.IGNORE_MISSING_NAMESPACEHANDLER_PROPERTY_DEFAULT));
    ignoreMissingNamespaceHandlerText.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            hasUserMadeChanges = true;
          }
        });

    // Create suffix text field
    suffixesText =
        SpringUIUtils.createTextField(composite, BeansUIPlugin.getResourceString(SUFFIXES_LABEL));
    suffixesText.setText(StringUtils.collectionToDelimitedString(project.getConfigSuffixes(), ","));
    suffixesText.addModifyListener(
        new ModifyListener() {
          public void modifyText(ModifyEvent e) {
            handleSuffixesTextModified();
          }
        });

    // Create error label
    errorLabel = new Label(composite, SWT.NONE);
    errorLabel.setLayoutData(
        new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL));
    errorLabel.setForeground(JFaceColors.getErrorText(parent.getDisplay()));
    errorLabel.setBackground(JFaceColors.getErrorBackground(parent.getDisplay()));
    // Create button area
    Composite buttonArea = new Composite(tableAndButtons, SWT.NONE);
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttonArea.setLayout(layout);
    buttonArea.setLayoutData(new GridData(GridData.FILL_VERTICAL));
    addButton =
        SpringUIUtils.createButton(
            buttonArea, BeansUIPlugin.getResourceString(ADD_BUTTON), buttonListener);
    removeButton =
        SpringUIUtils.createButton(
            buttonArea, BeansUIPlugin.getResourceString(REMOVE_BUTTON), buttonListener, 0, false);
    scanButton = SpringUIUtils.createButton(buttonArea, "Scan...", buttonListener);
    model.addChangeListener(modelChangeListener);
    handleSuffixesTextModified();
    hasUserMadeChanges = false;
    // handleSuffixTextModified() has set this to true

    handleTableSelectionChanged();
    return composite;
  }