1 20 21 package org.apache.directory.ldapstudio.browser.common.filtereditor; 22 23 24 import org.apache.directory.ldapstudio.browser.core.model.filter.LdapFilter; 25 import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterParser; 26 import org.apache.directory.ldapstudio.browser.core.model.filter.parser.LdapFilterToken; 27 28 import org.eclipse.jface.text.IRegion; 29 import org.eclipse.jface.text.ITextHover; 30 import org.eclipse.jface.text.ITextViewer; 31 import org.eclipse.jface.text.Region; 32 import org.eclipse.jface.text.source.ISourceViewer; 33 34 35 public class FilterTextHover implements ITextHover 36 { 37 38 private ISourceViewer sourceViewer; 39 40 private LdapFilterParser parser; 41 42 43 public FilterTextHover( ISourceViewer sourceViewer, LdapFilterParser parser ) 44 { 45 super(); 46 this.sourceViewer = sourceViewer; 47 this.parser = parser; 48 } 49 50 51 public String getHoverInfo( ITextViewer textViewer, IRegion hoverRegion ) 52 { 53 LdapFilter[] invalidFilters = this.parser.getModel().getInvalidFilters(); 54 for ( int i = 0; i < invalidFilters.length; i++ ) 55 { 56 if ( invalidFilters[i].getStartToken() != null ) 57 { 58 int start = invalidFilters[i].getStartToken().getOffset(); 59 int stop = invalidFilters[i].getStopToken() != null ? invalidFilters[i].getStopToken().getOffset() 60 + invalidFilters[i].getStopToken().getLength() : start 61 + invalidFilters[i].getStartToken().getLength(); 62 if ( start <= hoverRegion.getOffset() && hoverRegion.getOffset() < stop ) 63 { 64 return invalidFilters[i].getInvalidCause(); 65 } 66 } 67 } 68 69 LdapFilterToken[] tokens = this.parser.getModel().getTokens(); 70 for ( int i = 0; i < tokens.length; i++ ) 71 { 72 if ( tokens[i].getType() == LdapFilterToken.ERROR ) 73 { 74 75 int start = tokens[i].getOffset(); 76 int stop = start + tokens[i].getLength(); 77 if ( start <= hoverRegion.getOffset() && hoverRegion.getOffset() < stop ) 78 { 79 return "Invalid characters"; 80 } 81 } 82 } 83 return null; 84 } 85 86 87 public IRegion getHoverRegion( ITextViewer textViewer, int offset ) 88 { 89 return new Region( offset, 1 ); 90 } 91 92 } 93 | Popular Tags |