Merge pull request #915 from parrt/master
Small refactoring for flexibility of subclasses (token stream, tree view)
This commit is contained in:
commit
4c063ee769
|
@ -133,11 +133,11 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
if (fetchedEOF) {
|
if (fetchedEOF) {
|
||||||
// the last token in tokens is EOF. skip check if p indexes any
|
// the last token in tokens is EOF. skip check if p indexes any
|
||||||
// fetched token except the last.
|
// fetched token except the last.
|
||||||
skipEofCheck = p < tokens.size() - 1;
|
skipEofCheck = p < size() - 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// no EOF token in tokens. skip check if p indexes a fetched token.
|
// no EOF token in tokens. skip check if p indexes a fetched token.
|
||||||
skipEofCheck = p < tokens.size();
|
skipEofCheck = p < size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -162,7 +162,7 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
*/
|
*/
|
||||||
protected boolean sync(int i) {
|
protected boolean sync(int i) {
|
||||||
assert i >= 0;
|
assert i >= 0;
|
||||||
int n = i - tokens.size() + 1; // how many more elements we need?
|
int n = i - size() + 1; // how many more elements we need?
|
||||||
//System.out.println("sync("+i+") needs "+n);
|
//System.out.println("sync("+i+") needs "+n);
|
||||||
if ( n > 0 ) {
|
if ( n > 0 ) {
|
||||||
int fetched = fetch(n);
|
int fetched = fetch(n);
|
||||||
|
@ -184,7 +184,7 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
for (int i = 0; i < n; i++) {
|
for (int i = 0; i < n; i++) {
|
||||||
Token t = tokenSource.nextToken();
|
Token t = tokenSource.nextToken();
|
||||||
if ( t instanceof WritableToken ) {
|
if ( t instanceof WritableToken ) {
|
||||||
((WritableToken)t).setTokenIndex(tokens.size());
|
((WritableToken)t).setTokenIndex(size());
|
||||||
}
|
}
|
||||||
tokens.add(t);
|
tokens.add(t);
|
||||||
if ( t.getType()==Token.EOF ) {
|
if ( t.getType()==Token.EOF ) {
|
||||||
|
@ -198,8 +198,8 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Token get(int i) {
|
public Token get(int i) {
|
||||||
if ( i < 0 || i >= tokens.size() ) {
|
if ( i < 0 || i >= size() ) {
|
||||||
throw new IndexOutOfBoundsException("token index "+i+" out of range 0.."+(tokens.size()-1));
|
throw new IndexOutOfBoundsException("token index "+i+" out of range 0.."+(size()-1));
|
||||||
}
|
}
|
||||||
return tokens.get(i);
|
return tokens.get(i);
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
if ( start<0 || stop<0 ) return null;
|
if ( start<0 || stop<0 ) return null;
|
||||||
lazyInit();
|
lazyInit();
|
||||||
List<Token> subset = new ArrayList<Token>();
|
List<Token> subset = new ArrayList<Token>();
|
||||||
if ( stop>=tokens.size() ) stop = tokens.size()-1;
|
if ( stop>=size() ) stop = size()-1;
|
||||||
for (int i = start; i <= stop; i++) {
|
for (int i = start; i <= stop; i++) {
|
||||||
Token t = tokens.get(i);
|
Token t = tokens.get(i);
|
||||||
if ( t.getType()==Token.EOF ) break;
|
if ( t.getType()==Token.EOF ) break;
|
||||||
|
@ -235,9 +235,9 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
|
|
||||||
int i = p + k - 1;
|
int i = p + k - 1;
|
||||||
sync(i);
|
sync(i);
|
||||||
if ( i >= tokens.size() ) { // return EOF token
|
if ( i >= size() ) { // return EOF token
|
||||||
// EOF must be last token
|
// EOF must be last token
|
||||||
return tokens.get(tokens.size()-1);
|
return tokens.get(size()-1);
|
||||||
}
|
}
|
||||||
// if ( i>range ) range = i;
|
// if ( i>range ) range = i;
|
||||||
return tokens.get(i);
|
return tokens.get(i);
|
||||||
|
@ -290,11 +290,11 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
*/
|
*/
|
||||||
public List<Token> getTokens(int start, int stop, Set<Integer> types) {
|
public List<Token> getTokens(int start, int stop, Set<Integer> types) {
|
||||||
lazyInit();
|
lazyInit();
|
||||||
if ( start<0 || stop>=tokens.size() ||
|
if ( start<0 || stop>=size() ||
|
||||||
stop<0 || start>=tokens.size() )
|
stop<0 || start>=size() )
|
||||||
{
|
{
|
||||||
throw new IndexOutOfBoundsException("start "+start+" or stop "+stop+
|
throw new IndexOutOfBoundsException("start "+start+" or stop "+stop+
|
||||||
" not in 0.."+(tokens.size()-1));
|
" not in 0.."+(size()-1));
|
||||||
}
|
}
|
||||||
if ( start>stop ) return null;
|
if ( start>stop ) return null;
|
||||||
|
|
||||||
|
@ -379,8 +379,8 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
*/
|
*/
|
||||||
public List<Token> getHiddenTokensToRight(int tokenIndex, int channel) {
|
public List<Token> getHiddenTokensToRight(int tokenIndex, int channel) {
|
||||||
lazyInit();
|
lazyInit();
|
||||||
if ( tokenIndex<0 || tokenIndex>=tokens.size() ) {
|
if ( tokenIndex<0 || tokenIndex>=size() ) {
|
||||||
throw new IndexOutOfBoundsException(tokenIndex+" not in 0.."+(tokens.size()-1));
|
throw new IndexOutOfBoundsException(tokenIndex+" not in 0.."+(size()-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
int nextOnChannel =
|
int nextOnChannel =
|
||||||
|
@ -408,8 +408,8 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
*/
|
*/
|
||||||
public List<Token> getHiddenTokensToLeft(int tokenIndex, int channel) {
|
public List<Token> getHiddenTokensToLeft(int tokenIndex, int channel) {
|
||||||
lazyInit();
|
lazyInit();
|
||||||
if ( tokenIndex<0 || tokenIndex>=tokens.size() ) {
|
if ( tokenIndex<0 || tokenIndex>=size() ) {
|
||||||
throw new IndexOutOfBoundsException(tokenIndex+" not in 0.."+(tokens.size()-1));
|
throw new IndexOutOfBoundsException(tokenIndex+" not in 0.."+(size()-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tokenIndex == 0) {
|
if (tokenIndex == 0) {
|
||||||
|
@ -468,7 +468,7 @@ public class BufferedTokenStream implements TokenStream {
|
||||||
int stop = interval.b;
|
int stop = interval.b;
|
||||||
if ( start<0 || stop<0 ) return "";
|
if ( start<0 || stop<0 ) return "";
|
||||||
lazyInit();
|
lazyInit();
|
||||||
if ( stop>=tokens.size() ) stop = tokens.size()-1;
|
if ( stop>=size() ) stop = size()-1;
|
||||||
|
|
||||||
StringBuilder buf = new StringBuilder();
|
StringBuilder buf = new StringBuilder();
|
||||||
for (int i = start; i <= stop; i++) {
|
for (int i = start; i <= stop; i++) {
|
||||||
|
|
|
@ -85,7 +85,7 @@ public class TreePostScriptGenerator {
|
||||||
doc = new PostScriptDocument(fontName, fontSize);
|
doc = new PostScriptDocument(fontName, fontSize);
|
||||||
boolean compareNodeIdentities = true;
|
boolean compareNodeIdentities = true;
|
||||||
this.treeLayout =
|
this.treeLayout =
|
||||||
new TreeLayout<Tree>(new TreeLayoutAdaptor(root),
|
new TreeLayout<Tree>(getTreeLayoutAdaptor(root),
|
||||||
new VariableExtentProvide(),
|
new VariableExtentProvide(),
|
||||||
new DefaultConfiguration<Tree>(gapBetweenLevels,
|
new DefaultConfiguration<Tree>(gapBetweenLevels,
|
||||||
gapBetweenNodes,
|
gapBetweenNodes,
|
||||||
|
@ -93,6 +93,12 @@ public class TreePostScriptGenerator {
|
||||||
compareNodeIdentities);
|
compareNodeIdentities);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get an adaptor for root that indicates how to walk ANTLR trees.
|
||||||
|
* Override to change the adapter from the default of {@link TreeLayoutAdaptor} */
|
||||||
|
public TreeForTreeLayout<Tree> getTreeLayoutAdaptor(Tree root) {
|
||||||
|
return new TreeLayoutAdaptor(root);
|
||||||
|
}
|
||||||
|
|
||||||
public String getPS() {
|
public String getPS() {
|
||||||
// generate the edges and boxes (with text)
|
// generate the edges and boxes (with text)
|
||||||
generateEdges(getTree().getRoot());
|
generateEdges(getTree().getRoot());
|
||||||
|
|
|
@ -53,7 +53,11 @@ import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
import javax.swing.tree.TreePath;
|
import javax.swing.tree.TreePath;
|
||||||
import javax.swing.tree.TreeSelectionModel;
|
import javax.swing.tree.TreeSelectionModel;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.WindowAdapter;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.awt.event.WindowListener;
|
||||||
import java.awt.geom.CubicCurve2D;
|
import java.awt.geom.CubicCurve2D;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
@ -683,7 +687,7 @@ public class TreeViewer extends JComponent {
|
||||||
if ( root!=null ) {
|
if ( root!=null ) {
|
||||||
boolean useIdentity = true; // compare node identity
|
boolean useIdentity = true; // compare node identity
|
||||||
this.treeLayout =
|
this.treeLayout =
|
||||||
new TreeLayout<Tree>(new TreeLayoutAdaptor(root),
|
new TreeLayout<Tree>(getTreeLayoutAdaptor(root),
|
||||||
new TreeViewer.VariableExtentProvide(this),
|
new TreeViewer.VariableExtentProvide(this),
|
||||||
new DefaultConfiguration<Tree>(gapBetweenLevels,
|
new DefaultConfiguration<Tree>(gapBetweenLevels,
|
||||||
gapBetweenNodes),
|
gapBetweenNodes),
|
||||||
|
@ -697,6 +701,12 @@ public class TreeViewer extends JComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get an adaptor for root that indicates how to walk ANTLR trees.
|
||||||
|
* Override to change the adapter from the default of {@link TreeLayoutAdaptor} */
|
||||||
|
public TreeForTreeLayout<Tree> getTreeLayoutAdaptor(Tree root) {
|
||||||
|
return new TreeLayoutAdaptor(root);
|
||||||
|
}
|
||||||
|
|
||||||
public double getScale() {
|
public double getScale() {
|
||||||
return scale;
|
return scale;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue