package tk.eclipse.plugin.jseditor.editors; import java.util.ArrayList; import java.util.List; /** * The model for the JavaScript function. * * @author Naoki Takezoe */ public class JavaScriptFunction implements JavaScriptElement, JavaScriptContext { private String _name; private String _arguments; private int _offset; private int _end; private List<JavaScriptElement> _children = new ArrayList<JavaScriptElement>(); private JavaScriptContext _parent; public JavaScriptFunction(String name, String arguments, int offset){ this._name = name; this._arguments = arguments; this._offset = offset; } public String getArguments() { return _arguments; } public String getName() { return _name; } public int getOffset(){ return _offset; } public int getStartOffset(){ return getOffset(); } public void setEndOffset(int end){ this._end = end; } public int getEndOffset(){ return _end; } public void add(JavaScriptFunction func){ this._children.add(func); } public void add(JavaScriptVariable var){ this._children.add(var); } public JavaScriptElement[] getChildren(){ return this._children.toArray(new JavaScriptElement[this._children.size()]); } public JavaScriptElement[] getVisibleElements(){ List<JavaScriptElement> list = new ArrayList<JavaScriptElement>(); JavaScriptContext context = this; while(true){ JavaScriptElement[] children = context.getChildren(); for(int i=0;i<children.length;i++){ list.add(children[i]); } if(context.getParent()==null){ break; } else { context = context.getParent(); } } return list.toArray(new JavaScriptElement[list.size()]); } public void setParent(JavaScriptContext context){ this._parent = context; } public JavaScriptContext getParent(){ return _parent; } @Override public String toString(){ return _name + "(" + _arguments + ")"; } }