X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Fasm%2Feditor%2FAsmContentAssistProcessor.java;fp=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Fasm%2Feditor%2FAsmContentAssistProcessor.java;h=f81f7c0077c228b7029e99aecd977430b2b5aa31;hb=f14ea37d69488dd51518a36413af7176916b8bd7;hp=0000000000000000000000000000000000000000;hpb=a84700145147c263ad6692c99117a7cf37832378;p=Mograsim.git diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java new file mode 100644 index 00000000..f81f7c00 --- /dev/null +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/asm/editor/AsmContentAssistProcessor.java @@ -0,0 +1,168 @@ +package net.mograsim.plugin.asm.editor; + +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.ResourcesPlugin; +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.ICompletionProposalExtension4; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.text.contentassist.IContextInformation; +import org.eclipse.jface.text.contentassist.IContextInformationValidator; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; + +public class AsmContentAssistProcessor implements IContentAssistProcessor +{ + + @Override + public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) + { + String text = viewer.getDocument().get(); + IWorkspace workspace = ResourcesPlugin.getWorkspace(); +// if (text.length() >= natureTag.length() +// && text.substring(offset - natureTag.length(), offset).equals(natureTag)) { +// IProjectNatureDescriptor[] natureDescriptors = workspace.getNatureDescriptors(); +// ICompletionProposal[] proposals = new ICompletionProposal[natureDescriptors.length]; +// for (int i = 0; i < natureDescriptors.length; i++) { +// IProjectNatureDescriptor descriptor = natureDescriptors[i]; +// proposals[i] = new CompletionProposal(descriptor.getNatureId(), offset, 0, +// descriptor.getNatureId().length()); +// } +// return proposals; +// } +// if (text.length() >= projectReferenceTag.length() +// && text.substring(offset - projectReferenceTag.length(), offset).equals(projectReferenceTag)) { +// IProject[] projects = workspace.getRoot().getProjects(); +// ICompletionProposal[] proposals = new ICompletionProposal[projects.length]; +// for (int i = 0; i < projects.length; i++) { +// proposals[i] = new CompletionProposal(projects[i].getName(), offset, 0, projects[i].getName().length()); +// } +// return proposals; +// } +// return new ICompletionProposal[0]; +// text. + return new ICompletionProposal[] { new AsmOperationProposal("ADD", "Addition operation", offset), + new AsmOperationProposal("MUL", "Multiplication operation", offset) }; + } + + @Override + public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) + { + return null; + } + + @Override + public char[] getCompletionProposalAutoActivationCharacters() + { + return new char[] { '\t' }; // NON-NLS-1 + } + + @Override + public char[] getContextInformationAutoActivationCharacters() + { + return null; + } + + @Override + public String getErrorMessage() + { + return null; + } + + @Override + public IContextInformationValidator getContextInformationValidator() + { + return null; + } + + private class AsmOperationProposal implements ICompletionProposal, ICompletionProposalExtension4 + { + + private String asmOp; + private String desc; + private int offset; + + public AsmOperationProposal(String asmOp, String desc, int offset) + { + this.asmOp = asmOp; + this.desc = desc; + this.offset = offset; + } + + @Override + public boolean isAutoInsertable() + { + return true; + } + + @Override + public void apply(IDocument document) + { + try + { + document.replace(offset, 0, asmOp); + } + catch (BadLocationException e) + { + // ignore + } + } + + @Override + public Point getSelection(IDocument document) + { + return new Point(offset + asmOp.length(), 0); + } + + @Override + public String getAdditionalProposalInfo() + { + return desc; + } + + @Override + public String getDisplayString() + { + return asmOp; + } + + @Override + public Image getImage() + { + return null; // TODO image? + } + + @Override + public IContextInformation getContextInformation() + { + return new IContextInformation() + { + + @Override + public String getInformationDisplayString() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public Image getImage() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getContextDisplayString() + { + // TODO Auto-generated method stub + return null; + } + }; + } + + } + +} \ No newline at end of file