]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.ui/src/org/simantics/document/ui/CSSCompletionAssistProcessor.java
Several Wiki documentation view improvements.
[simantics/platform.git] / bundles / org.simantics.document.ui / src / org / simantics / document / ui / CSSCompletionAssistProcessor.java
1 package org.simantics.document.ui;\r
2 \r
3 import org.eclipse.jface.text.BadLocationException;\r
4 import org.eclipse.jface.text.IDocument;\r
5 import org.eclipse.jface.text.ITextSelection;\r
6 import org.eclipse.jface.text.ITextViewer;\r
7 import org.eclipse.jface.text.contentassist.ICompletionProposal;\r
8 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;\r
9 import org.eclipse.jface.text.contentassist.IContextInformation;\r
10 import org.eclipse.jface.text.contentassist.IContextInformationValidator;\r
11 \r
12 public class CSSCompletionAssistProcessor implements IContentAssistProcessor {\r
13     \r
14     private String lastError = "";\r
15     private CSSTextEditorEnvironment environment;\r
16     \r
17     public CSSCompletionAssistProcessor(CSSTextEditorEnvironment environment) {\r
18         this.environment = environment;\r
19     }\r
20 \r
21     @Override\r
22     public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int tmpOffset) {\r
23         ITextSelection selection= (ITextSelection) viewer.getSelectionProvider().getSelection();\r
24         // adjust offset to end of normalized selection\r
25         if (selection.getOffset() == tmpOffset)\r
26             tmpOffset = selection.getOffset() + selection.getLength();\r
27         final int offset = tmpOffset;\r
28         IDocument document = viewer.getDocument();\r
29         String tmpPrefix = "";\r
30         try {\r
31             tmpPrefix = getPrefix(document, offset);\r
32         } catch (BadLocationException e) {\r
33             e.printStackTrace();\r
34         }\r
35         environment.updateEnvironment(document);\r
36         return environment.getCompletionProposals(tmpPrefix, offset);\r
37     }\r
38     \r
39     private static String getPrefix(IDocument doc, int offset) throws BadLocationException {\r
40         if (doc == null || offset >= doc.getLength())\r
41             return "";\r
42 \r
43         int length= 0;\r
44         while (--offset >= 0 && Character.isJavaIdentifierPart(doc.getChar(offset)) || doc.getChar(offset) == '.')\r
45             length++;\r
46 \r
47         return doc.get(offset + 1, length);\r
48     }\r
49     \r
50     @Override\r
51     public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {\r
52         return null;\r
53     }\r
54 \r
55     private static final char[] AUTO_ACTIVATION_CHARS = new char[] { '.', '(' };\r
56     \r
57     @Override\r
58     public char[] getCompletionProposalAutoActivationCharacters() {\r
59         return AUTO_ACTIVATION_CHARS;\r
60     }\r
61 \r
62     @Override\r
63     public char[] getContextInformationAutoActivationCharacters() {\r
64         return null;\r
65     }\r
66 \r
67     @Override\r
68     public String getErrorMessage() {\r
69         return lastError;\r
70     }\r
71 \r
72     @Override\r
73     public IContextInformationValidator getContextInformationValidator() {\r
74         return null;\r
75     }\r
76 \r
77 }\r