blob: 57e251c2c2d4873b05f9222a55781438ca359f7e [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2004 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.gmf.runtime.common.ui.contentassist;
import org.eclipse.jface.contentassist.SubjectControlContentAssistant;
import org.eclipse.jface.text.DefaultInformationControl;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IInformationControl;
import org.eclipse.jface.text.IInformationControlCreator;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.contentassist.ContentAssistHandler;
import org.eclipse.gmf.runtime.common.ui.internal.contentassist.TextPresenter;
/**
* Helper class for content assist
*
* @author myee
*/
public class ContentAssistantHelper {
/**
* Prevent calling the constructor
*/
private ContentAssistantHelper() {
// do nothing
}
/**
* Returns a content assistant for a given text control and content assist
* processor
*
* @param text
* the text control
* @param processor
* the content assist processor
* @return the content assistant
*/
public static ContentAssistHandler createTextContentAssistant(
final Text text, IContentAssistProcessor processor) {
return createTextContentAssistant(text, null, null, processor);
}
/**
* Returns a content assistant for a given text control and content assist
* processor
*
* @param text
* the text control
* @param processor
* the content assist processor
* @param foreground
* the foreground color
* @param background
* the background color
* @return the content assistant
*/
public static ContentAssistHandler createTextContentAssistant(
final Text text, Color foreground, Color background,
IContentAssistProcessor processor) {
return ContentAssistHandler.createHandlerForText(text,
createContentAssistant(processor, foreground, background));
}
/**
* Returns a content assistant for a given control and content assist
* processor
*
* @param processor
* the content assist processor
* @param foreground
* the foreground color, or <code>null</code> for default color
* @param background
* the background color, or <code>null</code> for default color
* @return the content assistant
*/
private static SubjectControlContentAssistant createContentAssistant(
IContentAssistProcessor processor, Color foreground,
Color background) {
final SubjectControlContentAssistant contentAssistant = new SubjectControlContentAssistant();
if (foreground != null) {
contentAssistant.setProposalSelectorForeground(foreground);
}
if (background != null) {
contentAssistant.setProposalSelectorBackground(background);
}
contentAssistant.setContentAssistProcessor(processor,
IDocument.DEFAULT_CONTENT_TYPE);
contentAssistant.enableAutoActivation(true);
contentAssistant.enableAutoInsert(true);
contentAssistant
.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
contentAssistant
.setInformationControlCreator(new IInformationControlCreator() {
public IInformationControl createInformationControl(Shell parent) {
return new DefaultInformationControl(parent, SWT.NONE,
new TextPresenter());
}
});
return contentAssistant;
}
}