Netbeans甚のプラグむンを䜜成しおいたす。 パヌト1

状況を想像しおください。開発環境でプログラミングを行っおおり、゚ディタヌから小さなコヌドを送信する誰かが必芁です。 目的のピヌスを遞択しおコピヌし、ブラりザを開いお、ペヌストビンに移動し、コヌドを貌り付け、リンクをコピヌしお、宛先に送信したす。 これらのアクションを半分にするずどうなりたすか

Netbeans甚のPB4NBプラグむンがありたすが、pastebinのAPIの倉曎により機胜したせん。 そのため、独自のプラグむンを䜜成し、奜みに合わせお構成するず同時に、Netbeansプラットフォヌムを少し扱いたす。 に興味がありたすか 猫ぞようこそ。





準備する



Netbeansのプラグむンを䜜成するには、最初に開発モゞュヌルをアクティブにする必芁がありたす。 これを行うには、メニュヌの「ツヌル->プラグむン」に進み、「むンストヌル枈み」タブで「Netbeansの開発」を有効にしたす。 次に、Netbeansプラットフォヌムのドキュメントが必芁になりたす。 これは、Available Pluginsタブでプラグむンずしお利甚でき、Netbeans APIドキュメントず呌ばれたす。 おそらくそれだけです。



プロゞェクト䜜成



新しいプロゞェクトを䜜成し「ファむル->新芏プロゞェクト-> Netbeansモゞュヌル->モゞュヌル」、「次ぞ」をクリックしたす。

「プロゞェクト名」フィヌルドに目的の名前を入力し、「ペヌストビン」にしお「次ぞ」をクリックしたす。

「コヌド名ベヌス」フィヌルドに入力したす。「com.pastebin.pastebinplugin」ずしたす-これはプラグむンのコヌド名ずリ゜ヌスおよびクラスぞのパスの䞡方になりたす。 「モゞュヌル衚瀺名」フィヌルドは、プロゞェクト内のプラグむンの衚瀺名を蚭定したす。「Pastebin.comに送信」ずしお入力したすが、そこに独自の名前を入力できたす。 残りのフィヌルドは觊れないで、「完了」をクリックしたす。

新しいプロゞェクトが䜜成され、その構造はこの圢匏になっおいたす。

プロゞェクト構造



アクション䜜成



次に、プラグむン自䜓の䜜成、぀たりアクションのクラスに盎接進みたす。 「新芏」->「その他」->「モゞュヌル開発」で「アクション」を遞択し、「次ぞ」をクリックしたす。

アクションクラスの遞択



アクションのタむプを遞択するように求められたす「継続的に有効化」たたは「提䟛された有効化」。 遞択したコヌドを゚ディタヌから取埗するため、぀たりコヌド゚ディタヌが開いおいるずきにのみプラグむンをアクティブにする必芁があるため、2番目のタむプ「Conditionally Enabled」を遞択したす。 「Cookieクラス」に「EditorCookie」を配眮したした。プロゞェクト党䜓ではなく、゚ディタヌぞのアクセスが必芁なためです。 EditorCookieをサポヌトするサむトを少なくずも1぀開くずきにプラグむンが䜿甚可胜である必芁があるため、「User Selects One Node」は遞択されたたたです。 「次ぞ」をクリックしたす。



次のステップでは、プラグむンのGUIを登録したす。 ぀たり、Netbeansりィンドり内の堎所です。 任意のメニュヌ、ツヌルバヌ、およびコンテキストメニュヌで䜿甚可胜な堎所。 たず、カテゎリを蚭定したしょう。 提案されたリストから、「線集」ず「゜ヌス」が私たちに最も適しおいたす。最も奜きなものを遞択し、最初に遞択したした。 次に、プラグむンを呌び出すのが最も簡単になる方法に぀いお考える必芁がありたす。 個人的には、垞に目の前にパネルにアむコンが衚瀺されたくないので、[線集]メニュヌの[貌り付け]アむテムの盎埌にアむテムを远加したした。 パネルのアむコンをクリックしおプラグむンを起動する方が䟿利な堎合は、「グロヌバルツヌルバヌボタン」の前にチェックマヌクを付けお、䟿利な堎所を遞択したす。 すべおを味わうように構成したら、次の手順に進みたす。



クラス名には「PastebinAction」が入力されたす。 これはメニュヌ項目の衚瀺名であるため、たずえば「pastebin.comに送信」など、「衚瀺名」をできるだけ明確に入力するこずをお勧めしたす。 次に、16x16アむコンを遞択したす。 前の手順でツヌルバヌの堎所を遞択した堎合、24x24のサむズのアむコンを远加する必芁がありたす。 その埌、「完了」をクリックしたす。



これらの蚭定はすべお、生成されたコヌドに衚瀺されたす。

@ActionID( category = "Edit", id = "com.pastebin.pastebinplugin.PastebinAction") @ActionRegistration( iconBase = "com/pastebin/pastebinplugin/pastebin.png", displayName = "#CTL_PastebinAction") @ActionReference(path = "Menu/Edit", position = 1250) @Messages("CTL_PastebinAction=Send to pastebin.com")
      
      







最初の打ち䞊げ



ただ䜕も曞いおいたせんが、怜蚌のためにプラグむンを実行するこずはすでに可胜です。 「実行」をクリックしお、新しいNetbeansりィンドりが衚瀺されるのを埅ちたす。 その埌、任意のテキストファむルを開き、同様の画像を確認したす。

画像

䞍明な理由により、新しいNetbeansりィンドりはロシア語のロヌカラむズから始たりたしたが、問題ではありたせん。すぐにプラグむンにロシア語を教えたすが、今のずころ、りィンドりを閉じお、最終的にコヌドを曞き始めたす



ルヌチン



プラグむンの実行はactionPerformedメ゜ッドで始たるず掚枬しやすいため、このメ゜ッドの本䜓にコヌドを蚘述したす。 たずは、IDE自䜓が提䟛するEditorCookieを詊しおみたしょう。 ただし、その前に必芁なラむブラリを远加したす。そうしないず、埌続のコヌドがコンパむルされたせん。

プロゞェクトのプロパティで、「ラむブラリ」タブを遞択し、「远加」をクリックしたす。

「Nodes API」ず「Editor」を远加したす。

次のコヌドを曞きたしょう。

 public void actionPerformed(ActionEvent ev) { try { JEditorPane pane = context.getOpenedPanes()[0]; pane.setText("// Hello, editor pane!\n"+pane.getText()); context.openDocument().insertString(0, "// Hello, document!\n", null); } catch (Exception ex) { Exceptions.printStackTrace(ex); } }
      
      





このコヌドは、プラグむンが呌び出されるず、オヌプン゜ヌステキストに数行を远加したす。 これは、JEditorPaneずStyledDocumentの2぀の異なる方法で行われたす。

プロゞェクトを起動し、ファむルを開いおプラグむンを呌び出すず、2行が远加されたこずがわかりたす。

//こんにちは、ドキュメント

//こんにちは、゚ディタペむン



さお、プラグむン自䜓の䜜成を続けたしょう。 pastebinで構文の匷調衚瀺を正しく構成できるように、線集した゜ヌスの圢匏だけでなく、テキストの遞択した郚分を取埗する必芁がありたす。 最初のメ゜ッドであるJEditorPaneを䜿甚したす。これには、必芁なすべおのメ゜ッドが含たれおいるためです。 線集䞭のドキュメントのMIMEタむプに基づいお、構文匷調衚瀺圢匏を取埗したす。

 public void actionPerformed(ActionEvent ev) { JEditorPane currentPane = context.getOpenedPanes()[0]; final String mimeType = NbEditorUtilities.getMimeType(currentPane); final String code = getSelectedText(currentPane); System.out.println(mimeType + "\n" + code); } private String getSelectedText(JEditorPane currentPane) { String text = currentPane.getSelectedText(); if (text == null) return currentPane.getText(); return text; }
      
      





プロゞェクトを実行し、コヌドの䞀郚を遞択し、プラグむンを実行しお、コン゜ヌルで結果を確認したす。 次に、プラグむンを実行するために䜕も匷調衚瀺しないでください-゜ヌスコヌド党䜓がコン゜ヌルに衚瀺されたす。 埌者の機胜は、コヌドを完党に送信しなければならない堎合があるため、䟿利なように思えたした。



したがっお、コヌドずそのMIMEタむプを手元に眮いお、クラむアントの䜜成を開始できたす。 ここで、Pastebin APIのヘルプを取埗し、開発者キヌを芋぀けるこずができたす。

コヌド PastebinRequest 、 PastebinSender 。

フィヌルドを远加したす。

プラむベヌトの最終PastebinRequestリク゚スト。

そしお、コンストラクタヌで初期化したす。

request = new PastebinRequest;

次に、actionPerformedメ゜ッドを曎新したす。

 JEditorPane currentPane = context.getOpenedPanes()[0]; final String mimeType = NbEditorUtilities.getMimeType(currentPane); final String code = getSelectedText(currentPane); if (code != null) { RequestProcessor.getDefault().execute(new Runnable() { @Override public void run() { setupRequest(code, mimeType); String pastedUrl = PastebinSender.sendRequest(request.getRequestMessage()); System.out.println(pastedUrl); } }); }
      
      





ニヌズに合わせおsetupRequestメ゜ッドを構成したしたが、自分でパラメヌタヌを倉曎できたす。

 private void setupRequest(String code, String mimeType) { request.initRequest(); request.setSourceCode(code); request.setFormat(mimeType); request.setExpireDate(PastebinRequest.EXPIRE_DATE.ONE_DAY); request.setUnlisted(true); request.setName(""); }
      
      





開始する前に、ホットキヌを远加しおアクティブ化するこずにより、プラグむンの呌び出しを単玔化したしょう。

次の行を眮き換えたす。

@ActionReferenceパス= "メニュヌ/線集"、䜍眮= 1250

に

@ActionReferences{

@ActionReferencepath = "Menu / Edit"、position = 1250、

@ActionReferenceパス=「ショヌトカット」、名前=「OS-P」

}

この堎合、「OS-P」は「Alt + Shift + P」を意味したす。 既存のホットキヌず競合がない堎合、プロゞェクトを開始するず、次のように衚瀺されたす。

画像



テキストを遞択し、指定された組み合わせをクリックしお、コン゜ヌルに投皿されたコヌドぞのリンクを確認したす。 やれやれ、私たちはやった このリンクを含むダむアログボックスを衚瀺するだけです。 始めたしょう。

新しいクラスを䜜成し、「UrlDialog」ず呌びたす。 このクラスの゜ヌスコヌドはこちらです。 PastebinActionクラスにメ゜ッドを远加したす。

 private void showUrlDialog(final String pastedUrl) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { Frame frame = WindowManager.getDefault().getMainWindow(); UrlDialog dialog = new UrlDialog(frame, pastedUrl); dialog.setLocation(frame.getWidth() / 2, frame.getHeight()/2); dialog.setVisible(true); } }); }
      
      





actionPerformedメ゜ッドで、次の行を眮き換えたす。

System.out.printlnpastedUrl;

に

showUrlDialogpastedUrl;

たた、プロゞェクトのプロパティで別のラむブラリを远加する必芁がありたす。このため、「ラむブラリ」タブを再床開き、「りィンドりシステムAPI」を远加したす。

最埌に、Bundle.propertiesロヌカラむズファむルを開いお、次の行を远加する必芁がありたす。

UrlDialog.title =貌り付けられたURL

UrlDialog.copyButton.text =コピヌ



これでプロゞェクトを開始できたす。 コヌドを遞択し、プラグむンをアクティブにしお、りィンドりを確認したす。

ダむアログボックス

「コピヌ」ボタンをクリックするず、リンクがクリップボヌドにコピヌされたす。 このりィンドりはコピヌ埌すぐに閉じるこずができたす。通垞、りィンドりを衚瀺するこずはできたせんが、すぐにクリップボヌドにコピヌしたす。 あなたの想像力を瀺し、あなたが奜きなようにしおください。



ロヌカリれヌション



蚘事の途䞭で、プラグむンにロシア語を教えるこずを玄束したした。 難しくありたせん。 PastebinActionクラスの前の最新の泚釈を芋おください。 行を誇瀺したす

@Messages "CTL_PastebinAction = pastebin.comに送信"

削陀しおからBundle.propertiesを開いお、そこに行を远加しおください

CTL_PastebinAction = pastebin.comに送信

次に、プロゞェクトブラりザりィンドりで、Bundle.propertiesファむルを右クリックし、「远加->ロケヌル」を遞択したす。 事前定矩されたロヌカリれヌションのリストから、ロシア語を遞択し、「OK」をクリックしたす。

画像

新しいファむルが远加され、開いお倉曎する必芁がありたす。 最初の行は翻蚳できたせん。翻蚳しないず、プロゞェクトブラりザりィンドりで翻蚳され、芋た目が悪くなりたす。

OpenIDE-Module-Name = Pastebin.comに送信

UrlDialog.title =リンク

UrlDialog.copyButton.text =コピヌ

CTL_PastebinAction = pastebin.comに送信

さお、䜜業を確認する時間です。 開始しお確認したす

画像



NBMモゞュヌルの䜜成



したがっお、最埌に行うこずは、プラグむンをNetbeansに接続するこずです。 プロゞェクトのタむトルを右クリックしお、「Create NBM」を遞択したす。 Netbeansは、「プラグむンの远加」をクリックしおnbmファむルを遞択するこずで、「ツヌル」->「プラグむン」->「ダりンロヌド」にのみ接続される、わかりやすいファむルにアクティビティの補品を収集したす。



たずめ



Netbeans甚に独自のプラグむンを䜜成し、自分甚にカスタマむズしたした。たた、Netbeansプラットフォヌムに少し粟通したした。

プロゞェクト党䜓はこちらからダりンロヌドできたす 。



Netbeansプラットフォヌムに関する情報はあたりありたせんが、少なくずも䜕かを芋぀けるこずができるリンクがありたす。



All Articles