1 20 21 package org.apache.directory.ldapstudio.browser.common.filtereditor; 22 23 24 import org.apache.directory.ldapstudio.browser.core.model.filter.LdapFilter; 26 import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterParser; 27 28 import org.eclipse.jface.text.IDocument; 29 import org.eclipse.jface.text.IRegion; 30 import org.eclipse.jface.text.Region; 31 import org.eclipse.jface.text.source.ICharacterPairMatcher; 32 import org.eclipse.jface.text.source.ISourceViewer; 33 34 35 public class FilterCharacterPairMatcher implements ICharacterPairMatcher 36 { 37 38 private ISourceViewer sourceViewer; 39 40 private LdapFilterParser parser; 41 42 private int anchor; 43 44 45 public FilterCharacterPairMatcher( ISourceViewer sourceViewer, LdapFilterParser parser ) 46 { 47 super(); 48 this.sourceViewer = sourceViewer; 49 this.parser = parser; 50 this.clear(); 51 } 52 53 54 public void dispose() 55 { 56 } 57 58 59 public void clear() 60 { 61 this.anchor = LEFT; 62 } 63 64 65 public IRegion match( IDocument document, int offset ) 66 { 67 68 LdapFilter model = this.parser.getModel(); 69 if ( model != null ) 70 { 71 LdapFilter filter = this.parser.getModel().getFilter( offset - 1 ); 72 73 if ( filter != null && filter.getStartToken() != null && filter.getStopToken() != null ) 74 { 75 76 int left = filter.getStartToken().getOffset(); 77 int right = filter.getStopToken().getOffset(); 78 79 if ( left == offset - 1 ) 80 { 81 this.anchor = LEFT; 82 IRegion region = new Region( left, right - left + 1 ); 83 return region; 84 } 85 if ( right == offset - 1 ) 86 { 87 this.anchor = RIGHT; 88 IRegion region = new Region( left, right - left + 1 ); 89 return region; 90 } 91 } 92 } 93 94 return null; 95 } 96 97 98 public int getAnchor() 99 { 100 return this.anchor; 101 } 102 103 } 104 | Popular Tags |