private void validatePropertyPackage() {

    IPackageFragmentRoot root = fResourceBundlePackage.getSelectedFragmentRoot();
    if ((root == null) || !root.exists()) {
      setInvalid(
          IDX_BUNDLE_PACKAGE,
          NLSUIMessages.NLSAccessorConfigurationDialog_property_package_root_invalid);
      return;
    }

    IPackageFragment fragment = fResourceBundlePackage.getSelected();
    if ((fragment == null) || !fragment.exists()) {
      setInvalid(
          IDX_BUNDLE_PACKAGE,
          NLSUIMessages.NLSAccessorConfigurationDialog_property_package_invalid);
      return;
    }

    String pkgName = fragment.getElementName();

    IStatus status = JavaConventionsUtil.validatePackageName(pkgName, root);
    if ((pkgName.length() > 0) && (status.getSeverity() == IStatus.ERROR)) {
      setInvalid(IDX_BUNDLE_PACKAGE, status.getMessage());
      return;
    }

    IPath pkgPath = new Path(pkgName.replace('.', IPath.SEPARATOR)).makeRelative();

    IJavaProject project = fRefactoring.getCu().getJavaProject();
    try {
      IJavaElement element = project.findElement(pkgPath);
      if (element == null || !element.exists()) {
        setInvalid(IDX_BUNDLE_PACKAGE, NLSUIMessages.NLSAccessorConfigurationDialog_must_exist);
        return;
      }
      IPackageFragment fPkgFragment = (IPackageFragment) element;
      if (!PackageBrowseAdapter.canAddPackage(fPkgFragment)) {
        setInvalid(
            IDX_BUNDLE_PACKAGE, NLSUIMessages.NLSAccessorConfigurationDialog_incorrect_package);
        return;
      }
      if (!PackageBrowseAdapter.canAddPackageRoot(
          (IPackageFragmentRoot) fPkgFragment.getParent())) {
        setInvalid(
            IDX_BUNDLE_PACKAGE, NLSUIMessages.NLSAccessorConfigurationDialog_incorrect_package);
        return;
      }
    } catch (JavaModelException e) {
      setInvalid(IDX_BUNDLE_PACKAGE, e.getStatus().getMessage());
      return;
    }

    setValid(IDX_BUNDLE_PACKAGE);
  }
  void updateRefactoring() {
    fRefactoring.setAccessorClassPackage(fAccessorPackage.getSelected());
    fRefactoring.setAccessorClassName(fAccessorClassName.getText());

    fRefactoring.setResourceBundleName(fResourceBundleFile.getText());
    fRefactoring.setResourceBundlePackage(fResourceBundlePackage.getSelected());

    if (!fRefactoring.isEclipseNLS())
      fRefactoring.setSubstitutionPattern(fSubstitutionPattern.getText());

    fRefactoring.setIsEclipseNLS(fRefactoring.detectIsEclipseNLS());
  }
  private void createPropertyPart(Composite parent, final int nOfColumns, final int textWidth) {
    createLabel(parent, NLSUIMessages.NLSAccessorConfigurationDialog_property_location, nOfColumns);
    fResourceBundlePackage.createControl(parent, nOfColumns, textWidth);

    fResourceBundleFile.doFillIntoGrid(parent, nOfColumns);
    LayoutUtil.setWidthHint(
        fResourceBundleFile.getTextControl(null), convertWidthInCharsToPixels(60));
  }
  private void checkPackageFragment() {
    IPackageFragmentRoot root = fAccessorPackage.getSelectedFragmentRoot();
    if ((root == null) || !root.exists()) {
      setInvalid(
          IDX_ACCESSOR_PACKAGE,
          NLSUIMessages.NLSAccessorConfigurationDialog_accessor_package_root_invalid);
      return;
    }

    IPackageFragment fragment = fAccessorPackage.getSelected();
    if ((fragment == null) || !fragment.exists()) {
      setInvalid(
          IDX_ACCESSOR_PACKAGE,
          NLSUIMessages.NLSAccessorConfigurationDialog_accessor_package_invalid);
      return;
    }
    setValid(IDX_ACCESSOR_PACKAGE);
  }
  protected void browseForAccessorClass() {
    IProgressService service = PlatformUI.getWorkbench().getProgressService();
    IPackageFragmentRoot root = fAccessorPackage.getSelectedFragmentRoot();

    IJavaSearchScope scope =
        root != null
            ? SearchEngine.createJavaSearchScope(new IJavaElement[] {root})
            : SearchEngine.createWorkspaceScope();

    FilteredTypesSelectionDialog dialog =
        new FilteredTypesSelectionDialog(
            getShell(), false, service, scope, IJavaSearchConstants.CLASS);
    dialog.setTitle(NLSUIMessages.NLSAccessorConfigurationDialog_Accessor_Selection);
    dialog.setMessage(NLSUIMessages.NLSAccessorConfigurationDialog_Choose_the_accessor_file);
    dialog.setInitialPattern("*Messages"); // $NON-NLS-1$
    if (dialog.open() == Window.OK) {
      IType selectedType = (IType) dialog.getFirstResult();
      if (selectedType != null) {
        fAccessorClassName.setText(selectedType.getElementName());
        fAccessorPackage.setSelected(selectedType.getPackageFragment());
      }
    }
  }
  private void createAccessorPart(Composite parent, final int nOfColumns, int textWidth) {
    createLabel(
        parent, NLSUIMessages.NLSAccessorConfigurationDialog_resourceBundle_title, nOfColumns);
    fAccessorPackage.createControl(parent, nOfColumns, textWidth);

    fAccessorClassName.doFillIntoGrid(parent, nOfColumns);
    Text accessorClassText = fAccessorClassName.getTextControl(null);
    LayoutUtil.setWidthHint(accessorClassText, convertWidthInCharsToPixels(60));
    TextFieldNavigationHandler.install(accessorClassText);

    fSubstitutionPattern.doFillIntoGrid(parent, nOfColumns);
    Text substitutionPatternText = fSubstitutionPattern.getTextControl(null);
    LayoutUtil.setWidthHint(substitutionPatternText, convertWidthInCharsToPixels(60));
    TextFieldNavigationHandler.install(substitutionPatternText);

    fSubstitutionPattern.setEnabled(!fRefactoring.isEclipseNLS());
  }
  private void validateAccessorClassName() {
    String className = fAccessorClassName.getText();

    IStatus status =
        JavaConventionsUtil.validateJavaTypeName(
            className, fAccessorPackage.getSelectedFragmentRoot());
    if (status.getSeverity() == IStatus.ERROR) {
      setInvalid(IDX_ACCESSOR_CLASS, status.getMessage());
      return;
    }

    if (className.indexOf('.') != -1) {
      setInvalid(IDX_ACCESSOR_CLASS, NLSUIMessages.NLSAccessorConfigurationDialog_no_dot);
      return;
    }

    setValid(IDX_ACCESSOR_CLASS);
  }
  private Object[] createFileListInput() {
    try {

      IPackageFragment fPkgFragment = fResourceBundlePackage.getSelected();
      if (fPkgFragment == null) return new Object[0];
      List<Object> result = new ArrayList<Object>(1);
      Object[] nonjava = fPkgFragment.getNonJavaResources();
      for (int i = 0; i < nonjava.length; i++) {
        if (isPropertyFile(nonjava[i])) result.add(nonjava[i]);
      }
      return result.toArray();

    } catch (JavaModelException e) {
      ExceptionHandler.handle(
          e,
          NLSUIMessages.NLSAccessorConfigurationDialog_externalizing,
          NLSUIMessages.NLSAccessorConfigurationDialog_exception);
      return new Object[0];
    }
  }