<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <!-- -*- xhtml -*- -->
    <title>Introdu&ccedil;&atilde;o ao plug-in do NetBeans para plataformas NetBeans 6.8</title>
    <meta name="AUDIENCE" content="NBUSER">
    <meta name="TYPE" content="ARTICLE">
    <meta name="EXPIRES" content="N">
    <meta name="developer" content="gwielenga@netbeans.org">
    <meta name="indexed" content="y">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">   
    <meta name="description"
          content="A guide describing how to implement a Google Toolbar Module into NetBeans IDE.">
    <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css">
</head>

<!-- Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. -->
               <!-- Use is subject to license terms. -->

<body>
<h1><a name="top"></a>In&iacute;cio r&aacute;pido de plug-in do NetBeans</h1>

    <p>Bem-vindo ao desenvolvimento do plug-in do NetBeans!

  <p>Este tutorial fornece uma introdu&ccedil;&atilde;o muito simples e r&aacute;pida ao fluxo de trabalho do desenvolvimento do plug-in do NetBeans orientando-o atrav&eacute;s da cria&ccedil;&atilde;o de uma nova barra de ferramentas para o NetBeans IDE. Ap&oacute;s concluir este tutorial, voc&ecirc; ter&aacute; adquirido um conhecimento geral sobre como criar, construir e instalar plug-ins do NetBeans IDE.
   
   <p>Ap&oacute;s concluir este tutorial, voc&ecirc; pode passar para a <a href="https://netbeans.org/kb/trails/platform_pt_BR.html">trilha do aprendizado da plataforma NetBeans</a> A trilha do aprendizado fornece tutoriais abrangentes que destacam uma ampla gama de APIs do NetBeans para uma variedade de tipos de aplicativos. Se n&atilde;o desejar criar um aplicativo &quot;Hello world&quot;, ignore este tutorial e v&aacute; direito para a trilha do aprendizado. 

   <p><b class="notes">Observa&ccedil;&atilde;o:</b> este documento usa a vers&atilde;o NetBeans IDE 6.8. Se voc&ecirc; estiver usando uma vers&atilde;o anterior, veja <a href="67/nbm-google_pt_BR.html">a vers&atilde;o  6.7 deste documento</a>.</p>
   
   <p><b>Conte&uacute;do</b></p>
         
   <img  src="../images/articles/68/netbeans-stamp-65-67-68.gif" class="stamp" width="114" height="114" alt="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.5, 6.7, 6.8" title="O conte&uacute;do desta p&aacute;gina se aplica ao NetBeans IDE 6.5, 6.7, 6.8"> </p>
      <ul class="toc">
        <li><a href="#creating-module-project">Configurando o projeto de m&oacute;dulo</a></li>
        <li><a href="#coding-module">Codificando o m&oacute;dulo</a>
        <ul>
            <li><a href="#creating-action">Criando a a&ccedil;&atilde;o</a></li>
            <li><a href="#creating-panel">Criando o formul&aacute;rio JPanel</a></li>
            <li><a href="#resolving-errors">Resolvendo erros</a></li>
            <li><a href="#overriding">Implementado o Presenter.Toolbar</a></li>
        </ul>
        </li>
        <li><a href="#compiling">Compilando, instalando e usando o m&oacute;dulo</a>
        <li><a href="#sharing-plugin">Compartilhando o m&oacute;dulo</a></li>
      </ul>
         
<p><b>Para seguir este tutorial, voc&ecirc; preciso dos softwares e recursos listados na tabela seguinte.</b></p>

 <table>
        <tbody>
            <tr>
                <th class="tblheader" scope="col">Software ou recurso</th>
                <th class="tblheader" scope="col">Vers&atilde;o necess&aacute;ria</th>
            </tr> 
            <tr>
                <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
                <td class="tbltd1">vers&atilde;o 6.5 ou superior</td>
            </tr>
            <tr>
                <td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Java Developer Kit (JDK)</a></td>
                <td class="tbltd1">Vers&atilde;o 6 ou<br/>vers&atilde;o 5</td>
            </tr>
        </tbody>
    </table>
    
   <p class="tips">Opcionalmente, para fins de solu&ccedil;&atilde;o de problemas, voc&ecirc; pode <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=13794">baixar a amostra completa</a> e inspecionar os c&oacute;digos-fonte.
    
    <p>A barra de ferramentas criada neste tutorial ter&aacute; esta apar&ecirc;ncia:</p>

    <img src="../images/tutorials/google/60/googlebar-2.png" border="1"
            alt="Barra de ferramentas do Google mostrando a string de pesquisa de amostra">
        
    <p><p>Quando o usu&aacute;rio pressionar Enter na barra de ferramentas acima, o navegador padr&atilde;o do IDE ser&aacute; aberto e o texto na barra de ferramentas ser&aacute; enviado para uma pesquisa do Google, com os resultados dispon&iacute;veis no navegador aberto. Para criar esta barra de ferramentas, voc&ecirc; usar&aacute; as <a href="http://bits.netbeans.org/dev/javadoc/">APIs do NetBeans</a> para aprimorar o conjunto de recursos do IDE. Especificamente, crie uma a&ccedil;&atilde;o que seja chamada por um bot&atilde;o na barra de ferramentas. Em seguida, crie um Swing JPanel contendo <tt>JLabel</tt>  e <tt>JTextField</tt> como componentes de GUI. 
 Finalmente, voc&ecirc; ir&aacute; implementar o <a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/org/openide/util/actions/Presenter.Toolbar.html"><tt>Presenter.Toolbar</tt></a> para retornar o JPanel para que ele seja exibido na barra de ferramentas ao inv&eacute;s de no bot&atilde;o.
    
<!-- ===================================================================================== -->  

<br>
<h2 class="tutorial"><a name="creating-module-project"></a>Configurando o projeto de m&oacute;dulo</h2>

<p>Ao desenvolver o m&oacute;dulo, verifique se a estrutura do projeto est&aacute; configurada corretamente. 
 O NetBeans IDE oferece um assistente para Projeto de m&oacute;dulo que configura todos os arquivos b&aacute;sicos necess&aacute;rios para um m&oacute;dulo.</p>
    
<ol>
    <li>Escolha Arquivo &gt; Novo projeto (Ctrl-Shift-N).   Em Categorias, selecione M&oacute;dulos do NetBeans. Em Projetos, selecione M&oacute;dulo . Clique em Pr&oacute;ximo.</li>
    <li>No painel Nome e localiza&ccedil;&atilde;o, digite <tt>GoogleToolbar</tt> no campo Nome do projeto.
                Altere Local do projeto para qualquer diret&oacute;rio no computador. Deixe marcadas a op&ccedil;&atilde;o M&oacute;dulo independente e a caixa de verifica&ccedil;&atilde;o Definir como projeto principal.  Clique em Pr&oacute;ximo.</li>
    <li>No painel Configura&ccedil;&atilde;o b&aacute;sica de m&oacute;dulos, digite <tt>org.myorg.googletoolbar</tt> no Nome base de c&oacute;digo. 
    <li>Selecione &quot;Gerar camada XML&quot;. Deixe as localiza&ccedil;&otilde;es do pacote de localiza&ccedil;&otilde;es e a camada XML, de modo que sejam armazenados em um pacote com o nome <tt>org/myorg/googletoolbar</tt>. Clique em Terminar.</li>
</ol>
    
<p>O IDE cria o  projeto <tt>GoogleToolbar</tt>. O projeto cont&eacute;m todos os metadados de projeto e fontes, como o script de constru&ccedil;&atilde;o Ant do projeto. O projeto se abre no IDE. Voc&ecirc; pode visualizar a estrutura l&oacute;gica na janela Projetos (Ctrl+1) e a estrutura de arquivos na janela Arquivos (Ctrl+2).  

 <p>Se voc&ecirc; expande o n&oacute; Arquivos importantes, poder&aacute; abrir o Module Manifest, que tem este conte&uacute;do:

<pre class="examplecode">Manifest-Version: 1.0
OpenIDE-Module: org.myorg.googletoolbar
OpenIDE-Module-Layer: org/myorg/googletoolbar/layer.xml
OpenIDE-Module-Localizing-Bundle: org/myorg/googletoolbar/Bundle.properties
OpenIDE-Module-Specification-Version: 1.0</pre>

<p>Para obter detalhes sobre estas chaves do manifeste espec&iacute;ficas do NetBeans, leia a descri&ccedil;&atilde;o Javadoc do <a href="http://bits.netbeans.org/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html">API do m&oacute;dulo NetBeans</a>.

    
<br>


<!-- ===================================================================================== -->

<br>
<h2><a name="coding-module"></a>Codificando o m&oacute;dulo da </h2>

<p>Para codificar o m&oacute;dulo, voc&ecirc; precisa completar as seguintes etapas:</p>

<ul>
    <li><a href="#creating-action">Criando a a&ccedil;&atilde;o</a></li>
    <li><a href="#creating-panel">Criando o JPanel</a></li>
    <li><a href="#resolving-errors">Resolvendo erros</a></li>
    <li><a href="#overriding">Substituindo getToolbarPresenter()</a></li>
</ul>

<div class="indent">
    <h3 class="tutorial"><a name="creating-action"></a>Criando a a&ccedil;&atilde;o</h3>
    
    <ol>
        <li>Clique com o bot&atilde;o direito do mouse no n&oacute; do projeto e escolha Nova &gt; A&ccedil;&atilde;o (se A&ccedil;&atilde;o n&atilde;o estiver exibida, acesse-a escolhendo Outra, em seguida, no assistente para Novo arquivo em Categorias, selecione Desenvolvimento de m&oacute;dulo). 
 Clique em Pr&oacute;ximo.</li>
        <li>No painel Tipo de a&ccedil;&atilde;o, mantenha a configura&ccedil;&atilde;o padr&atilde;o, que permitir&aacute; que o IDE crie uma a&ccedil;&atilde;o que subclassifique <tt>ActionListener</tt>, como mostrado abaixo:
        
            <br><br>
            <img src="../images/tutorials/google/65/action-wiz-1.png" alt="Etapa 1 do assistente para Nova a&ccedil;&atilde;o">
            
            <br><br>
            Clique em Pr&oacute;ximo.
        
        <li>No painel Registro com GUI, selecione Editar na lista suspensa Categoria. A lista suspensa Categoria 
            controla onde uma a&ccedil;&atilde;o &eacute; mostrada no editor de atalhos de teclado no IDE. Em seguida, desmarque 
            Item de menu global e selecione Bot&atilde;o da barra de ferramentas global. Na lista suspensa Barra de ferramentas, selecione Arquivo, em seguida, na lista suspensa Posi&ccedil;&atilde;o, selecione <i>qualquer posi&ccedil;&atilde;o na lista suspensa</i>, como a mostrada abaixo:
        
            <br><br>
            <img src="../images/tutorials/google/65/action-wiz-2.png" />
            
            <br><br>       
            Clique em Pr&oacute;ximo.
        
        <li><p>No painel Novo e localiza&ccedil;&atilde;o, digite <tt>GoogleAction</tt> como o Nome da classe e <tt>Google 
            Action</tt> como o Nome de exibi&ccedil;&atilde;o. V&aacute; para um &iacute;cone que tenha uma dimens&atilde;o de 16x16 pixels. Na verdade, voc&ecirc; n&atilde;o usar&aacute; o &iacute;cone - em vez disso, exibir&aacute; o formul&aacute;rio JPanel que criar&aacute; na pr&oacute;xima se&ccedil;&atilde;o. Entretanto, o assistente para Nova a&ccedil;&atilde;o requer que voc&ecirc; especifique um &iacute;cone. Portanto, o &iacute;cone poderia ser
            de qualquer dimens&atilde;o, j&aacute; que voc&ecirc; n&atilde;o o usar&aacute;. Clique em Terminar.</p> 
            <p><b class="notes">Observa&ccedil;&atilde;o:</b> <tt>GoogleAction.java</tt> &eacute; adicionado ao pacote <tt>org.myorg.googletoolbar</tt> na janela Projetos.
         
            </li>
    </ol>
    
    <h3 class="tutorial"><a name="creating-panel"></a>Criando o JPanel</h3>
    <p>Nesta se&ccedil;&atilde;o, voc&ecirc; criar&aacute; um JPanel que ser&aacute; a barra de ferramentas exibida como parte da principal barra de ferramentas do aplicativo.
    <ol>
        <li>Clique com o bot&atilde;o direito do mouse no n&oacute; do projeto e escolha Novo &gt; Outro.  Em Categorias, selecione Formul&aacute;rios GUI Swing. 
Em Projetos, selecione Formul&aacute;rio JPanel. Clique em Pr&oacute;ximo.</li>
        <li>No painel Nome e localiza&ccedil;&atilde;o, digite <tt>GooglePanel</tt> como o Nome da classe e selecione o painel na lista suspensa. Clique em Terminar. <tt>GooglePanel.java</tt> &eacute; adicionado ao pacote e &eacute; aberto na visualiza&ccedil;&atilde;o Design no Editor de c&oacute;digo-fonte.</li>
        <li>Coloque o cursor no canto inferior direito do JPanel, em seguida, selecione o JPanel e arraste o cursor para redimension&aacute;-lo, de forma que sua largura e cumprimento fiquem parecidos com os de uma barra de ferramentas, como mostrado abaixo:
        
            <br><br>
            <img src="../images/tutorials/google/60/jpanel-2.png" border="1" alt="JPanel redimensionado"></li>
        
        <li>Arraste um item JTextField e um item JLabel da Paleta (Ctrl+Shift+8) diretamente para o JPanel, em seguida, redimensione o JPanel e os outros dois itens, para que eles se encaixem. Finalmente, clique no JLabel e altere o texto para <tt>Google:</tt> e, em seguida, exclua o texto padr&atilde;o no JTextField.
 Seu JPanel agora deve se parecer com a imagem mostrada abaixo:
        
            <br><br>
            <img src="../images/tutorials/google/60/jpanel-3.png" border="1" 
                alt="JTextField e JLabel inclu&iacute;dos no JPanel"></li>
        
        <li>Verifique se o Inspetor de propriedades est&aacute; aberto (Janela &gt; Navega&ccedil;&atilde;o &gt; Inspetor), em seguida, clique com o bot&atilde;o direito do mouse em JTextField e escolha Eventos &gt; Tecla &gt; keyTyped. Isso gera um m&eacute;todo <tt>jTextField1KeyTyped()</tt> 
            no c&oacute;digo-fonte <tt>GooglePanel.java</tt>, que &eacute; exibido no Editor de c&oacute;digo-fonte, como mostrado abaixo:
        
            <br><br>
            <img src="../images/tutorials/google/60/jpanel-4.png" border="1" 
                alt="M&eacute;todo JTextField1KeyTyped() gerado no c&oacute;digo-fonte"></li>
        
        <li>No Editor de c&oacute;digo-fonte, na visualiza&ccedil;&atilde;o C&oacute;digo-fonte do <tt>GooglePanel.java</tt>, preencha o m&eacute;todo <tt>jTextField1KeyTyped()</tt>, da seguinte forma (texto inserido mostrado em <strong>negrito</strong>):
        
        <pre class="examplecode">    
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
    <strong>int i = evt.getKeyChar();
    if (i==10){//The ENTER KEY
        // we display the google url.
        try{
            URLDisplayer.getDefault().showURL
                    (new URL(&quot;http://www.google.com/search?hl=en&amp;q=&quot;+jTextField1.getText()+&quot;&amp;btnG=Google+Search&quot;));
        } catch (Exception eee){
            return;//nothing much to do
        }
    }</strong>
}</pre>
        </li>
    </ol>
        
    <p>Se precisar, clique com o bot&atilde;o direito do mouse no Editor de c&oacute;digo-fonte e escolha Formatar (Alt+Shift+F).</p>
           
    <h3 class="tutorial"><a name="resolving-errors"></a>Resolvendo erros</h3>
            
    <p>Observe que uma linha de c&oacute;digo est&aacute; sublinhada em vermelho, indicando erros. Isso acontece porque pacotes necess&aacute;rios ainda n&atilde;o foram importados. Coloque o cursor sobre o &iacute;cone da l&acirc;mpada exibido na coluna imediatamente &agrave; esquerda da linha vermelha de <tt>URLDisplayer</tt>. &Eacute; exibida 
        uma dica de ferramenta, indicando o motivo do erro:
        
        <br><br>
        <img src="../images/tutorials/google/60/tooltip.png" border="1" 
            alt="dica de ferramenta do erro URLDisplayer no Editor de c&oacute;digo-fonte"></p>
                        
    <p>Para resolver isso, voc&ecirc; precisa disponibilizar a classe <tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/HtmlBrowser.URLDisplayer.html">HtmlBrowser.URLDisplayer</a></tt>, inclu&iacute;da no pacote <a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/package-summary.html">
        <tt>org.openide.awt</tt></a>, para o seu projeto. Para isso, execute as seguintes etapas:</p>
        
    <ol>
        <li>Clique com o bot&atilde;o direito do mouse no n&oacute; do projeto na janela Projetos e escolha Propriedades. Na caixa de di&aacute;logo Propriedades do projeto, selecione Bibliotecas sob o t&iacute;tulo Categorias. Em seguida, em Depend&ecirc;ncias de m&oacute;dulo, 
            clique no bot&atilde;o Adicionar. A caixa de di&aacute;logo Adicionar depend&ecirc;ncia de m&oacute;dulo &eacute; exibida.</li>
        <li>Na caixa de texto do filtro exibida na parte inferior da caixa de di&aacute;logo Adicionar depend&ecirc;ncia de m&oacute;dulo, comece a digitar <tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/HtmlBrowser.URLDisplayer.html">URLDisplayer</a></tt> e observe que a sele&ccedil;&atilde;o dos m&oacute;dulos retornados se estreita at&eacute; que somente a listagem restante seja a <a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/overview-summary.html">API de utilit&aacute;rios de IU</a>:
 
            <br><br>
            <img src="../images/tutorials/google/60/add-module-dependency.png"
                alt="Caixa de di&aacute;logo Adicionar depend&ecirc;ncia de m&oacute;dulo exibindo a API de utilit&aacute;rios de IU">                 
                
            <br><br>
            Clique em OK, em seguida, clique em OK novamente para sair da caixa de di&aacute;logo Propriedades do projeto.</li>
        <li>Clique com o bot&atilde;o direito do mouse no Editor de c&oacute;digo-fonte e escolha Corrigir importa&ccedil;&otilde;es (Alt+Shift+F). A caixa de di&aacute;logo Corrigir todas as importa&ccedil;&otilde;es &eacute; exibida, listando os caminhos sugeridos para classes n&atilde;o reconhecidas:
            
            <br><br>
            <img src="../images/tutorials/google/60/fix-all-imports.png"
                alt="Caixa de di&aacute;logo Corrigir todas as importa&ccedil;&otilde;es contendo caminhos sugeridos para classes n&atilde;o reconhecidas">                
            
            <br><br>
            Clique em OK. O IDE cria as instru&ccedil;&otilde;es de importa&ccedil;&atilde;o seguintes para <tt>GooglePanel.java</tt>:
            
            <pre>
import java.net.URL;
import <a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/HtmlBrowser.URLDisplayer.html">org.openide.awt.HtmlBrowser.URLDisplayer</a>;
            </pre>
            
            Observe tamb&eacute;m que todos os erros desaparecem do Editor de c&oacute;digo-fonte.</li>
    </ol>
        
    <h3 class="tutorial"><a name="overriding"></a>Implementado o Presenter.Toolbar</h3>
    
    <p>Como o JPanel que acaba de ser criado &eacute; o componente real que ir&aacute; exibir a barra de ferramentas do Google, &eacute; preciso implementar o <tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/org/openide/util/actions/Presenter.Toolbar.html">Presenter.Toolbar</a></tt> para que seja exibido na barra de ferramentas. Em <tt>GoogleAction.java</tt>, fa&ccedil;a o 
        seguinte:</p>
        
    <ol>
        
        
        <li>Abra <tt>GoogleAction.java</tt> e observe que possui este conte&uacute;do:
            
<pre class="examplecode">    
package org.myorg.googletoolbar;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public final class GoogleAction implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        // TODO implement action body
    }
    
}</pre>     

<li>Altere a assinatura para que o <tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/org/openide/util/actions/Presenter.Toolbar.html">Presenter.Toolbar</a></tt> tamb&eacute;m seja implementado, porque voc&ecirc; deseja que a a&ccedil;&atilde;o seja apresentada na barra de ferramentas.

<pre class="examplecode">
package org.myorg.googletoolbar;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public final class GoogleAction implements Presenter.Toolbar, ActionListener {

    Component comp  = new GooglePanel();

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO implement action body
    }

    @Override
    public Component getToolbarPresenter() {
        return comp;
    }

}</pre>

<li>Abra o arquivo <tt>layer.xml</tt> e voc&ecirc; ver&aacute; o seguinte:

<pre class="examplecode">    
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE filesystem PUBLIC &quot;-//NetBeans//DTD Filesystem 1.2//EN&quot; &quot;https://netbeans.org/dtds/filesystem-1_2.dtd&quot;&gt;
&lt;filesystem&gt;
    &lt;folder name=&quot;Actions&quot;&gt;
        &lt;folder name=&quot;File&quot;&gt;
            &lt;file name=&quot;org-myorg-googletoolbar-GoogleAction.instance&quot;&gt;
                &lt;attr name=&quot;SystemFileSystem.localizingBundle&quot; stringvalue=&quot;org.myorg.googletoolbar.Bundle&quot;/&gt;
                &lt;attr name=&quot;delegate&quot; newvalue=&quot;org.myorg.googletoolbar.GoogleAction&quot;/&gt;
                &lt;attr name=&quot;displayName&quot; bundlevalue=&quot;org.myorg.googletoolbar.Bundle#CTL_GoogleAction&quot;/&gt;
                &lt;attr name=&quot;iconBase&quot; stringvalue=&quot;org/myorg/googletoolbar/icon.png&quot;/&gt;
                &lt;attr name=&quot;instanceCreate&quot; methodvalue=&quot;org.openide.awt.Actions.alwaysEnabled&quot;/&gt;
                &lt;attr name=&quot;noIconInMenu&quot; stringvalue=&quot;false&quot;/&gt;
            &lt;/file&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;
    &lt;folder name=&quot;Toolbars&quot;&gt;
        &lt;folder name=&quot;File&quot;&gt;
            &lt;file name=&quot;org-myorg-googletoolbar-GoogleAction.shadow&quot;&gt;
                &lt;attr name=&quot;originalFile&quot; stringvalue=&quot;Actions/File/org-myorg-googletoolbar-GoogleAction.instance&quot;/&gt;
                &lt;attr name=&quot;position&quot; intvalue=&quot;0&quot;/&gt;
            &lt;/file&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;
&lt;/filesystem&gt;</pre>

<p><li>O conte&uacute;do mostrado acima foi criado pelo assistente de Nova a&ccedil;&atilde;o. Exclua o atributo &quot;instanceCreate&quot;, porque voc&ecirc; n&atilde;o deseja criar uma inst&acirc;ncia de uma classe A&ccedil;&atilde;o, neste caso. J&aacute; que, aqui voc&ecirc; deseja que um Jpanel apare&ccedil;a em seu lugar.
            
    </ol>
    
    <p>Nesta se&ccedil;&atilde;o, voc&ecirc; criou um JPanel que exibir&aacute; um JTextField e um JLabel. Se voc&ecirc; pressionar Enter no JTextField, seu conte&uacute;do ser&aacute; enviado para uma pesquisa no Google. O navegador de HTML ser&aacute; aberto e voc&ecirc; ver&aacute; o resultado da pesquisa no Google. A classe da a&ccedil;&atilde;o &eacute; usada para integrar o JPanel na barra de ferramentas do aplicativo, como registrado no arquivo <tt>layer.xml</tt>.
    
</div>

<!-- ======================================================================================= -->

<br>
<h2><a name="compiling"></a>Compilando, instalando e usando o m&oacute;dulo</h2>

<p>O NetBeans IDE usa um script de constru&ccedil;&atilde;o Ant para compilar e instalar seu m&oacute;dulo no IDE. O script de constru&ccedil;&atilde;o foi criado para voc&ecirc; quando o projeto do m&oacute;dulo foi criado em <a href="#creating-module-project">Configurando o projeto de m&oacute;dulo</a> acima. Agora que o m&oacute;dulo est&aacute; pronto para ser compilado e adicionado ao IDE, voc&ecirc; pode usar o suporte a Ant do NetBeans IDE a fim faz&ecirc;-lo:</p>
    
<ol>
    <li>Na janela Projetos, clique com o bot&atilde;o direito do mouse no n&oacute; do projeto <tt>GoogleToolbar</tt> e escolha Executar.  O m&oacute;dulo &eacute; constru&iacute;do e instalado em uma nova inst&acirc;ncia do IDE (por exemplo, a plataforma de destino). Por padr&atilde;o, a plataforma de destino padr&atilde;o &eacute; a vers&atilde;o do IDE  em que voc&ecirc; est&aacute; trabalhando no momento. A plataforma de destino se abre, de modo que voc&ecirc; possa experimentar o novo m&oacute;dulo.</li>
    <li>Quando ele &eacute; instalado com &ecirc;xito, o m&oacute;dulo adiciona um novo bot&atilde;o na barra de ferramentas Editar do IDE. 
    
    <p><p><b class="notes">Observa&ccedil;&atilde;o:</b> O bot&atilde;o da barra de ferramentas n&atilde;o exibe um &iacute;cone. Em vez disso, ele exibe o JPanel que voc&ecirc; criou em
        <a href="#creating-panel">Criando o JPanel</a> acima:
        
        <br><br>
        <img src="../images/tutorials/google/60/googlebar.png" border="1"
            alt="Barra de ferramentas do Google incorporada na barra de ferramentas Editar do IDE"></li>

    <li>Digite uma string de pesquisa no campo de texto:
    
        <br><br>
        <img src="../images/tutorials/google/60/googlebar-2.png" border="1"
            alt="Barra de ferramentas do Google mostrando a string de pesquisa de amostra"></li>
            
    <li>Pressione Enter. O navegador padr&atilde;o do IDE &eacute; iniciado, se voc&ecirc; tiver definido um na janela Op&ccedil;&otilde;es. A URL do Google e a sua string de pesquisa s&atilde;o enviadas para o navegador e uma pesquisa &eacute; realizada. Quando os resultados da pesquisa s&atilde;o retornados, voc&ecirc; pode visualiz&aacute;-los no navegador.</li>
</ol>

<br>
<h2 class="tutorial"><a name="sharing-plugin"></a>Compartilhando o m&oacute;dulo</h2>

<p>Agora que voc&ecirc; construiu um m&oacute;dulo de trabalho que aprimora o IDE, por que n&atilde;o compartilh&aacute;-lo com outros desenvolvedores?
 O NetBeans IDE oferece uma forma f&aacute;cil de criar um arquivo de m&oacute;dulo bin&aacute;rio do NetBeans (.nbm), que &eacute; um meio universal de permitir que outros o experimentem em suas pr&oacute;prias vers&otilde;es do IDE (na verdade, isso &eacute; o que voc&ecirc; fez em <a href="#compiling">Compilando, instalando e usando o m&oacute;dulo</a> acima).
    
    <p>Para criar um bin&aacute;rio do m&oacute;dulo, fa&ccedil;a o seguinte:</p>
    
Na janela Projetos, clique com o bot&atilde;o direito do mouse no n&oacute; do projeto <tt>GoogleToolbar</tt> e escolha Criar NBM.  O  novo arquivo NBM &eacute; criado e voc&ecirc; pode visualiz&aacute;-lo na janela Arquivos (Ctrl+2):
        
        <br><br>
        <img src="../images/tutorials/google/60/create-nbm.png" border="1" alt="novo arquivo NBM exibido na janela Arquivos">


<br>
<div class="feedback-box"><a name="feedback"></a> <a href="https://netbeans.org/about/contact_form.html?to=3&amp;subject=Feedback:%20Google%20Toolbar%20Module%20Tutorial"> Envie-nos seus coment&aacute;rios</a></div>
   <br style="clear:both;" />
    <!-- ======================================================================================== -->
    
    <h2><a name="nextsteps"></a>Veja tamb&eacute;m</h2>
    
    <p>Isto conclui o In&iacute;cio r&aacute;pido do plug-in do NetBeans. Este documento descreveu como criar um plug-in que adiciona uma barra de ferramentas do Google Search ao IDE. 
 Para obter mais informa&ccedil;&otilde;es sobre a cria&ccedil;&atilde;o e o desenvolvimento de plug-ins, consulte os seguintes recursos: 
    <ul>
        <p><li><a href="https://netbeans.org/kb/trails/platform_pt_BR.html">Trilha do aprendizado da plataforma NetBeans</a></li>
        <p><li><a href="http://bits.netbeans.org/dev/javadoc/">Javadoc da API da NetBeans </a></li>
        <p><li>Classes do NetBeans API usadas neste tutorial:
        <ul>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-awt/org/openide/awt/HtmlBrowser.URLDisplayer.html">HtmlBrowser.URLDisplayer</a></tt>
            <li><tt><a href="http://bits.netbeans.org/dev/javadoc/org-openide-util/org/openide/util/actions/Presenter.Toolbar.html">Presenter.Toolbar</a></tt>
        </ul>
        </li>
    </ul>
    
    <hr>
    <!-- ======================================================================================== -->
    
    
</body>
</html>
