/** * Grab a list of camelCase-separated suffixes from the typeName, for * example: * * "JavaElementName" => { "Java", "Element", "Name } * * "ASTNode" => { "AST", "Node" } * */ private String[] getSuffixes(String typeName) { List<String> suffixes= new ArrayList<>(); JavaWordIterator iterator= new JavaWordIterator(); iterator.setText(typeName); int lastmatch= 0; int match; while ( (match= iterator.next()) != BreakIterator.DONE) { suffixes.add(typeName.substring(lastmatch, match)); lastmatch= match; } return suffixes.toArray(new String[0]); }
@Override public int next() { fIndex= following(fIndex); return fIndex; }
@Override public int previous() { fIndex= preceding(fIndex); return fIndex; }
private boolean eatFollowingWhitespace(int offset, int exclusiveEnd) { if (exclusiveEnd == DONE || offset == DONE) return false; if (isWhitespace(offset, exclusiveEnd)) return false; if (isDelimiter(offset, exclusiveEnd)) return false; return true; }
@Override public int following(int offset) { int first= fIterator.following(offset); if (eatFollowingWhitespace(offset, first)) { int second= fIterator.following(first); if (isWhitespace(first, second)) return second; } return first; }
@Override public void setText(String newText) { setText((CharSequence) newText); }
/** * Creates a new word iterator. */ public JavaWordIterator() { fIterator= new JavaBreakIterator(); first(); }
/** * Returns <code>true</code> if the given sequence into the underlying text * represents whitespace, but not a delimiter, <code>false</code> otherwise. * * @param offset the offset * @param exclusiveEnd the end offset * @return <code>true</code> if the given range is whitespace */ private boolean isWhitespace(int offset, int exclusiveEnd) { if (exclusiveEnd == DONE || offset == DONE) return false; Assert.isTrue(offset >= 0); Assert.isTrue(exclusiveEnd <= getText().getEndIndex()); Assert.isTrue(exclusiveEnd > offset); CharSequence seq= fIterator.fText; while (offset < exclusiveEnd) { char ch= seq.charAt(offset); if (!Character.isWhitespace(ch)) return false; if (ch == '\n' || ch == '\r') return false; offset++; } return true; }
private FocusHandler(Navigable navigable) { fIterator= new JavaWordIterator(); fNavigable= navigable; Control control= navigable.getControl(); control.addFocusListener(this); if (control.isFocusControl()) activate(); control.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { deactivate(); } }); }
public int next(int n) { int next= 0; while (--n > 0 && next != DONE) { next= next(); } return next; }
private boolean eatFollowingWhitespace(int offset, int exclusiveEnd) { if (exclusiveEnd == DONE || offset == DONE) return false; if (isWhitespace(offset, exclusiveEnd)) return false; if (isDelimiter(offset, exclusiveEnd)) return false; return true; }
@Override public void setText(String newText) { setText((CharSequence) newText); }
public int following(int offset) { int first= fIterator.following(offset); if (eatFollowingWhitespace(offset, first)) { int second= fIterator.following(first); if (isWhitespace(first, second)) return second; } return first; }
/** * Sets the text as <code>CharSequence</code>. * @param newText the new text */ public void setText(CharSequence newText) { fIterator.setText(newText); first(); }
/** * Returns <code>true</code> if the given sequence into the underlying text * represents whitespace, but not a delimiter, <code>false</code> otherwise. * * @param offset the offset * @param exclusiveEnd the end offset * @return <code>true</code> if the given range is whitespace */ private boolean isWhitespace(int offset, int exclusiveEnd) { if (exclusiveEnd == DONE || offset == DONE) return false; Assert.isTrue(offset >= 0); Assert.isTrue(exclusiveEnd <= getText().getEndIndex()); Assert.isTrue(exclusiveEnd > offset); CharSequence seq= fIterator.fText; while (offset < exclusiveEnd) { char ch= seq.charAt(offset); if (!Character.isWhitespace(ch)) return false; if (ch == '\n' || ch == '\r') return false; offset++; } return true; }
private FocusHandler(Navigable navigable) { fIterator= new JavaWordIterator(); fNavigable= navigable; Control control= navigable.getControl(); control.addFocusListener(this); if (control.isFocusControl()) activate(); control.addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { deactivate(); } }); }
@Override public int next(int n) { int next= 0; while (--n > 0 && next != DONE) { next= next(); } return next; }
/** * Grab a list of camelCase-separated suffixes from the typeName, for * example: * * "JavaElementName" => { "Java", "Element", "Name } * * "ASTNode" => { "AST", "Node" } * */ private String[] getSuffixes(String typeName) { List<String> suffixes= new ArrayList<>(); JavaWordIterator iterator= new JavaWordIterator(); iterator.setText(typeName); int lastmatch= 0; int match; while ( (match= iterator.next()) != BreakIterator.DONE) { suffixes.add(typeName.substring(lastmatch, match)); lastmatch= match; } return suffixes.toArray(new String[0]); }
private boolean eatFollowingWhitespace(int offset, int exclusiveEnd) { if (exclusiveEnd == DONE || offset == DONE) return false; if (isWhitespace(offset, exclusiveEnd)) return false; if (isDelimiter(offset, exclusiveEnd)) return false; return true; }
public void setText(String newText) { setText((CharSequence) newText); }