blob: f790a545046322048878bf594fb71da568bb423d [file] [log] [blame]
// 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);
// }
// });
// }
// }
//}