Плагин NetBeans - открыть файл в определенной строке и столбце

Я хотел бы открыть файл, указанный его путем, в редакторе NetBeans в определенной строке и строке. Я хотел бы иметь ту же функциональность, что и когда какой-либо Java/C/C++ или любой другой язык программирования печатает исключение. Насколько я пошел на данный момент:

  1. Напишите исключение в консоли
  2. Используя OutputListener, определите, что должно быть напечатано как гипертекст.
  3. OutputListener.outputLineAction, который определяет, что делать при нажатии на гипертекст
  4. ---ЗДЕСЬ Я НЕ ЗНАЮ ЧТО ДЕЛАТЬ---

Пример сообщения об ошибке, которое мне нужно решить:

E ERRORCODE: error definition; line=2; column=30; source='file:/C:/...'

Как я могу открыть файл в своем плагине в текстовом редакторе и указать на определенную строку и столбец?


person MartinZ    schedule 14.03.2014    source источник


Ответы (1)


См. http://wiki.netbeans.org/DevFaqOpenFileAtLine.

LineCookie — см. https://forums.netbeans.org/topic59253.html

or

NbDocument#openDocument() — см. http://bits.netbeans.org/dev/javadoc/org-openide-text/org/openide/text/NbDocument.html#openDocument(org.openide.util.Lookup.Provider, int, int, org.openide.text.Line.ShowOpenType, org.openide.text.Line.ShowVisibilityType)


Пример использования LineCookie

    FileObject fo = null;
    LineCookie lc = DataObject.find(fo).getLookup().lookup(LineCookie.class);
    int lineNumber=42;
    int colNumber=43;
    Line line = lc.getLineSet().getOriginal(lineNumber);
    line.show(Line.ShowOpenType.OPEN, Line.ShowVisibilityType.FRONT, colNumber);

Больше примеров на

person Ben    schedule 15.03.2014
comment
Я считаю, что NbDocument.openDocument может быть правильным способом. Однако я действительно не знаю, как использовать этот Lookup и Lookup.provider. В качестве поиска я использую Lookup lookup = Lookups.forPath(path_ref);, где path_ref — это строковый путь к файлу, который я хочу открыть, а затем Lookup.Provider использует этот поиск. Проблема в том, что метод openDocument() не возвращает true (и ничего не показывает). - person MartinZ; 15.03.2014
comment
См. пример кода выше. LineCookie должен сделать эту работу. - person Ben; 15.03.2014
comment
Потребовалось некоторое время, чтобы вернуться к моему компьютеру, но я должен поблагодарить вас! FileObject можно получить File f = new File(path_ref); FileObject fo = FileUtil.toFileObject(f); Остальное то же самое. Большое спасибо! - person MartinZ; 18.03.2014