/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.codeassist.impl; import java.util.Map; import org.eclipse.jdt.core.compiler.CharOperation; public class AssistOptions { /** * Option IDs */ public static final String OPTION_PerformVisibilityCheck = "org.eclipse.jdt.core.codeComplete.visibilityCheck"; //$NON-NLS-1$ public static final String OPTION_PerformDeprecationCheck = "org.eclipse.jdt.core.codeComplete.deprecationCheck"; //$NON-NLS-1$ public static final String OPTION_ForceImplicitQualification = "org.eclipse.jdt.core.codeComplete.forceImplicitQualification"; //$NON-NLS-1$ public static final String OPTION_FieldPrefixes = "org.eclipse.jdt.core.codeComplete.fieldPrefixes"; //$NON-NLS-1$ public static final String OPTION_StaticFieldPrefixes = "org.eclipse.jdt.core.codeComplete.staticFieldPrefixes"; //$NON-NLS-1$ public static final String OPTION_StaticFinalFieldPrefixes = "org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes"; //$NON-NLS-1$ public static final String OPTION_LocalPrefixes = "org.eclipse.jdt.core.codeComplete.localPrefixes"; //$NON-NLS-1$ public static final String OPTION_ArgumentPrefixes = "org.eclipse.jdt.core.codeComplete.argumentPrefixes"; //$NON-NLS-1$ public static final String OPTION_FieldSuffixes = "org.eclipse.jdt.core.codeComplete.fieldSuffixes"; //$NON-NLS-1$ public static final String OPTION_StaticFieldSuffixes = "org.eclipse.jdt.core.codeComplete.staticFieldSuffixes"; //$NON-NLS-1$ public static final String OPTION_StaticFinalFieldSuffixes = "org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes"; //$NON-NLS-1$ public static final String OPTION_LocalSuffixes = "org.eclipse.jdt.core.codeComplete.localSuffixes"; //$NON-NLS-1$ public static final String OPTION_ArgumentSuffixes = "org.eclipse.jdt.core.codeComplete.argumentSuffixes"; //$NON-NLS-1$ public static final String OPTION_PerformForbiddenReferenceCheck = "org.eclipse.jdt.core.codeComplete.forbiddenReferenceCheck"; //$NON-NLS-1$ public static final String OPTION_PerformDiscouragedReferenceCheck = "org.eclipse.jdt.core.codeComplete.discouragedReferenceCheck"; //$NON-NLS-1$ public static final String OPTION_CamelCaseMatch = "org.eclipse.jdt.core.codeComplete.camelCaseMatch"; //$NON-NLS-1$ public static final String OPTION_SuggestStaticImports = "org.eclipse.jdt.core.codeComplete.suggestStaticImports"; //$NON-NLS-1$ public static final String ENABLED = "enabled"; //$NON-NLS-1$ public static final String DISABLED = "disabled"; //$NON-NLS-1$ public boolean checkVisibility = false; public boolean checkDeprecation = false; public boolean checkForbiddenReference = false; public boolean checkDiscouragedReference = false; public boolean forceImplicitQualification = false; public boolean camelCaseMatch = true; public boolean suggestStaticImport = true; public char[][] fieldPrefixes = null; public char[][] staticFieldPrefixes = null; public char[][] staticFinalFieldPrefixes = null; public char[][] localPrefixes = null; public char[][] argumentPrefixes = null; public char[][] fieldSuffixes = null; public char[][] staticFieldSuffixes = null; public char[][] staticFinalFieldSuffixes = null; public char[][] localSuffixes = null; public char[][] argumentSuffixes = null; /** * Initializing the assist options with default settings */ public AssistOptions() { // Initializing the assist options with default settings } /** * Initializing the assist options with external settings */ public AssistOptions(Map settings) { if (settings == null) return; set(settings); } public void set(Map optionsMap) { Object optionValue; if ((optionValue = optionsMap.get(OPTION_PerformVisibilityCheck)) != null) { if (ENABLED.equals(optionValue)) { this.checkVisibility = true; } else if (DISABLED.equals(optionValue)) { this.checkVisibility = false; } } if ((optionValue = optionsMap.get(OPTION_ForceImplicitQualification)) != null) { if (ENABLED.equals(optionValue)) { this.forceImplicitQualification = true; } else if (DISABLED.equals(optionValue)) { this.forceImplicitQualification = false; } } if ((optionValue = optionsMap.get(OPTION_FieldPrefixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.fieldPrefixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.fieldPrefixes = null; } } } if ((optionValue = optionsMap.get(OPTION_StaticFieldPrefixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.staticFieldPrefixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.staticFieldPrefixes = null; } } } if ((optionValue = optionsMap.get(OPTION_StaticFinalFieldPrefixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.staticFinalFieldPrefixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.staticFinalFieldPrefixes = null; } } } if ((optionValue = optionsMap.get(OPTION_LocalPrefixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.localPrefixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.localPrefixes = null; } } } if ((optionValue = optionsMap.get(OPTION_ArgumentPrefixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.argumentPrefixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.argumentPrefixes = null; } } } if ((optionValue = optionsMap.get(OPTION_FieldSuffixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.fieldSuffixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.fieldSuffixes = null; } } } if ((optionValue = optionsMap.get(OPTION_StaticFieldSuffixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.staticFieldSuffixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.staticFieldSuffixes = null; } } } if ((optionValue = optionsMap.get(OPTION_StaticFinalFieldSuffixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.staticFinalFieldSuffixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.staticFinalFieldSuffixes = null; } } } if ((optionValue = optionsMap.get(OPTION_LocalSuffixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.localSuffixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.localSuffixes = null; } } } if ((optionValue = optionsMap.get(OPTION_ArgumentSuffixes)) != null) { if (optionValue instanceof String) { String stringValue = (String) optionValue; if (stringValue.length() > 0){ this.argumentSuffixes = splitAndTrimOn(',', stringValue.toCharArray()); } else { this.argumentSuffixes = null; } } } if ((optionValue = optionsMap.get(OPTION_PerformForbiddenReferenceCheck)) != null) { if (ENABLED.equals(optionValue)) { this.checkForbiddenReference = true; } else if (DISABLED.equals(optionValue)) { this.checkForbiddenReference = false; } } if ((optionValue = optionsMap.get(OPTION_PerformDiscouragedReferenceCheck)) != null) { if (ENABLED.equals(optionValue)) { this.checkDiscouragedReference = true; } else if (DISABLED.equals(optionValue)) { this.checkDiscouragedReference = false; } } if ((optionValue = optionsMap.get(OPTION_CamelCaseMatch)) != null) { if (ENABLED.equals(optionValue)) { this.camelCaseMatch = true; } else if (DISABLED.equals(optionValue)) { this.camelCaseMatch = false; } } if ((optionValue = optionsMap.get(OPTION_PerformDeprecationCheck)) != null) { if (ENABLED.equals(optionValue)) { this.checkDeprecation = true; } else if (DISABLED.equals(optionValue)) { this.checkDeprecation = false; } } if ((optionValue = optionsMap.get(OPTION_SuggestStaticImports)) != null) { if (ENABLED.equals(optionValue)) { this.suggestStaticImport = true; } else if (DISABLED.equals(optionValue)) { this.suggestStaticImport = false; } } } private char[][] splitAndTrimOn(char divider, char[] arrayToSplit) { char[][] result = CharOperation.splitAndTrimOn(',', arrayToSplit); int length = result.length; int resultCount = 0; for (int i = 0; i < length; i++) { if(result[i].length != 0) { result[resultCount++] = result[i]; } } if(resultCount != length) { System.arraycopy(result, 0, result = new char[resultCount][], 0, resultCount); } return result; } }