<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head> | |
<!-- -*- xhtml -*- --> | |
<title>Учебный курс по интеграции быстрого поиска для платформы NetBeans 6.5</title> | |
<link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css"> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
<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 name="description" | |
content="A short guide to using the Nodes API."> | |
<!-- Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. --> | |
<!-- Use is subject to license terms.--> | |
</head> | |
<body> | |
<h1>Учебный курс по интеграции быстрого поиска</h1> | |
<p>В этом руководстве показан способ написания модуля, интегрирующего новые элементы в функцию быстрого поиска NetBeans. | |
<p><b>Содержание</b></p> | |
<img src="../images/articles/68/netbeans-stamp-65-67-68.gif" class="stamp" width="114" height="114" alt="Содержимое на этой странице относится к среде IDE NetBeans 6.5, 6.7, 6.8" title="Содержимое на этой странице относится к среде IDE NetBeans 6.5, 6.7, 6.8"> </p> | |
<ul class="toc"> | |
<li><a href="#intro">Введение в интеграцию быстрого поиска</a></li> | |
<li><a href="#creating">Создание проекта модуля</a></li> | |
<li><a href="#use">Использование диалогового окна "Поставщик быстрого поиска"</a></li> | |
<li><a href="#third">Интеграция внешнего синтаксического анализатора HTML DOM</a></li> | |
<li><a href="#code">Написание кода интеграции быстрого поиска</a></li> | |
<li><a href="#install">Установка и ознакомление с функциональными возможностями</a></li> | |
<li><a href="#platform">Использование функции быстрого поиска в платформе NetBeans</a></li> | |
<ul> | |
<li><a href="#enable">Включение функции быстрого поиска в платформе NetBeans</a></li> | |
<li><a href="#enable2">Включение поставщика интернет-поиска по умолчанию в платформе NetBeans</a></li> | |
</ul> | |
<li><a href="#share">Создание совместно используемого исполняемого файла</a></li> | |
</ul> | |
<p><b>Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные в следующей таблице.</b></p> | |
<table> | |
<tbody> | |
<tr> | |
<th class="tblheader" scope="col">Программное обеспечение или ресурс</th> | |
<th class="tblheader" scope="col">Требуемая версия</th> | |
</tr> | |
<tr> | |
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">Среда IDE NetBeans</a></td> | |
<td class="tbltd1">версия 6.5 или выше </td> | |
</tr> | |
<tr> | |
<td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">Комплект для разработчика на языке Java (JDK)</a></td> | |
<td class="tbltd1">версия 6 или<br/>версия 5</td> | |
</tr> | |
</tbody> | |
</table> | |
<p class="tips">Дополнительно, в целях поиска и устранения ошибок, можно <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=11179">загрузить готовый пример</a> и изучить исходный код. | |
<h2 class="tutorial"><a name="intro"></a>Введение в интеграцию быстрого поиска</h2> | |
<p>Функция быстрого поиска, впервые появившаяся в среде IDE NetBeans 6.5, состоит из текстового поля в правом верхнем углу среды IDE. При вводе строки поиска в это поле выводится раскрывающийся список совпадающих элементов. По умолчанию элементами списка являются имена действий, зарегистрированных в среде IDE, а также темы справки по Java среды IDE. Выбранное действие вызывается, а выбранная тема справки открывается в JavaHelp. | |
<p>Однако также предоставляется для использования <a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/overview-summary.html">интерфейс API быстрого поиска</a>. С его помощью в функцию быстрого поиска можно интегрировать собственные объекты для поиска. Этой функцией можно пользоваться как в рамках среды IDE, так и в собственных приложениях, построенных на платформе NetBeans. | |
<p>В этом руководстве показан способ написания модуля, интегрирующего новые элементы из <a href="http://netbeans.dzone.com">NetBeans Zone</a> в функцию быстрого поиска. | |
<p><p align="left"><img border="1" src="../images/tutorials/qsearch/deployed-result.png" alt="Развернутый результат"> | |
<!-- ===================================================================================== --> | |
<h2 class="tutorial"><a name="creating"></a>Создание проекта модуля</h2> | |
<p>В этом разделе используется мастер для создания структуры исходного кода, требуемого любым модулем NetBeans. Эта структура исходного кода состоит из ряда папок в особых местах и набора файлов, которые требуются в любом случае. Например, для каждого модуля NetBeans требуется папка <tt>nbproject</tt>, в которой хранятся метаданные проекта, а также файл <tt>layer.xml</tt>, в котором объявляется регистрация таких элементов как кнопки панелей управления и окна. | |
<ol> | |
<li>Выберите "File" > "New Project" (Ctrl+Shift+N). В разделе "Категории" выберите параметр "Модули NetBeans". В области "Проекты" выберите "Модуль" и нажмите кнопку "Далее".</li> | |
<li>На панели "Имя и расположение" в поле "Имя проекта" введите <tt>NetBeansZoneSearch</tt>. В поле "Расположение проекта" укажите любой каталог на компьютере, например <tt>c:\mymodules</tt>. Оставьте переключатель "Отдельный модуль" выбранным. Панель должна выглядеть следующим образом: | |
<p><p align="left"><img src="../images/tutorials/qsearch/new-module-1.png" alt="Действие 1 мастера создания проекта"> | |
<p>Нажмите кнопку "Далее". | |
<li>На панели "Основные настройки модуля" введите <tt>org.netbeans.modules.nbzone</tt> в поле "Основа кодового имени". Добавьте пробелы к предложенному отображаемому имени модуля, и измените его на <tt>NetBeans Zone Search</tt>. Установите флажок "Создать слой XML" и оставьте местоположение локализуемого файла ресурсов и слоя XML по умолчанию; при этом они будут храниться в пакете с именем <tt>org/netbeans/modules/nbzone</tt>. Панель должна выглядеть следующим образом: | |
<p><p align="left"><img src="../images/tutorials/qsearch/new-module-2.png" alt="Действие 2 мастера создания проекта"> | |
<li>Нажмите кнопку "Готово". </ol> | |
<p> В среде IDE создается проект <tt>NetBeans Zone Search</tt>. Проект содержит все исходные файлы и метаданные проекта, например, сценарий сборки проекта Ant. Проект откроется в среде IDE. Логическую структуру проекта можно просмотреть в окне "Проекты" (Ctrl+1), а его файловую структуру – в окне "Файлы" (Ctrl+2). | |
<br /> | |
<!-- ===================================================================================== --> | |
<h2><a name="use"></a>Использование диалогового окна "Поставщик быстрого поиска"</h2> | |
<p>В этом разделе с помощью мастера будет создан класс заглушки и сущности слоя, необходимые для начала интеграции с функцией быстрого поиска. | |
<ol> | |
<li>Щелкните узел проекта правой кнопкой мыши и выберите команду "Создать > Прочее". В диалоговом окне "Новый файл" выберите "Разработка модулей > Поставщик быстрого поиска".</li> | |
<li>Установите следующие значения на панети "Поставщик быстрого поиска": | |
<p><ul> | |
<li><b>Имя класса поставщика.</b> Имя класса для заглушки, генерируемой мастером. Введите в это поле значение "NBZoneSearchProvider". | |
<li><b>Пакет.</b> Пакет, в котором будет создан класс заглушки. Выберите в раскрывающемся списке пункт "org.netbeans.modules.nbzone". | |
<li><b>Отображаемое имя категории.</b> Отображаемое имя для категории, создаваемой с помощью заглушки. Введите в это поле значение "NetBeans Zone". | |
<li><b>Префикс команды.</b> Префикс для сужения поиска до категории, создаваемой с помощью заглушки. Введите в это поле значение "nb". | |
<li><b>Позиция в контекстном меню.</b> Выберите позицию новой категории в пределах функции быстрого поиска. Значение по умолчанию "0" соответствует размещению категории в первой позиции. | |
</ul> | |
<p>На экране должны быть представлены следующие параметры: | |
<p><p align="left"><img src="../images/tutorials/qsearch/quick-search-template.png" alt="Шаблон быстрого поиска"> | |
<li>Нажмите кнопку "Готово". | |
<p><p>Окно "Проекты" должно выглядеть следующим образом: | |
<p><p align="left"><img src="../images/tutorials/qsearch/projects-window-final.png" alt="Итоговое окно "Проекты". "></ol> | |
<p>В файле <tt>layer.xml</tt> должен содержаться следующий текст: | |
<pre><filesystem> | |
<folder name="QuickSearch"> | |
<folder name="NetBeansZone"> | |
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.nbzone.Bundle"/> | |
<attr name="command" stringvalue="nb"/> | |
<attr name="position" intvalue="0"/> | |
<file name="org-netbeans-modules-nbzone-NBZoneSearchProvider.instance"/> | |
</folder> | |
</folder> | |
</filesystem></pre> | |
<br /> | |
<!-- ======================================================================================= --> | |
<h2><a name="third"></a>Интеграция внешнего синтаксического анализатора HTML DOM</h2> | |
<p>В следующем разделе потребуется синтаксический анализатор HTML DOM для синтаксического анализа NetBeans Zone. Можно воспользоваться любым подходящим синтаксическим анализатором по выбору. В данном учебным курсе используется <a href="http://sourceforge.net/project/showfiles.php?group_id=13153">JTidy</a>.</p> | |
<p>Существует два способа предоставления внешнего файла JAR для использования в модуле. Первый способ состоит в размещении файла JAR в отдельном модуле, так называемом "модуле-обертке библиотеки"; в таком случае модуль функциональных возможностей <i>зависит от</i> модуля-обертки библиотеки. Оба модуля размещаются в наборе модулей. Преимущество использования двух раздельных модулей заключается в том, что при выпуске новой версии внешнего файла JAR требуется распространить небольшой по объему модуль, содержащий только внешний файл JAR, а не крупный модуль, содержащий также код функциональных возможностей. Второй способ заключается в добавлении файла JAR к модулю функциональных возможностей, как показано ниже. Преимущество этого подхода заключается в большем удобстве в краткосрочной перспективе, поскольку распространять требуется только один модуль, однако недостаток заключается в смешении внешней библиотеки с кодом функциональных возможностей, что нарушает принцип модульности. | |
<div class="indent"> | |
<ol> | |
<li>Загрузите <a href="http://sourceforge.net/project/showfiles.php?group_id=13153">JTidy</a> и найдите файл <tt>Tidy.jar</tt> в пакете загрузки. | |
<li>В окне "Файлы" создайте структуру папок, показанную ниже, и разместите файл <tt>Tidy.jar</tt> в папке <tt>release/modules/ext</tt>: | |
<p><p align="left"><img src="../images/tutorials/qsearch/tidyjar.png" alt="Файл JAR JTidy." /> | |
<li>В конце файла <tt>project.xml</tt>, расположенного в папке <tt>nbproject</tt>, добавьте теги, выделенные полужирным шрифтом: | |
<pre> | |
... | |
... | |
... | |
<b><class-path-extension> | |
<runtime-relative-path>ext/Tidy.jar</runtime-relative-path> | |
<binary-origin>release/modules/ext/Tidy.jar</binary-origin> | |
</class-path-extension></b> | |
</data> | |
</configuration> | |
</project></pre> | |
<li>Добавьте следующую строку в файл <tt>project.properties</tt>: | |
<pre>cp.extra=release/modules/ext/Tidy.jar</pre> | |
</ol> | |
</div> | |
<p>Внешний синтаксический анализатор HTML DOM теперь включен в путь к классам модуля. Теперь эти классы можно использовать в файле JAR; эта возможность будет реализована в следующем разделе. | |
<!-- ======================================================================================= --> | |
<h2><a name="code"></a>Написание кода интеграции быстрого поиска</h2> | |
<p>Далее необходимо реализовать интерфейс API. Используются следующие классы интерфейса API:</p> | |
<table> | |
<tbody> | |
<tr> | |
<th class="tblheader" scope="col">Класс</th> | |
<th class="tblheader" scope="col">Описание</th> | |
</tr> | |
<tr> | |
<td class="tbltd1"><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchProvider.html">SearchProvider</a></td> | |
<td class="tbltd1">Главный интерфейс API быстрого поиска. Этот интерфейс необходимо реализовать для предоставления новой группы результатов для быстрого поиска.</td> | |
</tr> | |
<tr> | |
<td class="tbltd1"><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchRequest.html">SearchRequest</a></td> | |
<td class="tbltd1">Описание запроса на быстрый поиск.</td> | |
</tr> | |
<tr> | |
<td class="tbltd1"><a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchResponse.html">SearchResponse</a></td> | |
<td class="tbltd1">Объект ответа для сбора результатов SearchRequest.</td> | |
</tr> | |
</tbody> | |
</table> | |
<p><p>Ниже указываются зависимости требуемых модулей, которые затем реализуются в собственном модуле. | |
<div class="indent"> | |
<ol> | |
<li>Щелкните правой кнопкой мыши проект, выберите "Свойства", а затем укажите следующие зависимости на панели "Библиотеки": | |
<p><p align="left"><img src="../images/tutorials/qsearch/set-dependencies.png" alt="Установка зависимостей." /> | |
<li>Откройте созданный класс. | |
<li>Измените класс следующим образом: | |
<pre>public class NBZoneSearchProvider implements <a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchProvider.html">SearchProvider</a> { | |
/** | |
* Метод вызывается инфраструктурой при запросе операции поиска. | |
* Реализующие его объекты должны обрабатывать полученный запрос и заполнять объект ответа | |
* соответствующими результатами | |
* | |
* @param request Объект запроса на поиск, содержащий строку поиска | |
* @param response Объект ответа поиска, в котором хранятся результаты поиска | |
* Обратите внимание, что важно реагировать на значение, возвращаемое методом | |
* SearchResponse.addResult(...) и останавливать вычисления, | |
* если возвращается значение "false". | |
*/ | |
@Override | |
public void evaluate(<a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchRequest.html">SearchRequest request</a>, <a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchResponse.html">SearchResponse response</a>) { | |
try { | |
<b>//Адрес URL, для которого предоставляется поиск:</b> | |
URL url = new URL("http://netbeans.dzone.com"); | |
<b>//Stuff needed by Tidy:</b> | |
Tidy tidy = new Tidy(); | |
tidy.setXHTML(true); | |
tidy.setTidyMark(false); | |
tidy.setShowWarnings(false); | |
tidy.setQuiet(true); | |
<b>//Получение org.w3c.dom.Document от Tidy, | |
//или использование другого синтаксического анализатора по выбору:</b> | |
Document doc = tidy.parseDOM(url.openStream(), null); | |
<b>//Получение всех элементов "a":</b> | |
NodeList list = doc.getElementsByTagName("a"); | |
<b>//Получение количества элементов:</b> | |
int length = list.getLength(); | |
<b>//Итерация по всем элементам "a":</b> | |
for (int i = 0; i < length; i++) { | |
String href = null; | |
if (null != list.item(i).getAttributes().getNamedItem("href")) { | |
<b>//Получение атрибута "href" для текущего элемента "a":</b> | |
href = list.item(i).getAttributes().getNamedItem("href").getNodeValue(); | |
} | |
<b>//Получение атрибута "title" для текущего элемента "a":</b> | |
if (null != list.item(i).getAttributes().getNamedItem("title")) { | |
String title = list.item(i).getAttributes().getNamedItem("title").getNodeValue(); | |
<b>//Заголовок совпадает с запрошенным текстом:</b> | |
if (title.toLowerCase().indexOf(<a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchRequest.html">request.getText().toLowerCase()</a>) != -1) { | |
<b>//Добавление выполняемого объекта и заголовка к запросу | |
//и возвращение пустого результата, если ничего не добавлено:</b> | |
if (!<a href="http://bits.netbeans.org/dev/javadoc/org-netbeans-spi-quicksearch/org/netbeans/spi/quicksearch/SearchResponse.html">response.addResult(new OpenFoundArticle(href), title)</a>) { | |
return; | |
} | |
} | |
} | |
} | |
} catch (IOException ex) { | |
Exceptions.printStackTrace(ex); | |
} | |
} | |
private static class OpenFoundArticle implements Runnable { | |
private String article; | |
public OpenFoundArticle(String article) { | |
this.article = article; | |
} | |
public void run() { | |
try { | |
URL url = new URL("http://netbeans.dzone.com" + article); | |
StatusDisplayer.getDefault().setStatusText(url.toString()); | |
URLDisplayer.getDefault().showURL(url); | |
} catch (MalformedURLException ex) { | |
Logger.getLogger(NBZoneSearchProvider.class.getName()).log(Level.SEVERE, null, ex); | |
} | |
} | |
} | |
}</pre> | |
<li>Убедитесь в том, что определены следующие выражения импорта: | |
<pre>import java.io.IOException; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
import org.netbeans.spi.quicksearch.SearchProvider; | |
import org.netbeans.spi.quicksearch.SearchRequest; | |
import org.netbeans.spi.quicksearch.SearchResponse; | |
import org.openide.awt.HtmlBrowser.URLDisplayer; | |
import org.openide.awt.StatusDisplayer; | |
import org.openide.util.Exceptions; | |
import org.w3c.dom.Document; | |
import org.w3c.dom.NodeList; | |
import org.w3c.tidy.Tidy;</pre> | |
</ol> | |
</div> | |
<!-- ======================================================================================= --> | |
<h2><a name="install"></a>Установка и ознакомление с функциональными возможностями</h2> | |
<p>Теперь установим модуль и воспользуемся функцией интеграции быстрого поиска. Для построения и установки модуля в среде IDE используется сценарий построения Ant. При создании проекта автоматически создается сценарий построения.</p> | |
<div class="indent"> | |
<ol> | |
<li>В окне "Проекты" щелкните проект правой кнопкой мыши и выберите "Выполнить". | |
<p><p>Запускается новый экземпляр среды IDE, и выполняется установка модуля интеграции быстрого поиска. | |
<li>Введите строку в средство быстрого поиска; если строка совпадает с заголовком одного из элементов в NetBeans Zone, к результату добавляется этот элемент из NetBeans Zone. | |
<p><p align="left"><img border="1" src="../images/tutorials/qsearch/deployed-result.png" alt="Развернутый результат"> | |
<p>При вводе префикса команды, определенного в файле <tt>layer.xml</tt>, с последующим пробелом, выполняется поиск только по связанной категории: | |
<p><p align="left"><img border="1" src="../images/tutorials/qsearch/command.png" alt="Префикс команды"> | |
<li>Щелкните элемент, и если в среде IDE настроен обозреватель, в нем выводится выбранная статья. | |
</ol> | |
</div> | |
<br /> | |
<!-- ======================================================================================= --> | |
<h2><a name="platform"></a>Использование функции быстрого поиска в платформе NetBeans</h2> | |
<p>В предыдущих разделах подразумевалось создание модуля для существующего приложения. Оставшиеся две темы имеют смысл, если создается не модуль, а отдельное приложение на платформе NetBeans. | |
<div class="indent"> | |
<h3><a name="enable"></a>Включение функции быстрого поиска в платформе NetBeans</h3> | |
<p>Несмотря на то, что среда IDE NetBeans поставляется с поддержкой функции быстрого поиска, в платформе NetBeans эта функция не предоставляется. По умолчанию функция быстрого поиска скрыта. Для включения этой функции необходимо выполнить шаги, приведенные ниже. | |
<div class="indent"> | |
<ol> | |
<li>Добавьте в файл <tt>layer.xml</tt> следующие теги: | |
<pre><folder name="Toolbars"> | |
<folder name="QuickSearch"> | |
<attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.nbzone.Bundle"/> | |
<file name="org-netbeans-modules-quicksearch-QuickSearchAction.shadow"> | |
<attr name="originalFile" | |
stringvalue="Actions/Edit/org-netbeans-modules-quicksearch-QuickSearchAction.instance"/> | |
</file> | |
</folder> | |
</folder></pre> | |
<li>Добавьте в файл <tt>Bundle.properties</tt> следующую пару "ключ-значение": | |
<pre>Toolbars/QuickSearch=Quick Search</pre> | |
<li>Запустите приложение на платформе NetBeans и обратите внимание на то, что функция быстрого поиска доступна для использования и работает. | |
<p><p align="left"><img src="../images/tutorials/qsearch/netbeans-platform-qsearch.png" alt="Платформа NetBeans с функцией быстрого поиска"> | |
</ol> | |
</div> | |
<!-- ======================================================================================= --> | |
<h3><a name="enable2"></a>Включение поставщика интернет-поиска по умолчанию в платформе NetBeans</h3> | |
<p>В исходных файлах NetBeans доступна реализация поставщика интернет-поиска по умолчанию. Этот поставщик используется для поиска текста, совпадающего со строкой поиска, в Google. В среде IDE эта функция была предназначена для поиска по <tt>netbeans.org</tt> и связанным сайтам, содержищим интерактивную документацию по среде IDE. | |
<p><b>Примечание.</b> К сожалению, поставщик интернет-поиска в среде IDE пришлось отключить, поскольку после продолжительного использования компания Google выступила с жалобой о несоответствии автоматического поиска соглашению об использовании, и работа данной функции была остановлена. | |
<p>С учетом вышеуказанного ограничения этот поставщик интернет-поиска можно подвергнуть брэндингу и использовать в приложении на платформе NetBeans. | |
<div class="indent"> | |
<ol> | |
<li>Убедитесь в том, что функция быстрого поиска включена, в соответствии с описанием в предыдущем разделе. | |
<li>Добавьте в файл <tt>layer.xml</tt> следующие теги: | |
<pre><folder name="Guardian"> | |
<file name="org-netbeans-modules-quicksearch-web-WebQuickSearchProviderImpl.instance"/> | |
</folder></pre> | |
<li>Создайте в папке <tt>branding</tt> приложения иерархию папок, показанную ниже, а также файл <tt>Bundle.properties</tt>, показанный на снимке экрана: | |
<p><p align="left"><img border="1" src="../images/tutorials/qsearch/brand-provider.png" alt="Поставщик брэндинга"> | |
<p><p>В среде IDE вышеупомянутые свойства жестко запрограммированы в следующем коде, однако в платформе NetBeans они не определены, поэтому требуется их брендинг, как показано выше: | |
<pre>quicksearch.web.site=netbeans.org | |
quicksearch.web.url_patterns=.*netbeans\.org/kb.*,\ | |
/.*wiki\.netbeans\.org/.*faq.*,.*wiki\.netbeans\.org/.*howto.*,\ | |
.*platform\.netbeans\.org/tutorials.*</pre> | |
<li>Запустите приложение на платформе NetBeans и обратите внимание на то, что поставщик быстрого интернет-поиска по умолчанию доступен для использования и работает. | |
<p><p align="left"><img border="1" src="../images/tutorials/qsearch/clare-wigfall.png" alt="Поиск по Guardian"> | |
</ol> | |
</div> | |
</div> | |
<!-- ======================================================================================= --> | |
<h2><a name="share"></a>Создание совместно используемого исполняемого файла модуля</h2> | |
<p>Готовый модуль можно предоставить для использования другими разработчиками. Для этого необходимо создать и распространить двоичный файл "NBM" (модуль NetBeans). | |
<div class="indent"> | |
<ol> | |
<li>В окне "Проекты" щелкните правой кнопкой мыши проект <tt>NetBeans Zone Search</tt> и выберите "Создать файл распространения модуля NBM". | |
<p><p>Создается файл NBM, который можно просмотреть в окне "Файлы" (Ctrl+2). | |
<p><p align="left"><img border="1" src="../images/tutorials/qsearch/shareable-binary.png" alt="Файл распространения модуля NBM, предназначенный для совместного использования."> | |
<li>Чтобы предоставить этот файл для использования другим разработчикам, можно, например, воспользоваться <a href="http://plugins.netbeans.org/PluginPortal/">порталом подключаемых модулкй NetBeans</a>. Для установки модуля получатель должен воспользоваться диспетчером подключаемых модулей ("Сервис > Подключаемые модули"). | |
</ol> | |
</div> | |
<!-- ======================================================================================== --> | |
<br> | |
<div class="feedback-box"><a href="https://netbeans.org/about/contact_form.html?to=3&subject=Feedback:%20Quick%20Search%20Integration%20Tutorial">Мы ждем ваших отзывов</a></div> | |
<br style="clear:both;" /> | |
<!-- ======================================================================================== --> | |
<h2><a name="nextsteps"></a>Что дальше?</h2> | |
<p>Дополнительные сведения о создании и разработке модулей NetBeans приведены в следующих ресурсах: | |
<ul> | |
<li><a href="https://platform.netbeans.org/index.html">Домашнаяя страница платформы NetBeans</a></li> | |
<li><a href="http://bits.netbeans.org/dev/javadoc/index.html">Список интерфейсов API среды NetBeans (текущая версия разработки)</a></li> | |
<li><a href="https://netbeans.org/kb/trails/platform_ru.html">Другие связанные руководства</a></li></ul> | |
</p> | |
<p><p> | |
<!-- ======================================================================================== --> | |
<!-- | |
<h2><a name="version"></a>Versioning </h2> | |
<p> | |
<table width="76%" border="1"> | |
<tbody> | |
<tr> | |
<td> | |
<div align="left"><b>Version</b></div> | |
</td> | |
<td> | |
<div align="left"><b>Date</b></div> | |
</td> | |
<td> | |
<div align="left"><b>Changes</b></div> | |
</td> | |
</tr> | |
<tr> | |
<td> | |
1 | |
</td> | |
<td> | |
19 July 2008 | |
</td> | |
<td> | |
Initial version. | |
</td> | |
</tr> | |
</tbody> | |
</table> | |
--> | |
</body> | |
</html> |