How can I open a particular file at a particular line number and column?

Apache NetBeans Wiki Index

Note: These pages are being reviewed.

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);