X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/ContentAssistPreference.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/ContentAssistPreference.java new file mode 100644 index 0000000..b391165 --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/ContentAssistPreference.java @@ -0,0 +1,330 @@ +/* + * (c) Copyright IBM Corp. 2000, 2001. + * All Rights Reserved. + */ +package net.sourceforge.phpdt.internal.ui.text; + +import net.sourceforge.phpdt.internal.ui.text.phpdoc.PHPDocCompletionProcessor; +import net.sourceforge.phpdt.ui.PreferenceConstants; +import net.sourceforge.phpdt.ui.text.IColorManager; +import net.sourceforge.phpdt.ui.text.JavaTextTools; +//import net.sourceforge.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.phpeditor.php.HTMLCompletionProcessor; +import net.sourceforge.phpeclipse.phpeditor.php.PHPCompletionProcessor; +import net.sourceforge.phpeclipse.ui.WebUI; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.preference.PreferenceConverter; +import org.eclipse.jface.text.contentassist.ContentAssistant; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; + +public class ContentAssistPreference { + + /** Preference key for content assist auto activation */ + private final static String AUTOACTIVATION = PreferenceConstants.CODEASSIST_AUTOACTIVATION; + + /** Preference key for content assist auto activation delay */ + private final static String AUTOACTIVATION_DELAY = PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY; + + /** Preference key for content assist proposal color */ + private final static String PROPOSALS_FOREGROUND = PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND; + + /** Preference key for content assist proposal color */ + private final static String PROPOSALS_BACKGROUND = PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND; + + /** Preference key for content assist parameters color */ + private final static String PARAMETERS_FOREGROUND = PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND; + + /** Preference key for content assist parameters color */ + private final static String PARAMETERS_BACKGROUND = PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND; + + /** Preference key for content assist completion replacement color */ + private final static String COMPLETION_REPLACEMENT_FOREGROUND = PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND; + + /** Preference key for content assist completion replacement color */ + private final static String COMPLETION_REPLACEMENT_BACKGROUND = PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND; + + /** Preference key for content assist auto insert */ + private final static String AUTOINSERT = PreferenceConstants.CODEASSIST_AUTOINSERT; + + /** Preference key for php content assist auto activation triggers */ + private final static String AUTOACTIVATION_TRIGGERS_JAVA = PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA; + + /** Preference key for phpdoc content assist auto activation triggers */ + private final static String AUTOACTIVATION_TRIGGERS_JAVADOC = PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC; + + /** Preference key for html content assist auto activation triggers */ + private final static String AUTOACTIVATION_TRIGGERS_HTML = PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML; + + /** Preference key for visibility of proposals */ + private final static String SHOW_VISIBLE_PROPOSALS = PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS; + + /** Preference key for alphabetic ordering of proposals */ + private final static String ORDER_PROPOSALS = PreferenceConstants.CODEASSIST_ORDER_PROPOSALS; + + /** Preference key for case sensitivity of propsals */ + private final static String CASE_SENSITIVITY = PreferenceConstants.CODEASSIST_CASE_SENSITIVITY; + + /** Preference key for adding imports on code assist */ + private final static String ADD_IMPORT = PreferenceConstants.CODEASSIST_ADDIMPORT; + + /** Preference key for inserting content assist */ + private static final String INSERT_COMPLETION = PreferenceConstants.CODEASSIST_INSERT_COMPLETION; + + /** Preference key for filling argument names on method completion */ + private static final String FILL_METHOD_ARGUMENTS = PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES; + + /** Preference key for guessing argument names on method completion */ + private static final String GUESS_METHOD_ARGUMENTS = PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS; + + private static Color getColor(IPreferenceStore store, String key, + IColorManager manager) { + RGB rgb = PreferenceConverter.getColor(store, key); + return manager.getColor(rgb); + } + + private static Color getColor(IPreferenceStore store, String key) { + JavaTextTools textTools = WebUI.getDefault() + .getJavaTextTools(); + return getColor(store, key, textTools.getColorManager()); + } + + private static PHPCompletionProcessor getJavaProcessor( + ContentAssistant assistant) { + IContentAssistProcessor p = assistant + .getContentAssistProcessor(IPHPPartitions.PHP_PARTITIONING); + if (p instanceof PHPCompletionProcessor) + return (PHPCompletionProcessor) p; + return null; + } + + private static PHPDocCompletionProcessor getJavaDocProcessor( + ContentAssistant assistant) { + IContentAssistProcessor p = assistant + .getContentAssistProcessor(IPHPPartitions.PHP_PHPDOC_COMMENT); + if (p instanceof PHPDocCompletionProcessor) + return (PHPDocCompletionProcessor) p; + return null; + } + + private static HTMLCompletionProcessor getHTMLProcessor( + ContentAssistant assistant) { + IContentAssistProcessor p = assistant + .getContentAssistProcessor(IPHPPartitions.HTML); + if (p instanceof HTMLCompletionProcessor) + return (HTMLCompletionProcessor) p; + return null; + } + + private static void configureJavaProcessor(ContentAssistant assistant, + IPreferenceStore store) { + PHPCompletionProcessor pcp = getJavaProcessor(assistant); + if (pcp == null) + return; + + String triggers = store.getString(AUTOACTIVATION_TRIGGERS_JAVA); + if (triggers != null) + pcp.setCompletionProposalAutoActivationCharacters(triggers + .toCharArray()); + boolean enabled; + // boolean enabled= store.getBoolean(SHOW_VISIBLE_PROPOSALS); + // jcp.restrictProposalsToVisibility(enabled); + // + // enabled= store.getBoolean(CASE_SENSITIVITY); + // jcp.restrictProposalsToMatchingCases(enabled); + // + enabled = store.getBoolean(ORDER_PROPOSALS); + pcp.orderProposalsAlphabetically(enabled); + // + // enabled= store.getBoolean(ADD_IMPORT); + // jcp.allowAddingImports(enabled); + } + + private static void configureJavaDocProcessor(ContentAssistant assistant, + IPreferenceStore store) { + PHPDocCompletionProcessor pdcp = getJavaDocProcessor(assistant); + if (pdcp == null) + return; + + String triggers = store.getString(AUTOACTIVATION_TRIGGERS_JAVADOC); + if (triggers != null) + pdcp.setCompletionProposalAutoActivationCharacters(triggers + .toCharArray()); + + boolean enabled = store.getBoolean(CASE_SENSITIVITY); + pdcp.restrictProposalsToMatchingCases(enabled); + + enabled = store.getBoolean(ORDER_PROPOSALS); + pdcp.orderProposalsAlphabetically(enabled); + } + + private static void configureHTMLProcessor(ContentAssistant assistant, + IPreferenceStore store) { + HTMLCompletionProcessor hcp = getHTMLProcessor(assistant); + if (hcp == null) + return; + + String triggers = store.getString(AUTOACTIVATION_TRIGGERS_HTML); + if (triggers != null) + hcp.setCompletionProposalAutoActivationCharacters(triggers + .toCharArray()); + + boolean enabled; + // boolean enabled = store.getBoolean(CASE_SENSITIVITY); + // jdcp.restrictProposalsToMatchingCases(enabled); + + enabled = store.getBoolean(ORDER_PROPOSALS); + hcp.orderProposalsAlphabetically(enabled); + } + + /** + * Configure the given content assistant from the given store. + */ + public static void configure(ContentAssistant assistant, + IPreferenceStore store) { + + JavaTextTools textTools = WebUI.getDefault() + .getJavaTextTools(); + IColorManager manager = textTools.getColorManager(); + + boolean enabled = store.getBoolean(AUTOACTIVATION); + assistant.enableAutoActivation(enabled); + + int delay = store.getInt(AUTOACTIVATION_DELAY); + assistant.setAutoActivationDelay(delay); + + Color c = getColor(store, PROPOSALS_FOREGROUND, manager); + assistant.setProposalSelectorForeground(c); + + c = getColor(store, PROPOSALS_BACKGROUND, manager); + assistant.setProposalSelectorBackground(c); + + c = getColor(store, PARAMETERS_FOREGROUND, manager); + assistant.setContextInformationPopupForeground(c); + assistant.setContextSelectorForeground(c); + + c = getColor(store, PARAMETERS_BACKGROUND, manager); + assistant.setContextInformationPopupBackground(c); + assistant.setContextSelectorBackground(c); + + enabled = store.getBoolean(AUTOINSERT); + assistant.enableAutoInsert(enabled); + + configureJavaProcessor(assistant, store); + configureJavaDocProcessor(assistant, store); + configureHTMLProcessor(assistant, store); + } + + private static void changeJavaProcessor(ContentAssistant assistant, + IPreferenceStore store, String key) { + PHPCompletionProcessor jcp = getJavaProcessor(assistant); + if (jcp == null) + return; + + if (AUTOACTIVATION_TRIGGERS_JAVA.equals(key)) { + String triggers = store.getString(AUTOACTIVATION_TRIGGERS_JAVA); + if (triggers != null) + jcp.setCompletionProposalAutoActivationCharacters(triggers + .toCharArray()); + } + // else if (SHOW_VISIBLE_PROPOSALS.equals(key)) { + // boolean enabled= store.getBoolean(SHOW_VISIBLE_PROPOSALS); + // jcp.restrictProposalsToVisibility(enabled); + // } else if (CASE_SENSITIVITY.equals(key)) { + // boolean enabled= store.getBoolean(CASE_SENSITIVITY); + // jcp.restrictProposalsToMatchingCases(enabled); } + else if (ORDER_PROPOSALS.equals(key)) { + boolean enable = store.getBoolean(ORDER_PROPOSALS); + jcp.orderProposalsAlphabetically(enable); + // } else if (ADD_IMPORT.equals(key)) { + // boolean enabled= store.getBoolean(ADD_IMPORT); + // jcp.allowAddingImports(enabled); + } + } + + private static void changeJavaDocProcessor(ContentAssistant assistant, + IPreferenceStore store, String key) { + PHPDocCompletionProcessor jdcp = getJavaDocProcessor(assistant); + if (jdcp == null) + return; + + if (AUTOACTIVATION_TRIGGERS_JAVADOC.equals(key)) { + String triggers = store.getString(AUTOACTIVATION_TRIGGERS_JAVADOC); + if (triggers != null) + jdcp.setCompletionProposalAutoActivationCharacters(triggers + .toCharArray()); + } else if (CASE_SENSITIVITY.equals(key)) { + boolean enabled = store.getBoolean(CASE_SENSITIVITY); + jdcp.restrictProposalsToMatchingCases(enabled); + } else if (ORDER_PROPOSALS.equals(key)) { + boolean enable = store.getBoolean(ORDER_PROPOSALS); + jdcp.orderProposalsAlphabetically(enable); + } + } + + private static void changeHTMLProcessor(ContentAssistant assistant, + IPreferenceStore store, String key) { + HTMLCompletionProcessor jdcp = getHTMLProcessor(assistant); + if (jdcp == null) + return; + + if (AUTOACTIVATION_TRIGGERS_HTML.equals(key)) { + String triggers = store.getString(AUTOACTIVATION_TRIGGERS_HTML); + if (triggers != null) + jdcp.setCompletionProposalAutoActivationCharacters(triggers + .toCharArray()); + // } else if (CASE_SENSITIVITY.equals(key)) { + // boolean enabled = store.getBoolean(CASE_SENSITIVITY); + // jdcp.restrictProposalsToMatchingCases(enabled); + } else if (ORDER_PROPOSALS.equals(key)) { + boolean enable = store.getBoolean(ORDER_PROPOSALS); + jdcp.orderProposalsAlphabetically(enable); + } + } + + /** + * Changes the configuration of the given content assistant according to the + * given property change event and the given preference store. + */ + public static void changeConfiguration(ContentAssistant assistant, + IPreferenceStore store, PropertyChangeEvent event) { + + String p = event.getProperty(); + + if (AUTOACTIVATION.equals(p)) { + boolean enabled = store.getBoolean(AUTOACTIVATION); + assistant.enableAutoActivation(enabled); + } else if (AUTOACTIVATION_DELAY.equals(p)) { + int delay = store.getInt(AUTOACTIVATION_DELAY); + assistant.setAutoActivationDelay(delay); + } else if (PROPOSALS_FOREGROUND.equals(p)) { + Color c = getColor(store, PROPOSALS_FOREGROUND); + assistant.setProposalSelectorForeground(c); + } else if (PROPOSALS_BACKGROUND.equals(p)) { + Color c = getColor(store, PROPOSALS_BACKGROUND); + assistant.setProposalSelectorBackground(c); + } else if (PARAMETERS_FOREGROUND.equals(p)) { + Color c = getColor(store, PARAMETERS_FOREGROUND); + assistant.setContextInformationPopupForeground(c); + assistant.setContextSelectorForeground(c); + } else if (PARAMETERS_BACKGROUND.equals(p)) { + Color c = getColor(store, PARAMETERS_BACKGROUND); + assistant.setContextInformationPopupBackground(c); + assistant.setContextSelectorBackground(c); + } else if (AUTOINSERT.equals(p)) { + boolean enabled = store.getBoolean(AUTOINSERT); + assistant.enableAutoInsert(enabled); + } + + changeJavaProcessor(assistant, store, p); + changeJavaDocProcessor(assistant, store, p); + changeHTMLProcessor(assistant, store, p); + } + + public static boolean fillArgumentsOnMethodCompletion(IPreferenceStore store) { + return store.getBoolean(FILL_METHOD_ARGUMENTS); + } +}