blob: 6cde736a8d4225a21b5711a9471f0870f44d30d3 [file] [log] [blame]
package org.eclipse.cdt.internal.ui.text.template;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.cdt.internal.corext.template.TemplateMessages;
import org.eclipse.cdt.internal.corext.template.TemplateVariable;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContextInformation;
/**
* A proposal for insertion of template variables.
*/
public class TemplateVariableProposal implements ICompletionProposal {
private TemplateVariable fVariable;
private int fOffset;
private int fLength;
private ITextViewer fViewer;
private Point fSelection;
/**
* Creates a template variable proposal.
*
* @param variable the template variable
* @param offset the offset to replace
* @param length the length to replace
* @param viewer the viewer
*/
public TemplateVariableProposal(TemplateVariable variable, int offset, int length, ITextViewer viewer) {
fVariable= variable;
fOffset= offset;
fLength= length;
fViewer= viewer;
}
/*
* @see ICompletionProposal#apply(IDocument)
*/
public void apply(IDocument document) {
try {
String variable= fVariable.getName().equals("dollar") ? "$$" : "${" + fVariable.getName() + '}'; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
document.replace(fOffset, fLength, variable);
fSelection= new Point(fOffset + variable.length(), 0);
} catch (BadLocationException e) {
CUIPlugin.getDefault().log(e);
Shell shell= fViewer.getTextWidget().getShell();
MessageDialog.openError(shell, TemplateMessages.getString("TemplateVariableProposal.error.title"), e.getMessage()); //$NON-NLS-1$
}
}
/*
* @see ICompletionProposal#getSelection(IDocument)
*/
public Point getSelection(IDocument document) {
return fSelection;
}
/*
* @see ICompletionProposal#getAdditionalProposalInfo()
*/
public String getAdditionalProposalInfo() {
return null;
}
/*
* @see ICompletionProposal#getDisplayString()
*/
public String getDisplayString() {
return fVariable.getName() + " - " + fVariable.getDescription(); //$NON-NLS-1$
}
/*
* @see ICompletionProposal#getImage()
*/
public Image getImage() {
return null;
}
/*
* @see ICompletionProposal#getContextInformation()
*/
public IContextInformation getContextInformation() {
return null;
}
}