2017-08-11 68 views
0

我正在编写自己的Netbeans插件来编辑打开的文件。我设法得到一些有关当前活动文件使用的信息Netbeans模块开发 - 如何修改打开的文件

TopComponent activeTC = TopComponent.getRegistry().getActivated(); 
FileObject fo = activeTC.getLookup().lookup(FileObject.class); 
io.getOut().println(fo.getNameExt()); 
io.getOut().println(fo.canWrite()); 
io.getOut().println(fo.asText()); 

但我不知道如何修改此文件。有人可以帮我弄这个吗? 第二个问题,如何获得文本选择范围?我只想在选定的文本上运行我的命令。

回答

0

看几个小时的研究后,我发现:

我张贴有问题的代码可以用来获得基本Informa公司关于活动文件。

要获得插入符位置或得到的选择范围,你可以这样做:

JTextComponent editor = EditorRegistry.lastFocusedComponent(); 
io.getOut().println("Caret pos: "+ editor.getCaretPosition()); 
io.getOut().println("Selection start: "+ editor.getSelectionStart()); 
io.getOut().println("Selection end: "+ editor.getSelectionEnd()); 

要修改活动文件的内容(的方式,修改可以按Ctrl + Z被撤销),您可以使用此代码:

final StyledDocument doc = context.openDocument(); 
NbDocument.runAtomicAsUser(doc, new Runnable() { 
    public void run() { 
     try { 
     doc.insertString(ofset, "New text.", SimpleAttributeSet.EMPTY); 
     } catch (Exception e) { 
     } 
    } 
    }); 
1

要修改文件,您可以使用NetBeans org.openide.filesystems.FileUtil.toFile(),然后使用常规的Java内容读取和写入文件,并获取当前编辑器窗口的选定文本,您将必须这样做:

Node[] arr = activeTC.getActivatedNodes(); 
for (int j = 0; j < arr.length; j++) { 
    EditorCookie ec = (EditorCookie) arr[j].getCookie(EditorCookie.class); 
    if (ec != null) { 
     JEditorPane[] panes = ec.getOpenedPanes(); 
     if (panes != null) { 
      // USE panes 
     } 
    } 
} 

更多代码示例也here