How can I open a particular file at a particular line number and column?
Here is the basic idea (there are variations depending on your needs, so read the Javadoc):
File f = ...;
int lineNumber = ...;
FileObject fobj = FileUtil.toFileObject(f);
DataObject dobj = null;
try {
dobj = DataObject.find(fobj);
} catch (DataObjectNotFoundException ex) {
ex.printStackTrace();
}
if (dobj != null)
{
LineCookie lc = (LineCookie) dobj .getCookie(LineCookie.class);
if (lc == null) {/* cannot do it */ return;}
Line l = lc.getLineSet().getOriginal(lineNumber);
l.show(Line.SHOW_GOTO);
}
Applies to: NetBeans 5.x, 6.0, 6.1
For NetBeans 6.5 and later you should use something like:
File f = ...;
int lineNumber = ...;
FileObject fobj = FileUtil.toFileObject(f);
DataObject dobj = null;
try {
dobj = DataObject.find(fobj);
} catch (DataObjectNotFoundException ex) {
ex.printStackTrace();
}
if (dobj != null)
{
LineCookie lc = (LineCookie) dobj .getCookie(LineCookie.class);
if (lc == null) {/* cannot do it */ return;}
Line l = lc.getLineSet().getOriginal(lineNumber);
l.show(Line.ShowOpenType.OPEN, Line.ShowVisibilityType.FOCUS);
}
See the JavaDoc for Line.ShowOpenType
and Line.ShowVisibilityType
to see different options of showing the line (with focus, without focus, opening the editor if not open, etc.).
Example "How to open a document at line and at a specific column"
int lineNumber=42;
int colNumber=43;
//misses checks for NPEs
FileObject fo = ...;
LineCookie lc = DataObject.find(fo).getLookup().lookup(LineCookie.class);
Line line = lc.getLineSet().getOriginal(lineNumber);
line.show(Line.ShowOpenType.OPEN, Line.ShowVisibilityType.FRONT, colNumber);