/* * 03/21/2010 * * Copyright (C) 2010 Robert Futrell * robert_futrell at users.sourceforge.net * http://fifesoft.com/rsyntaxtextarea * * This library is distributed under a modified BSD license. See the included * RSTALanguageSupport.License.txt file for details. */ package org.fife.rsta.ac; import javax.swing.ListCellRenderer; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; /** * "Extra" support for a programming language (code completion, parser, etc.). * * @author Robert Futrell * @version 1.0 */ public interface LanguageSupport { // /** // * Client property set on <code>RSyntaxTextArea</code>s referencing the // * <code>AutoCompletion</code> instance providing its completion choices. // */ // public static final String PROPERTY_AUTO_COMPLETION = // "org.fife.rsta.ac.AutoCompletion"; /** * Client property set on <code>RSyntaxTextArea</code>s referencing the * <code>Parser</code> instance parsing its source code. This will be * <code>null</code> if a language support does not install such a parser. */ public static final String PROPERTY_LANGUAGE_PARSER = "org.fife.rsta.ac.LanguageSupport.LanguageParser"; /** * Returns the delay between when the user types a character and when the * code completion popup should automatically appear (if applicable). * This parameter is only honored if {@link #isAutoActivationEnabled()} * returns <code>true</code>. * * @return The delay, in milliseconds. * @see #setAutoActivationDelay(int) */ public int getAutoActivationDelay(); /** * Returns the default list cell renderer to install for all text areas * with this language support installed. * * @return The renderer. This will never be <code>null</code>. * @see #setDefaultCompletionCellRenderer(ListCellRenderer) */ public ListCellRenderer getDefaultCompletionCellRenderer(); /** * REturns whether the description window is also shown when the * completion list is displayed, for editors of this language. * * @return Whether the description window is shown. * @see #setShowDescWindow(boolean) */ public boolean getShowDescWindow(); /** * Returns whether auto-activation is enabled (that is, whether the * completion popup will automatically appear after a delay when the user * types an appropriate character). Note that this parameter will be * ignored if auto-completion is disabled. * * @return Whether auto-activation is enabled. * @see #setAutoActivationEnabled(boolean) * @see #getAutoActivationDelay() * @see #isAutoCompleteEnabled() */ public boolean isAutoActivationEnabled(); /** * Returns whether auto-completion is enabled for this language. If * this value is <code>false</code>, then <code>ctrl+space</code> will * do nothing. * * @return Whether auto-completion is enabled. * @see #setAutoCompleteEnabled(boolean) */ public boolean isAutoCompleteEnabled(); /** * Installs this support. * * @param textArea The text area to install onto. * @see #uninstall(RSyntaxTextArea) */ public void install(RSyntaxTextArea textArea); /** * Returns whether parameter assistance is enabled for editors of this * language. Note that some language do not support parameter assistance * at all; in those cases, this parameter does nothing. * * @return Whether parameter assistance is enabled for editors of this * language. * @see #setParameterAssistanceEnabled(boolean) */ public boolean isParameterAssistanceEnabled(); /** * Sets the delay between when the user types a character and when the * code completion popup should automatically appear (if applicable). * This parameter is only honored if {@link #isAutoActivationEnabled()} * returns <code>true</code>. * * @param ms The delay, in milliseconds. This should be greater than zero. * @see #getAutoActivationDelay() */ public void setAutoActivationDelay(int ms); /** * Toggles whether auto-activation is enabled. Note that auto-activation * also depends on auto-completion itself being enabled. * * @param enabled Whether auto-activation is enabled. * @see #isAutoActivationEnabled() * @see #setAutoActivationDelay(int) */ public void setAutoActivationEnabled(boolean enabled); /** * Toggles whether auto-completion is enabled for this language. If * this is set to <code>false</code>, then <code>ctrl+space</code> will * do nothing. * * @param enabled Whether auto-completion should be enabled. * @see #isAutoCompleteEnabled() */ public void setAutoCompleteEnabled(boolean enabled); /** * Sets the default list cell renderer to install for all text areas with * this language support installed. This renderer will be shared amongst * all text areas. * * @param r The renderer. If this is <code>null</code>, a default will * be used. * @see #getDefaultCompletionCellRenderer() */ public void setDefaultCompletionCellRenderer(ListCellRenderer r); /** * Toggles whether parameter assistance is enabled for editors of this * language. * * @param enabled Whether parameter assistance is enabled. * @see #isParameterAssistanceEnabled() */ public void setParameterAssistanceEnabled(boolean enabled); /** * Toggles whether the description window should also be shown when the * completion list is displayed, for editors of this language. * * @param show Whether to show the description window. * @see #getShowDescWindow() */ public void setShowDescWindow(boolean show); /** * Uninstalls this support. * * @param textArea The text area to uninstall from. * @see #install(RSyntaxTextArea) */ public void uninstall(RSyntaxTextArea textArea); }