blob: ddee9041cb0107430e6488e8b76555639e94c610 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.cdt.ui.contentassist;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalCategory;
import org.eclipse.cdt.internal.ui.text.contentassist.CompletionProposalComputerRegistry;
import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.jface.preference.IPreferenceStore;
/**
* @author Shawn Minto
*/
public class CDTContentAssistUtils {
private static final String SEPARATOR_CODEASSIST = "\0"; //$NON-NLS-1$
public static final String ASSIST_MYLYN_TYPE = "org.eclipse.mylyn.cdt.ui.parserProposalCategory"; //$NON-NLS-1$
public static final String ASSIST_CDT_TYPE = "org.eclipse.cdt.ui.parserProposalCategory"; //$NON-NLS-1$
public static void installContentAssist(IPreferenceStore cdtPrefs, boolean mylynContentAssist) {
Set<String> disabledIds = getDisableContentAssistIds(cdtPrefs);
if (!mylynContentAssist) {
disabledIds.remove(ASSIST_CDT_TYPE);
disabledIds.add(ASSIST_MYLYN_TYPE);
} else {
disabledIds.add(ASSIST_CDT_TYPE);
disabledIds.remove(ASSIST_MYLYN_TYPE);
}
String newValue = ""; //$NON-NLS-1$
for (String id : disabledIds) {
newValue += id + SEPARATOR_CODEASSIST;
}
cdtPrefs.setValue(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES, newValue);
CompletionProposalComputerRegistry registry = CompletionProposalComputerRegistry.getDefault();
List<CompletionProposalCategory> categories = registry.getProposalCategories();
for (CompletionProposalCategory cat : categories) {
if (disabledIds.contains(cat.getId())) {
cat.setIncluded(false);
} else {
cat.setIncluded(true);
}
}
}
public static Set<String> getDisableContentAssistIds(IPreferenceStore cdtPrefs) {
String oldValue = cdtPrefs.getString(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES);
StringTokenizer tokenizer = new StringTokenizer(oldValue, SEPARATOR_CODEASSIST);
Set<String> disabledIds = new HashSet<String>();
while (tokenizer.hasMoreTokens()) {
disabledIds.add((String) tokenizer.nextElement());
}
return disabledIds;
}
public static void updateDefaultPreference(IPreferenceStore cdtPrefs) {
// the Task-Focused category should be disabled if the user reverts to the default
String defaultValue = cdtPrefs.getDefaultString(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES);
cdtPrefs.setDefault(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES, defaultValue + ASSIST_MYLYN_TYPE
+ SEPARATOR_CODEASSIST);
}
}