| // RAP [rh] Field assist package disabled as it is partially deprecated and requires key strokes |
| ///******************************************************************************* |
| // * Copyright (c) 2006, 2010 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.ui.fieldassist; |
| // |
| //import org.eclipse.core.commands.AbstractHandler; |
| //import org.eclipse.core.commands.ExecutionEvent; |
| //import org.eclipse.core.expressions.EvaluationResult; |
| //import org.eclipse.core.expressions.Expression; |
| //import org.eclipse.core.expressions.ExpressionInfo; |
| //import org.eclipse.core.expressions.IEvaluationContext; |
| //import org.eclipse.jface.fieldassist.ContentProposalAdapter; |
| //import org.eclipse.jface.fieldassist.ControlDecoration; |
| //import org.eclipse.jface.fieldassist.FieldDecoration; |
| //import org.eclipse.jface.fieldassist.FieldDecorationRegistry; |
| //import org.eclipse.jface.fieldassist.IContentProposalProvider; |
| //import org.eclipse.jface.fieldassist.IControlContentAdapter; |
| //import org.eclipse.osgi.util.NLS; |
| //import org.eclipse.swt.SWT; |
| //import org.eclipse.swt.events.DisposeEvent; |
| //import org.eclipse.swt.events.DisposeListener; |
| //import org.eclipse.swt.widgets.Control; |
| //import org.eclipse.ui.ISources; |
| //import org.eclipse.ui.IWorkbenchCommandConstants; |
| //import org.eclipse.ui.PlatformUI; |
| //import org.eclipse.ui.handlers.IHandlerActivation; |
| //import org.eclipse.ui.handlers.IHandlerService; |
| //import org.eclipse.ui.internal.WorkbenchMessages; |
| //import org.eclipse.ui.keys.IBindingService; |
| //import org.eclipse.ui.swt.IFocusService; |
| // |
| ///** |
| // * ContentAssistCommandAdapter extends {@link ContentProposalAdapter} to invoke |
| // * content proposals using a specified {@link org.eclipse.core.commands.Command}. |
| // * The ability to specify a {@link org.eclipse.jface.bindings.keys.KeyStroke} |
| // * that explicitly invokes content proposals is hidden by this class, and |
| // * instead the String id of a command is used. If no command id is specified by |
| // * the client, then the default workbench content assist command is used. |
| // * <p> |
| // * As of 3.3, ContentAssistCommandAdapter can be optionally configured to |
| // * install the content assist decoration on its control. |
| // * <p> |
| // * This class is not intended to be subclassed. |
| // * |
| // * @since 3.2 |
| // */ |
| //public class ContentAssistCommandAdapter extends ContentProposalAdapter { |
| // |
| // private class ContentAssistHandler extends AbstractHandler { |
| // public Object execute(ExecutionEvent event) { |
| // openProposalPopup(); |
| // return null; |
| // } |
| // |
| // void setEnabled(boolean enabled) { |
| // this.setBaseEnabled(enabled); |
| // } |
| // } |
| // |
| // // ID used in the decoration registry. |
| // private static final String CONTENT_ASSIST_DECORATION_ID = "org.eclipse.ui.fieldAssist.ContentAssistField"; //$NON-NLS-1$ |
| // |
| // // ID prefix used when registering our control with the focus service. |
| // private static final String CONTROL_ID_PREFIX = "org.eclipse.ui.fieldAssist.ContentAssistField.ControlID"; //$NON-NLS-1$ |
| // |
| // private String commandId; |
| // |
| // /** |
| // * The command id used for content assist. (value |
| // * <code>"org.eclipse.ui.edit.text.contentAssist.proposals"</code>) |
| // * |
| // * @deprecated As of 3.5, replaced by {@link IWorkbenchCommandConstants#EDIT_CONTENT_ASSIST} |
| // */ |
| // public static final String CONTENT_PROPOSAL_COMMAND= IWorkbenchCommandConstants.EDIT_CONTENT_ASSIST; |
| // |
| // // Default autoactivation delay in milliseconds |
| // // TODO: This should eventually be controlled by |
| // // a platform UI preference. |
| // private static final int DEFAULT_AUTO_ACTIVATION_DELAY = 500; |
| // |
| // private ContentAssistHandler proposalHandler = new ContentAssistHandler(); |
| // private ControlDecoration decoration; |
| // |
| // /** |
| // * Construct a content proposal adapter that can assist the user with |
| // * choosing content for the field. No visual indicator of content assist is |
| // * shown. |
| // * |
| // * @param control |
| // * the control for which the adapter is providing content assist. |
| // * May not be <code>null</code>. |
| // * @param controlContentAdapter |
| // * the <code>IControlContentAdapter</code> used to obtain and |
| // * update the control's contents as proposals are accepted. May |
| // * not be <code>null</code>. |
| // * @param proposalProvider |
| // * the <code>IContentProposalProvider</code> used to obtain |
| // * content proposals for this control, or <code>null</code> if |
| // * no content proposal is available. |
| // * @param commandId |
| // * the String id of the command that will invoke the content |
| // * assistant. If not supplied, the default value will be |
| // * "org.eclipse.ui.edit.text.contentAssist.proposals". |
| // * @param autoActivationCharacters |
| // * An array of characters that trigger auto-activation of content |
| // * proposal. If specified, these characters will trigger |
| // * auto-activation of the proposal popup, regardless of the |
| // * specified command id. |
| // */ |
| // public ContentAssistCommandAdapter(Control control, |
| // IControlContentAdapter controlContentAdapter, |
| // IContentProposalProvider proposalProvider, String commandId, |
| // char[] autoActivationCharacters) { |
| // this(control, controlContentAdapter, proposalProvider, commandId, |
| // autoActivationCharacters, false); |
| // } |
| // |
| // /** |
| // * Construct a content proposal adapter that can assist the user with |
| // * choosing content for the field. |
| // * |
| // * @param control |
| // * the control for which the adapter is providing content assist. |
| // * May not be <code>null</code>. |
| // * @param controlContentAdapter |
| // * the <code>IControlContentAdapter</code> used to obtain and |
| // * update the control's contents as proposals are accepted. May |
| // * not be <code>null</code>. |
| // * @param proposalProvider |
| // * the <code>IContentProposalProvider</code> used to obtain |
| // * content proposals for this control, or <code>null</code> if |
| // * no content proposal is available. |
| // * @param commandId |
| // * the String id of the command that will invoke the content |
| // * assistant. If not supplied, the default value will be |
| // * "org.eclipse.ui.edit.text.contentAssist.proposals". |
| // * @param autoActivationCharacters |
| // * An array of characters that trigger auto-activation of content |
| // * proposal. If specified, these characters will trigger |
| // * auto-activation of the proposal popup, regardless of the |
| // * specified command id. |
| // * @param installDecoration |
| // * A boolean that specifies whether a content assist control |
| // * decoration should be installed. The client is responsible for |
| // * ensuring that adequate space is reserved for the decoration. |
| // * Clients that want more fine-grained control of the |
| // * decoration's location or appearance should use |
| // * <code>false</code> for this parameter, creating their own |
| // * {@link ControlDecoration} and managing it directly. |
| // * @since 3.3 |
| // */ |
| // public ContentAssistCommandAdapter(Control control, |
| // IControlContentAdapter controlContentAdapter, |
| // IContentProposalProvider proposalProvider, String commandId, |
| // char[] autoActivationCharacters, boolean installDecoration) { |
| // super(control, controlContentAdapter, proposalProvider, null, |
| // autoActivationCharacters); |
| // this.commandId = commandId; |
| // if (commandId == null) { |
| // this.commandId= IWorkbenchCommandConstants.EDIT_CONTENT_ASSIST; |
| // } |
| // |
| // // If no autoactivation characters were specified, set them to the empty |
| // // array so that we don't get the alphanumeric auto-trigger of our |
| // // superclass. |
| // if (autoActivationCharacters == null) { |
| // this.setAutoActivationCharacters(new char[] {}); |
| // } |
| // // Set a default autoactivation delay. |
| // setAutoActivationDelay(DEFAULT_AUTO_ACTIVATION_DELAY); |
| // |
| // // Activate the handler |
| // activateHandler(control); |
| // |
| // if (installDecoration) { |
| // // Note top left is used for compatibility with 3.2, although |
| // // this may change to center alignment in the future. |
| // decoration = new ControlDecoration(control, SWT.TOP | SWT.LEFT); |
| // decoration.setShowOnlyOnFocus(true); |
| // FieldDecoration dec = getContentAssistFieldDecoration(); |
| // decoration.setImage(dec.getImage()); |
| // decoration.setDescriptionText(dec.getDescription()); |
| // } |
| // |
| // } |
| // |
| // /** |
| // * Return the string command ID of the command used to invoke content |
| // * assist. |
| // * |
| // * @return the command ID of the command that invokes content assist. |
| // */ |
| // public String getCommandId() { |
| // return commandId; |
| // } |
| // |
| // /* |
| // * Return the field decoration that should be used to indicate that content |
| // * assist is available for a field. Ensure that the decoration text includes |
| // * the correct key binding. |
| // * |
| // * @return the {@link FieldDecoration} that should be used to show content |
| // * assist. |
| // * |
| // * @since 3.3 |
| // */ |
| // private FieldDecoration getContentAssistFieldDecoration() { |
| // FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault(); |
| // // Look for a decoration installed for this particular command id. |
| // String decId = CONTENT_ASSIST_DECORATION_ID + getCommandId(); |
| // FieldDecoration dec = registry.getFieldDecoration(decId); |
| // |
| // // If there is not one, base ours on the standard JFace one. |
| // if (dec == null) { |
| // FieldDecoration originalDec = registry |
| // .getFieldDecoration(FieldDecorationRegistry.DEC_CONTENT_PROPOSAL); |
| // |
| // registry.registerFieldDecoration(decId, null, originalDec |
| // .getImage()); |
| // dec = registry.getFieldDecoration(decId); |
| // } |
| // // Always update the decoration text since the key binding may |
| // // have changed since it was last retrieved. |
| // IBindingService bindingService = (IBindingService) PlatformUI |
| // .getWorkbench().getService(IBindingService.class); |
| // dec |
| // .setDescription(NLS |
| // .bind( |
| // WorkbenchMessages.ContentAssist_Cue_Description_Key, |
| // bindingService |
| // .getBestActiveBindingFormattedFor(getCommandId()))); |
| // |
| // // Now return the field decoration |
| // return dec; |
| // } |
| // |
| // /* |
| // * (non-Javadoc) |
| // * |
| // * Overridden to hide and show the content assist decoration |
| // * |
| // * @see org.eclipse.jface.fieldassist.ContentProposalAdapter#setEnabled(boolean) |
| // * @since 3.3 |
| // */ |
| // public void setEnabled(boolean enabled) { |
| // super.setEnabled(enabled); |
| // if (decoration != null) { |
| // if (enabled) { |
| // decoration.show(); |
| // } else { |
| // decoration.hide(); |
| // } |
| // } |
| // proposalHandler.setEnabled(enabled); |
| // } |
| // |
| // private void activateHandler(final Control control) { |
| // IFocusService fs = (IFocusService) PlatformUI.getWorkbench() |
| // .getService(IFocusService.class); |
| // final IHandlerService hs = (IHandlerService) PlatformUI.getWorkbench().getService( |
| // IHandlerService.class); |
| // if (fs != null && hs != null) { |
| // fs.addFocusTracker(control, CONTROL_ID_PREFIX + hashCode()); |
| // final IHandlerActivation handlerActivation = hs.activateHandler(commandId, |
| // proposalHandler, new Expression() { |
| // public EvaluationResult evaluate(IEvaluationContext context) { |
| // return context.getVariable(ISources.ACTIVE_FOCUS_CONTROL_NAME) == control ? EvaluationResult.TRUE |
| // : EvaluationResult.FALSE; |
| // } |
| // |
| // public void collectExpressionInfo(final ExpressionInfo info) { |
| // info.addVariableNameAccess(ISources.ACTIVE_FOCUS_CONTROL_NAME); |
| // } |
| // |
| // }); |
| // control.addDisposeListener(new DisposeListener() { |
| // public void widgetDisposed(DisposeEvent e) { |
| // hs.deactivateHandler(handlerActivation); |
| // } |
| // }); |
| // } |
| // } |
| //} |