blob: e03e51aeed64dff24a7e4021c7eeb050e1b4d581 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2017 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.dltk.internal.mylyn;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import org.eclipse.dltk.ui.DLTKUIPlugin;
import org.eclipse.dltk.ui.PreferenceConstants;
import org.eclipse.dltk.ui.text.completion.CompletionProposalCategory;
import org.eclipse.dltk.ui.text.completion.CompletionProposalComputerRegistry;
import org.eclipse.jface.preference.IPreferenceStore;
/**
* @author Mik Kersten
*/
public class DLTKUiUtil {
static final String SEPARATOR_CODEASSIST = "\0"; //$NON-NLS-1$
public static final String ASSIST_MYLYN_ALL = "org.eclipse.dltk.mylyn.dltkAllProposalCategory"; //$NON-NLS-1$
public static final String ASSIST_DLTK_ALL = "org.eclipse.dltk.ui.defaultProposalCategory"; //$NON-NLS-1$
public static final String ASSIST_DLTK_TYPE = "org.eclipse.dltk.ui.scriptTypeProposalCategory"; //$NON-NLS-1$
public static final String ASSIST_DLTK_TEXT = "org.eclipse.dltk.ui.textProposalCategory"; //$NON-NLS-1$
public static final String ASSIST_DLTK_NOTYPE = "org.eclipse.dltk.ui.scriptNoTypeProposalCategory"; //$NON-NLS-1$
private static final String ASSIST_DLTK_TEMPLATE = "org.eclipse.dltk.ui.templateProposalCategory"; //$NON-NLS-1$
public static boolean isDefaultAssistActive(String computerId) {
if (DLTKUiUtil.ASSIST_DLTK_ALL.equals(computerId)) {
CompletionProposalCategory category = getProposalCategory(computerId);
return (category != null) ? category.isEnabled() && category.isIncluded() : false;
}
Set<String> disabledIds = getDisabledIds(DLTKUIPlugin.getDefault().getPreferenceStore());
return !disabledIds.contains(computerId);
}
public static CompletionProposalCategory getProposalCategory(String computerId) {
List<?> computers = CompletionProposalComputerRegistry.getDefault().getProposalCategories();
for (Object object : computers) {
CompletionProposalCategory proposalCategory = (CompletionProposalCategory) object;
if (computerId.equals((proposalCategory).getId())) {
return proposalCategory;
}
}
return null;
}
public static void installContentAssist(IPreferenceStore javaPrefs, boolean mylynContentAssist) {
Set<String> disabledIds = getDisabledIds(javaPrefs);
if (!mylynContentAssist) {
disabledIds.remove(ASSIST_DLTK_ALL);
disabledIds.remove(ASSIST_DLTK_TYPE);
disabledIds.remove(ASSIST_DLTK_NOTYPE);
disabledIds.add(ASSIST_MYLYN_ALL);
} else {
disabledIds.add(ASSIST_DLTK_ALL);
disabledIds.add(ASSIST_DLTK_TYPE);
disabledIds.add(ASSIST_DLTK_NOTYPE);
// re-enable, Mylyn versions <3.1 had a focused template computer
// that has been removed
disabledIds.remove(ASSIST_DLTK_TEMPLATE);
disabledIds.remove(ASSIST_DLTK_TEXT);
disabledIds.remove(ASSIST_MYLYN_ALL);
}
StringBuilder sb = new StringBuilder();
for (String id : disabledIds) {
sb.append(id);
sb.append(SEPARATOR_CODEASSIST);
}
javaPrefs.setValue(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES, sb.toString());
CompletionProposalComputerRegistry.getDefault().reload();
}
public static Set<String> getDisabledIds(IPreferenceStore javaPrefs) {
String oldValue = javaPrefs.getString(PreferenceConstants.CODEASSIST_EXCLUDED_CATEGORIES);
StringTokenizer tokenizer = new StringTokenizer(oldValue, SEPARATOR_CODEASSIST);
Set<String> disabledIds = new HashSet<>();
while (tokenizer.hasMoreTokens()) {
disabledIds.add((String) tokenizer.nextElement());
}
return disabledIds;
}
}