protected void updateProfilesWithName(String oldName, Profile newProfile, boolean applySettings) { IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for (int i = 0; i < projects.length; i++) { IScopeContext projectScope = fPreferencesAccess.getProjectScope(projects[i]); IEclipsePreferences node = projectScope.getNode(JavaUI.ID_PLUGIN); String profileId = node.get(fProfileKey, null); if (oldName.equals(profileId)) { if (newProfile == null) { node.remove(fProfileKey); } else { if (applySettings) { writeToPreferenceStore(newProfile, projectScope); } else { node.put(fProfileKey, newProfile.getID()); } } } } IScopeContext instanceScope = fPreferencesAccess.getInstanceScope(); final IEclipsePreferences uiPrefs = instanceScope.getNode(JavaUI.ID_PLUGIN); if (newProfile != null && oldName.equals(uiPrefs.get(fProfileKey, null))) { writeToPreferenceStore(newProfile, instanceScope); } }
@Override protected void updateProfilesWithName(String oldName, Profile newProfile, boolean applySettings) { super.updateProfilesWithName(oldName, newProfile, applySettings); IEclipsePreferences node = fPreferencesAccess.getInstanceScope().getNode(JavaUI.ID_PLUGIN); String name = node.get(CleanUpConstants.CLEANUP_ON_SAVE_PROFILE, null); if (name != null && name.equals(oldName)) { if (newProfile == null) { node.remove(CleanUpConstants.CLEANUP_ON_SAVE_PROFILE); } else { node.put(CleanUpConstants.CLEANUP_ON_SAVE_PROFILE, newProfile.getID()); } } }
/** * Create and initialize a new profile manager. * * @param profiles Initial custom profiles (List of type <code>CustomProfile</code>) * @param profileVersioner */ public ProfileManager( List<Profile> profiles, IScopeContext context, PreferencesAccess preferencesAccess, IProfileVersioner profileVersioner, KeySet[] keySets, String profileKey, String profileVersionKey) { fPreferencesAccess = preferencesAccess; fProfileVersioner = profileVersioner; fKeySets = keySets; fProfileKey = profileKey; fProfileVersionKey = profileVersionKey; fProfiles = new HashMap<String, Profile>(); fProfilesByName = new ArrayList<Profile>(); for (final Iterator<Profile> iter = profiles.iterator(); iter.hasNext(); ) { final Profile profile = iter.next(); if (profile instanceof CustomProfile) { ((CustomProfile) profile).setManager(this); } fProfiles.put(profile.getID(), profile); fProfilesByName.add(profile); } Collections.sort(fProfilesByName); String profileId = getSelectedProfileId(fPreferencesAccess.getInstanceScope()); Profile profile = fProfiles.get(profileId); if (profile == null) { profile = getDefaultProfile(); } fSelected = profile; if (context.getName() == ProjectScope.SCOPE && hasProjectSpecificSettings(context)) { Map<String, String> map = readFromPreferenceStore(context, profile); if (map != null) { List<String> allKeys = new ArrayList<String>(); for (int i = 0; i < fKeySets.length; i++) { allKeys.addAll(fKeySets[i].getKeys()); } Collections.sort(allKeys); Profile matching = null; String projProfileId = context.getNode(JavaUI.ID_PLUGIN).get(fProfileKey, null); if (projProfileId != null) { Profile curr = fProfiles.get(projProfileId); if (curr != null && (curr.isBuiltInProfile() || curr.hasEqualSettings(map, allKeys))) { matching = curr; } } else { // old version: look for similar for (final Iterator<Profile> iter = fProfilesByName.iterator(); iter.hasNext(); ) { Profile curr = iter.next(); if (curr.hasEqualSettings(map, allKeys)) { matching = curr; break; } } } if (matching == null) { String name; if (projProfileId != null && !fProfiles.containsKey(projProfileId)) { name = Messages.format( FormatterMessages.ProfileManager_unmanaged_profile_with_name, projProfileId.substring(ID_PREFIX.length())); } else { name = FormatterMessages.ProfileManager_unmanaged_profile; } // current settings do not correspond to any profile -> create a 'team' profile SharedProfile shared = new SharedProfile( name, map, fProfileVersioner.getCurrentVersion(), fProfileVersioner.getProfileKind()); shared.setManager(this); fProfiles.put(shared.getID(), shared); fProfilesByName.add(shared); // add last matching = shared; } fSelected = matching; } } }