Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » IContentAssistProcessor
IContentAssistProcessor [message #56601] Wed, 27 September 2006 20:23 Go to next message
Eclipse UserFriend
Originally posted by: vcciubot.uwaterloo.ca

Following Michael Golubev's suggestion on a previous thread, I've created
a completion processor using the code below.

However, the method computeCompletionProposals doesn't get called. Other
methods such as getCompletionProposalAutoActivationCharacters get called.
There's also a pop up indicating content assist, but nothing happens when
pressing ctrl-space.

Any suggestions?

thanks in advance,
vlad



public class Bluenose2ContentAssistProcessor implements IContentAssistProcessor {

private static final ICompletionProposal[] NO_PROPOSALS= new ICompletionProposal[0];
private static final IContextInformation[] NO_CONTEXTS= new IContextInformation[0];
private char[] characters;

/**
* list of possible values
*/
private List values;

public Bluenose2ContentAssistProcessor(List values) {
this.values = values;
characters = new char[values.size()];
Iterator it = values.iterator();
int i = 0;
while (it.hasNext()) {
String value = (String) it.next();
characters[i] = value.charAt(0);
}


}

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
int offset) {

try {
String prefix= getPrefix(viewer, offset);
if (prefix == null || prefix.length() == 0)
return NO_PROPOSALS;

List suggestions= getSuggestions(prefix);

List result= new ArrayList();
for (Iterator it= suggestions.iterator(); it.hasNext();) {
String string= (String) it.next();
if (string.length() > 0)
result.add(createProposal(string, prefix, offset));
}

return (ICompletionProposal[]) result.toArray(new ICompletionProposal[result.size()]);

} catch (BadLocationException x) {
// ignore and return no proposals
return NO_PROPOSALS;
}

}

private ICompletionProposal createProposal (String string, String prefix, int offset) {
//need to adjust these parameters
return new CompletionProposal(string, offset, string.length(), offset + string.length());
}

/**
*
* @param prefix
* @return list of values beginning with <code>prefix</code>
*/
private List getSuggestions(String prefix) {
List suggestions = new ArrayList();
Iterator it = values.iterator();
while (it.hasNext()) {
String value = (String) it.next();
if (value.startsWith(prefix))
suggestions.add(new String(value));
}

return suggestions;

}

/**
*
* @param viewer
* @param offset
* @return the text input by the user
* @throws BadLocationException
*/
private String getPrefix(ITextViewer viewer, int offset) throws BadLocationException {
IDocument doc= viewer.getDocument();
if (doc == null || offset > doc.getLength())
return null;

int length= 0;
while (--offset >= 0 && Character.isJavaIdentifierPart(doc.getChar(offset)))
length++;

return doc.get(offset + 1, length);
}



public IContextInformation[] computeContextInformation(ITextViewer viewer,
int offset) {
return NO_CONTEXTS;
}

public char[] getCompletionProposalAutoActivationCharacters() {
return characters;
}

public char[] getContextInformationAutoActivationCharacters() {
return characters;
}

public IContextInformationValidator getContextInformationValidator() {
return null;
}

public String getErrorMessage() {
return null;
}

}
Re: IContentAssistProcessor [message #56629 is a reply to message #56601] Wed, 27 September 2006 20:56 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: vcciubot.uwaterloo.ca

I've gone past my initial problem. Now I get this exception:

Exception in thread "AutoAssist Delay" java.lang.NullPointerException
at org.eclipse.jface.text.contentassist.ContentAssistant$AutoAs sistListener.showAssist(ContentAssistant.java:327)
at org.eclipse.jface.text.contentassist.ContentAssistant$AutoAs sistListener.run(ContentAssistant.java:252)
at java.lang.Thread.run(Thread.java:595)

Should I give up? Does anyone have integrated a content assist processor
for a structural feature in GMF?

thanks
vlad


On Wed, 27 Sep 2006 16:23:05 -0400, Vlad Ciubotariu wrote:

> Following Michael Golubev's suggestion on a previous thread, I've created
> a completion processor using the code below.
>
> However, the method computeCompletionProposals doesn't get called. Other
> methods such as getCompletionProposalAutoActivationCharacters get called.
> There's also a pop up indicating content assist, but nothing happens when
> pressing ctrl-space.
>
> Any suggestions?
>
> thanks in advance,
> vlad
>
>
>
> public class Bluenose2ContentAssistProcessor implements IContentAssistProcessor {
>
> private static final ICompletionProposal[] NO_PROPOSALS= new ICompletionProposal[0];
> private static final IContextInformation[] NO_CONTEXTS= new IContextInformation[0];
> private char[] characters;
>
> /**
> * list of possible values
> */
> private List values;
>
> public Bluenose2ContentAssistProcessor(List values) {
> this.values = values;
> characters = new char[values.size()];
> Iterator it = values.iterator();
> int i = 0;
> while (it.hasNext()) {
> String value = (String) it.next();
> characters[i] = value.charAt(0);
> }
>
>
> }
>
> public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
> int offset) {
>
> try {
> String prefix= getPrefix(viewer, offset);
> if (prefix == null || prefix.length() == 0)
> return NO_PROPOSALS;
>
> List suggestions= getSuggestions(prefix);
>
> List result= new ArrayList();
> for (Iterator it= suggestions.iterator(); it.hasNext();) {
> String string= (String) it.next();
> if (string.length() > 0)
> result.add(createProposal(string, prefix, offset));
> }
>
> return (ICompletionProposal[]) result.toArray(new ICompletionProposal[result.size()]);
>
> } catch (BadLocationException x) {
> // ignore and return no proposals
> return NO_PROPOSALS;
> }
>
> }
>
> private ICompletionProposal createProposal (String string, String prefix, int offset) {
> //need to adjust these parameters
> return new CompletionProposal(string, offset, string.length(), offset + string.length());
> }
>
> /**
> *
> * @param prefix
> * @return list of values beginning with <code>prefix</code>
> */
> private List getSuggestions(String prefix) {
> List suggestions = new ArrayList();
> Iterator it = values.iterator();
> while (it.hasNext()) {
> String value = (String) it.next();
> if (value.startsWith(prefix))
> suggestions.add(new String(value));
> }
>
> return suggestions;
>
> }
>
> /**
> *
> * @param viewer
> * @param offset
> * @return the text input by the user
> * @throws BadLocationException
> */
> private String getPrefix(ITextViewer viewer, int offset) throws BadLocationException {
> IDocument doc= viewer.getDocument();
> if (doc == null || offset > doc.getLength())
> return null;
>
> int length= 0;
> while (--offset >= 0 && Character.isJavaIdentifierPart(doc.getChar(offset)))
> length++;
>
> return doc.get(offset + 1, length);
> }
>
>
>
> public IContextInformation[] computeContextInformation(ITextViewer viewer,
> int offset) {
> return NO_CONTEXTS;
> }
>
> public char[] getCompletionProposalAutoActivationCharacters() {
> return characters;
> }
>
> public char[] getContextInformationAutoActivationCharacters() {
> return characters;
> }
>
> public IContextInformationValidator getContextInformationValidator() {
> return null;
> }
>
> public String getErrorMessage() {
> return null;
> }
>
> }
Re: IContentAssistProcessor [message #57345 is a reply to message #56601] Thu, 28 September 2006 21:13 Go to previous message
Eclipse UserFriend
Originally posted by: vcciubot.uwaterloo.ca

I've managed to get this thing to work using the field assist framework
and overriding a little bit in initCellEditor() of TextDirectEditManager.

cheers
vlad

On Wed, 27 Sep 2006 16:23:05 -0400, Vlad Ciubotariu wrote:

> Following Michael Golubev's suggestion on a previous thread, I've created
> a completion processor using the code below.
>
> However, the method computeCompletionProposals doesn't get called. Other
> methods such as getCompletionProposalAutoActivationCharacters get called.
> There's also a pop up indicating content assist, but nothing happens when
> pressing ctrl-space.
>
> Any suggestions?
>
> thanks in advance,
> vlad
>
>
>
> public class Bluenose2ContentAssistProcessor implements IContentAssistProcessor {
>
> private static final ICompletionProposal[] NO_PROPOSALS= new ICompletionProposal[0];
> private static final IContextInformation[] NO_CONTEXTS= new IContextInformation[0];
> private char[] characters;
>
> /**
> * list of possible values
> */
> private List values;
>
> public Bluenose2ContentAssistProcessor(List values) {
> this.values = values;
> characters = new char[values.size()];
> Iterator it = values.iterator();
> int i = 0;
> while (it.hasNext()) {
> String value = (String) it.next();
> characters[i] = value.charAt(0);
> }
>
>
> }
>
> public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
> int offset) {
>
> try {
> String prefix= getPrefix(viewer, offset);
> if (prefix == null || prefix.length() == 0)
> return NO_PROPOSALS;
>
> List suggestions= getSuggestions(prefix);
>
> List result= new ArrayList();
> for (Iterator it= suggestions.iterator(); it.hasNext();) {
> String string= (String) it.next();
> if (string.length() > 0)
> result.add(createProposal(string, prefix, offset));
> }
>
> return (ICompletionProposal[]) result.toArray(new ICompletionProposal[result.size()]);
>
> } catch (BadLocationException x) {
> // ignore and return no proposals
> return NO_PROPOSALS;
> }
>
> }
>
> private ICompletionProposal createProposal (String string, String prefix, int offset) {
> //need to adjust these parameters
> return new CompletionProposal(string, offset, string.length(), offset + string.length());
> }
>
> /**
> *
> * @param prefix
> * @return list of values beginning with <code>prefix</code>
> */
> private List getSuggestions(String prefix) {
> List suggestions = new ArrayList();
> Iterator it = values.iterator();
> while (it.hasNext()) {
> String value = (String) it.next();
> if (value.startsWith(prefix))
> suggestions.add(new String(value));
> }
>
> return suggestions;
>
> }
>
> /**
> *
> * @param viewer
> * @param offset
> * @return the text input by the user
> * @throws BadLocationException
> */
> private String getPrefix(ITextViewer viewer, int offset) throws BadLocationException {
> IDocument doc= viewer.getDocument();
> if (doc == null || offset > doc.getLength())
> return null;
>
> int length= 0;
> while (--offset >= 0 && Character.isJavaIdentifierPart(doc.getChar(offset)))
> length++;
>
> return doc.get(offset + 1, length);
> }
>
>
>
> public IContextInformation[] computeContextInformation(ITextViewer viewer,
> int offset) {
> return NO_CONTEXTS;
> }
>
> public char[] getCompletionProposalAutoActivationCharacters() {
> return characters;
> }
>
> public char[] getContextInformationAutoActivationCharacters() {
> return characters;
> }
>
> public IContextInformationValidator getContextInformationValidator() {
> return null;
> }
>
> public String getErrorMessage() {
> return null;
> }
>
> }
Previous Topic:programmatically move an element in a diagram
Next Topic:Can I create slightly different diagramnodes from a single model-node?
Goto Forum:
  


Current Time: Fri Aug 16 14:54:44 GMT 2024

Powered by FUDForum. Page generated in 0.03650 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top