public static NLSRefactoring create(ICompilationUnit cu) { if (cu == null || !cu.exists()) return null; return new NLSRefactoring(cu); }
protected void doAccessorSelectionChanged() { int selectionIndex= fAccessorClassField.getSelectionIndex(); if (fAccessorChoices != null && selectionIndex < fAccessorChoices.length) { AccessorDescription selected= fAccessorChoices[selectionIndex]; fNLSRefactoring.setAccessorClassName(selected.getAccessorClassName()); fNLSRefactoring.setAccessorClassPackage(selected.getAccessorClassPackage()); fNLSRefactoring.setResourceBundleName(selected.getResourceBundleName()); fNLSRefactoring.setResourceBundlePackage(selected.getResourceBundlePackage()); fNLSRefactoring.setIsEclipseNLS(fNLSRefactoring.detectIsEclipseNLS()); NLSSubstitution.updateSubtitutions(fSubstitutions, getProperties(fNLSRefactoring.getPropertyFileHandle()), fNLSRefactoring.getAccessorClassName()); if (fIsEclipseNLS != null) { fIsEclipseNLS.setSelection(fNLSRefactoring.isEclipseNLS()); fIsEclipseNLS.setEnabled(willCreateAccessorClass()); } validateKeys(true); } }
private ICompilationUnit getAccessorCu() { return fAccessorClassPackage.getCompilationUnit(getAccessorCUName()); }
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()); }
public boolean willCreateAccessorClass() throws JavaModelException { ICompilationUnit compilationUnit= getAccessorCu(); if (compilationUnit.exists()) { return false; } if (typeNameExistsInPackage(fAccessorClassPackage, fAccessorClassName)) { return false; } return (!Checks.resourceExists(getAccessorCUPath())); }
private NLSRefactoring(ICompilationUnit cu) { Assert.isNotNull(cu); fCu= cu; CompilationUnit astRoot= SharedASTProvider.getAST(fCu, SharedASTProvider.WAIT_YES, null); NLSHint nlsHint= new NLSHint(fCu, astRoot); fSubstitutions= nlsHint.getSubstitutions(); setAccessorClassName(nlsHint.getAccessorClassName()); setAccessorClassPackage(nlsHint.getAccessorClassPackage()); setIsEclipseNLS(detectIsEclipseNLS()); setResourceBundleName(nlsHint.getResourceBundleName()); setResourceBundlePackage(nlsHint.getResourceBundlePackage()); setSubstitutionPattern(DEFAULT_SUBST_PATTERN); String cuName= fCu.getElementName(); if (fIsEclipseNLS) setPrefix(cuName.substring(0, cuName.length() - 5) + "_"); // A.java -> A_ //$NON-NLS-1$ else setPrefix(cuName.substring(0, cuName.length() - 4)); // A.java -> A. }
public Change createChange(IProgressMonitor pm) throws CoreException { try { checkParameters(); boolean createAccessorClass= willCreateAccessorClass(); if (NLSSubstitution.countItems(fSubstitutions, NLSSubstitution.EXTERNALIZED) == 0) { createAccessorClass= false; result.add(AccessorClassCreator.create(fCu, fAccessorClassName, getAccessorCUPath(), fAccessorClassPackage, getPropertyFilePath(), fIsEclipseNLS, fSubstitutions, getSubstitutionPattern(), new SubProgressMonitor(pm, 1))); if (willModifySource()) { result.add(NLSSourceModifier.create(getCu(), fSubstitutions, getSubstitutionPattern(), fAccessorClassPackage, fAccessorClassName, fIsEclipseNLS)); if (willModifyPropertyFile()) { result.add(NLSPropertyFileModifier.create(fSubstitutions, getPropertyFilePath())); if (isEclipseNLS() && !createAccessorClass) { Change change= AccessorClassModifier.create(getAccessorCu(), fSubstitutions); if (change != null) result.add(change);
public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { checkParameters(); try { result.merge(checkIfAnythingToDo()); if (result.hasFatalError()) { return result; result.merge(validateModifiesFiles()); if (result.hasFatalError()) { return result; throw new OperationCanceledException(); result.merge(checkSubstitutionPattern()); pm.worked(1); result.merge(checkKeys()); pm.worked(1); if (pm.isCanceled()) throw new OperationCanceledException(); if (!propertyFileExists() && willModifyPropertyFile()) { String msg= Messages.format(NLSMessages.NLSRefactoring_will_be_created, getPropertyFilePath().toString()); result.addInfo(msg);
/** * Computes whether the Eclipse NLSing mechanism is used. * * @return <code>true</code> if NLSing is done the Eclipse way * and <code>false</code> if the standard resource bundle mechanism is used * @since 3.1 */ public boolean detectIsEclipseNLS() { ICompilationUnit accessorCU= getAccessorClassPackage().getCompilationUnit(getAccessorCUName()); IType type= accessorCU.getType(getAccessorClassName()); if (type.exists()) { try { String superclassName= type.getSuperclassName(); if (!"NLS".equals(superclassName) && !NLS.class.getName().equals(superclassName)) //$NON-NLS-1$ return false; IType superclass= type.newSupertypeHierarchy(null).getSuperclass(type); return superclass != null && NLS.class.getName().equals(superclass.getFullyQualifiedName()); } catch (JavaModelException e) { // use default } } // Bug 271375: Make the default be to use Eclipse's NLS mechanism if it's available. return isEclipseNLSAvailable(); }
/** * Computes whether the Eclipse NLSing mechanism is used. * * @return <code>true</code> if NLSing is done the Eclipse way * and <code>false</code> if the standard resource bundle mechanism is used * @since 3.1 */ public boolean detectIsEclipseNLS() { if (getAccessorClassPackage() != null) { ICompilationUnit accessorCU= getAccessorClassPackage().getCompilationUnit(getAccessorCUName()); IType type= accessorCU.getType(getAccessorClassName()); if (type.exists()) { try { String superclassName= type.getSuperclassName(); if (!"NLS".equals(superclassName) && !NLS.class.getName().equals(superclassName)) //$NON-NLS-1$ return false; IType superclass= type.newSupertypeHierarchy(null).getSuperclass(type); return superclass != null && NLS.class.getName().equals(superclass.getFullyQualifiedName()); } catch (JavaModelException e) { return false; } } } return fIsEclipseNLS; }
@Override public void run() { NLSRefactoring refactoring= null; try { refactoring= NLSRefactoring.create(unit); } catch (IllegalArgumentException e) { // Loading a properties file can throw an IAE due to malformed Unicode escape sequence, see Properties#load for details. IStatus status= new Status(IStatus.ERROR, JavaPlugin.getPluginId(), e.getLocalizedMessage()); ExceptionHandler.handle(status, NLSUIMessages.ExternalizeWizard_name, NLSUIMessages.ExternalizeWizard_error_message); } if (refactoring != null) new RefactoringStarter().activate(new ExternalizeWizard(refactoring), shell, ActionMessages.ExternalizeStringsAction_dialog_title, RefactoringSaveHelper.SAVE_REFACTORING); } });
private RefactoringStatus checkKeys() { RefactoringStatus result= new RefactoringStatus(); NLSSubstitution[] subs= fSubstitutions; for (int i= 0; i < subs.length; i++) { NLSSubstitution substitution= subs[i]; if ((substitution.getState() == NLSSubstitution.EXTERNALIZED) && substitution.hasStateChanged()) { result.merge(checkKey(substitution.getKey())); } } return result; }
public IPath getAccessorClassFilePath() { return getAccessorCUPath(); }
@Override public Change createChange(IProgressMonitor pm) throws CoreException { try { checkParameters(); boolean createAccessorClass= willCreateAccessorClass(); if (NLSSubstitution.countItems(fSubstitutions, NLSSubstitution.EXTERNALIZED) == 0) { createAccessorClass= false; result.add(AccessorClassCreator.create(fCu, fAccessorClassName, getAccessorCUPath(), fAccessorClassPackage, getPropertyFilePath(), fIsEclipseNLS, fSubstitutions, getSubstitutionPattern(), new SubProgressMonitor(pm, 1))); if (willModifySource()) { result.add(NLSSourceModifier.create(getCu(), fSubstitutions, getSubstitutionPattern(), fAccessorClassPackage, fAccessorClassName, fIsEclipseNLS)); if (willModifyPropertyFile()) { result.add(NLSPropertyFileModifier.create(fSubstitutions, getPropertyFilePath())); if (isEclipseNLS() && !createAccessorClass) { Change change= AccessorClassModifier.create(getAccessorCu(), fSubstitutions); if (change != null) result.add(change);
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 NLSRefactoring(ICompilationUnit cu) { Assert.isNotNull(cu); fCu= cu; CompilationUnit astRoot= SharedASTProviderCore.getAST(fCu, SharedASTProviderCore.WAIT_YES, null); NLSHint nlsHint= new NLSHint(fCu, astRoot); fSubstitutions= nlsHint.getSubstitutions(); setAccessorClassName(nlsHint.getAccessorClassName()); setAccessorClassPackage(nlsHint.getAccessorClassPackage()); setIsEclipseNLS(detectIsEclipseNLS()); setResourceBundleName(nlsHint.getResourceBundleName()); setResourceBundlePackage(nlsHint.getResourceBundlePackage()); setSubstitutionPattern(DEFAULT_SUBST_PATTERN); String cuName= fCu.getElementName(); if (fIsEclipseNLS) setPrefix(cuName.substring(0, cuName.length() - 5) + "_"); // A.java -> A_ //$NON-NLS-1$ else setPrefix(cuName.substring(0, cuName.length() - 4)); // A.java -> A. }
@Override public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException { checkParameters(); try { result.merge(checkIfAnythingToDo()); if (result.hasFatalError()) { return result; result.merge(validateModifiesFiles()); if (result.hasFatalError()) { return result; throw new OperationCanceledException(); result.merge(checkSubstitutionPattern()); pm.worked(1); result.merge(checkKeys()); pm.worked(1); if (pm.isCanceled()) throw new OperationCanceledException(); if (!propertyFileExists() && willModifyPropertyFile()) { String msg= Messages.format(NLSMessages.NLSRefactoring_will_be_created, BasicElementLabels.getPathLabel(getPropertyFilePath(), false)); result.addInfo(msg);
public boolean willCreateAccessorClass() throws JavaModelException { ICompilationUnit compilationUnit= getAccessorCu(); if (compilationUnit.exists()) { return false; } if (typeNameExistsInPackage(fAccessorClassPackage, fAccessorClassName)) { return false; } return (!Checks.resourceExists(getAccessorCUPath())); }
/** * Computes whether the Eclipse NLSing mechanism is used. * * @return <code>true</code> if NLSing is done the Eclipse way * and <code>false</code> if the standard resource bundle mechanism is used * @since 3.1 */ public boolean detectIsEclipseNLS() { ICompilationUnit accessorCU= getAccessorClassPackage().getCompilationUnit(getAccessorCUName()); IType type= accessorCU.getType(getAccessorClassName()); if (type.exists()) { try { String superclassName= type.getSuperclassName(); if (!"NLS".equals(superclassName) && !NLS.class.getName().equals(superclassName)) //$NON-NLS-1$ return false; IType superclass= type.newSupertypeHierarchy(null).getSuperclass(type); return superclass != null && NLS.class.getName().equals(superclass.getFullyQualifiedName()); } catch (JavaModelException e) { // use default } } // Bug 271375: Make the default be to use Eclipse's NLS mechanism if it's available. return isEclipseNLSAvailable(); }
@Override public void run() { NLSRefactoring refactoring= null; try { refactoring= NLSRefactoring.create(unit); } catch (IllegalArgumentException e) { // Loading a properties file can throw an IAE due to malformed Unicode escape sequence, see Properties#load for details. IStatus status= new Status(IStatus.ERROR, JavaPlugin.getPluginId(), e.getLocalizedMessage()); ExceptionHandler.handle(status, NLSUIMessages.ExternalizeWizard_name, NLSUIMessages.ExternalizeWizard_error_message); } if (refactoring != null) new RefactoringStarter().activate(new ExternalizeWizard(refactoring), shell, ActionMessages.ExternalizeStringsAction_dialog_title, RefactoringSaveHelper.SAVE_REFACTORING); } });