1 20 21 package org.apache.directory.ldapstudio.browser.common.widgets.search; 22 23 24 import java.util.ArrayList ; 25 import java.util.Arrays ; 26 import java.util.HashSet ; 27 import java.util.Iterator ; 28 import java.util.List ; 29 import java.util.Set ; 30 31 import org.eclipse.jface.contentassist.IContentAssistSubjectControl; 32 import org.eclipse.jface.contentassist.ISubjectControlContentAssistProcessor; 33 import org.eclipse.jface.text.IDocument; 34 import org.eclipse.jface.text.ITextViewer; 35 import org.eclipse.jface.text.contentassist.CompletionProposal; 36 import org.eclipse.jface.text.contentassist.ICompletionProposal; 37 import org.eclipse.jface.text.contentassist.IContextInformation; 38 import org.eclipse.jface.text.contentassist.IContextInformationValidator; 39 40 41 49 public class ReturningAttributesContentAssistProcessor implements ISubjectControlContentAssistProcessor 50 { 51 52 53 private char[] autoActivationCharacters; 54 55 56 private String [] possibleAttributeTypes; 57 58 59 64 public ReturningAttributesContentAssistProcessor( String [] possibleAttributeNames ) 65 { 66 super(); 67 setPossibleAttributeTypes( possibleAttributeTypes ); 68 } 69 70 71 74 public char[] getCompletionProposalAutoActivationCharacters() 75 { 76 return autoActivationCharacters; 77 } 78 79 80 85 public void setPossibleAttributeTypes( String [] possibleAttributeTypes ) 86 { 87 if ( possibleAttributeTypes == null ) 88 { 89 possibleAttributeTypes = new String [0]; 90 } 91 92 Arrays.sort( possibleAttributeTypes ); 94 this.possibleAttributeTypes = possibleAttributeTypes; 95 96 Set <Character > characterSet = new HashSet <Character >(); 98 for ( int i = 0; i < possibleAttributeTypes.length; i++ ) 99 { 100 String string = possibleAttributeTypes[i]; 101 for ( int k = 0; k < string.length(); k++ ) 102 { 103 char ch = string.charAt( k ); 104 characterSet.add( Character.toLowerCase( ch ) ); 105 characterSet.add( Character.toUpperCase( ch ) ); 106 } 107 } 108 autoActivationCharacters = new char[characterSet.size()]; 109 int i = 0; 110 for ( Iterator <Character > it = characterSet.iterator(); it.hasNext(); ) 111 { 112 Character ch = it.next(); 113 autoActivationCharacters[i] = ch.charValue(); 114 i++; 115 } 116 } 117 118 119 124 public ICompletionProposal[] computeCompletionProposals( ITextViewer viewer, int offset ) 125 { 126 return null; 127 } 128 129 130 133 public ICompletionProposal[] computeCompletionProposals( IContentAssistSubjectControl contentAssistSubjectControl, 134 int documentOffset ) 135 { 136 IDocument document = contentAssistSubjectControl.getDocument(); 137 String text = document.get(); 138 139 int start = 0; 141 for ( int i = documentOffset - 1; i >= 0; i-- ) 142 { 143 char c = text.charAt( i ); 144 if ( c == ',' || Character.isWhitespace( c ) ) 145 { 146 start = i + 1; 147 break; 148 } 149 } 150 String attribute = text.substring( start, documentOffset ); 151 152 List <ICompletionProposal> proposalList = new ArrayList <ICompletionProposal>(); 154 for ( int k = 0; k < possibleAttributeTypes.length; k++ ) 155 { 156 if ( possibleAttributeTypes[k].toUpperCase().startsWith( attribute.toUpperCase() ) ) 157 { 158 ICompletionProposal proposal = new CompletionProposal( possibleAttributeTypes[k] + ", ", start, 159 documentOffset - start, possibleAttributeTypes[k].length() + 2, null, possibleAttributeTypes[k], 160 null, null ); 161 proposalList.add( proposal ); 162 } 163 } 164 return proposalList.toArray( new ICompletionProposal[proposalList.size()] ); 165 } 166 167 168 173 public char[] getContextInformationAutoActivationCharacters() 174 { 175 return null; 176 } 177 178 179 184 public IContextInformation[] computeContextInformation( ITextViewer viewer, int offset ) 185 { 186 return null; 187 } 188 189 190 195 public IContextInformation[] computeContextInformation( IContentAssistSubjectControl contentAssistSubjectControl, 196 int documentOffset ) 197 { 198 return null; 199 } 200 201 202 207 public String getErrorMessage() 208 { 209 return null; 210 } 211 212 213 218 public IContextInformationValidator getContextInformationValidator() 219 { 220 return null; 221 } 222 223 } 224 | Popular Tags |