2017-08-11 15 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()); 

しかし、私はこのファイルをどのように変更するか分かりません。誰かがこれで私を助けることができますか? 2番目の質問は、テキスト選択範囲を取得する方法ですか?私は選択したテキストに対してのみコマンドを実行したい。

答えて

0

を見ますアクティブファイルについてあなたは、このコードを使用することができます(変更にCtrl + Zで元に戻すことができるような方法で)アクティブなファイルの内容を変更するには

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

:キャレット位置を取得したり、あなたが行うことができます選択範囲を取得するには

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

関連する問題