<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
  <!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
]>

<api-answers
  question-version="1.29"
  author="dsimonek@netbeans.org"
>

  &api-questions;


<!--
        <question id="arch-overall" when="init">
            Describe the overall architecture. 
            <hint>
            What will be API for 
            <a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
                clients and what support API</a>? 
            What parts will be pluggable?
            How will plug-ins be registered? Please use <code>&lt;api type="export"/&gt;</code>
            to describe your general APIs and specify their
            <a href="http://openide.netbeans.org/tutorial/api-design.html#category-private">
            stability categories</a>.
            If possible please provide simple diagrams.
            </hint>
        </question>
-->
 <answer id="arch-overall">
    <p>  
    Quick Search API in infrastrcuture which enables module clients to plug into
    Quick Search UI and provide results of search that end user performed in UI.
    Quick Search UI is represented by a small text field in toolbar area on right
    hand side, with asociated popup window to show search results.
    </p>

    <p>
    Clients that want to extend Quick Search capabilities and provide data to search in
    are expected to implement <api group="java" name="SearchProvider" category="official" type="export" url="@TOP@/org/netbeans/spi/quicksearch/SearchProvider.html" />
    SPI.</p>
    
    <p>SearchProvider implementations are registered through module's xml layer file,
    as explained in <a href="@TOP@/org/netbeans/spi/quicksearch/SearchProvider.html">SearchProvider SPI</a>
    javadoc and detailed <a href="@org-openide-util@/org/openide/util/doc-files/api.html#instances">Instantiation rules</a>.
    </p>
    
    <p>Main task of SearchProvider implementations is to evaluate input 
<api group="java" name="SearchRequest" category="official" type="export" url="@TOP@/org/netbeans/spi/quicksearch/SearchRequest.html" />,
        perform search in its data model and feed <api group="java" name="SearchResponse" category="official" type="export" url="@TOP@/org/netbeans/spi/quicksearch/SearchResponse.html" />
        response object by results apropriate for given request.
    </p>
 <api type="export" group="property" name="quicksearch.web.site" category="devel">
     Resource name from org.netbeans.modules.quicksearch.web.Bundle where it is 
     possible to specify website to restrict the web search to. When set to e.g.
     NetBeans.org then the web search provider will search for given text in web pages
     from NetBeans.org site only.
</api>
 <api type="export" group="property" name="quicksearch.web.url_patterns" category="devel">
     Resource name from org.netbeans.modules.quicksearch.web.Bundle where it is 
     possible to specify a comma separated list of regular expressions that the search results URLs 
     must contain. When set to e.g. ".*docs/myapp.*,.*tutorials/myapp.*" then all the search
     results will have either "docs/myapp" or "tutorials/myapp" anywhere in the URL.
</api>
</answer>



<!--
        <question id="arch-quality" when="init">
            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
            of your code be tested and 
            how are future regressions going to be prevented?
            <hint>
            What kind of testing do
            you want to use? How much functionality, in which areas,
            should be covered by the tests? How you find out that your
            project was successful?
            </hint>
        </question>
-->
 <answer id="arch-quality">
  <p>
        There are unit tests in test package.
  </p>
 </answer>



<!--
        <question id="arch-time" when="init">
            What are the time estimates of the work?
            <hint>
            Please express your estimates of how long the design, implementation,
            stabilization are likely to last. How many people will be needed to
            implement this and what is the expected milestone by which the work should be 
            ready?
            </hint>
        </question>
-->
 <answer id="arch-time">
  <p>
    Design two weeks, implementation of API and basic content providers about 4-5 weeks,
    stabilization three weeks, all estimates in manwork. Initial version should
    be available in release 6.5 M1, full version in release 6.5.
  </p>
 </answer>



<!--
        <question id="arch-usecases" when="init">
            <hint>
                Content of this answer will be displayed as part of page at
                http://www.netbeans.org/download/dev/javadoc/usecases.html 
                You can use tags &lt;usecase name="name&gt; regular html description &lt;/usecase&gt;
                and if you want to use an URL you can prefix if with @TOP@ to begin
                at the root of your javadoc
            </hint>
        
            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
            use cases</a> of the new API. Who will use it under
            what circumstances? What kind of code would typically need to be written
            to use the module?
        </question>
-->
 <answer id="arch-usecases">
  <p>
      
   <usecase id="newProvider" name="How To Add New Quick Search Provider" >
      In order to plug in a new Quick Search provider and new category of results,
      module writers need to complete following steps:

      <h5>1. Implement <a href="@TOP@/org/netbeans/spi/quicksearch/SearchProvider.html">SearchProvider</a></h5>
        <ul>
            <li>Implement body of <b><code>SearchProvider.evaluate</code></b> method
            like suggested in its <a href="@TOP@/org/netbeans/spi/quicksearch/SearchProvider.html">javadoc</a>.
            </li>
        </ul>
      
      <h5>2. Register SearchProvider implementation in xml layer</h5>
            Register your SearchProvider implementation in your module's xml layer file under
            main <b>"/QuickSearch"</b> folder. Registration xml syntax is following:
            
            <pre>
              &lt;folder name="QuickSearch"&gt;
                  &lt;folder name="Category1_ID"&gt;
                      &lt;attr name="position" intvalue="300"/&gt;
                      &lt;file name="org-netbeans-module1-package1-Provider1Impl.instance"/&gt;
                  &lt;/folder&gt;
                  &lt;folder name="Category2_ID"&gt;
                      &lt;!--Attribute for localization - provide localized display name of category!--&gt;
                      &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.yourmodule.YourBundle"/>
                      &lt;!--Attribute for command prefix - used to narrow search to this category only!--&gt;
                      &lt;attr name="command" stringvalue="p"/>
                      &lt;!--Attribute for category ordering!--&gt;
                      &lt;attr name="position" intvalue="200"/&gt;
                      &lt;!--Note that multiple providers can contribute to one category!--&gt;
                      &lt;file name="org-netbeans-module2-package2-Provider2Impl.instance"/&gt;
                      &lt;file name="org-netbeans-module2-package3-Provider3Impl.instance"/&gt;
                  &lt;/folder&gt;
              &lt;/folder&gt;
            </pre>
            
            <b>Syntax explanation:</b>
            <ul>
                <li>Subfolders of "QuickSearch" define search result categories and their order.</li>
                <li>Providers can share category by putting themselves under same subfolder.</li>
                <li>Ordering of categories is done through NetBeans standard FileSystem API ordering 
                "position" attribute</li>
                <li>Display name of category folder uses NetBeans standard FileSystem API
                "SystemFileSystem.localizingBundle" attribute.</li>
                <li>"command" attribute defines command prefix for category, which is used
                to narrow Quick Search to only one category. Provide short prefix, ideally
                containing one or two prefix, that will serve as command to narrow search
                only this category. In above syntax example, if
                user types 'p' and space key and then text, only "Category2_ID" category
                will be searched.</li>
                <li>If several providers share one category, then only one provider needs to
                specify above attributes. Note however that if your provider shares
                category with provider from different module, you should have dependency
                on module which actually define those attributes. Dependency assures
                there will always be category "description" for category that you are
                sharing.</li>
            </ul>
        
   </usecase> 
   
   <usecase id="shareCategory" name="How To Share Category Of Results" >
       <p>Quick Search UI shows search results divided into visually separeted sections,
       called categories. Several <code>SearchProvider</code> implementations may decide to display
       their results in one shared category of results in Quick Search UI.</p>
       
       <p>In order to share category, module writers have to agree on shared
          category and its properties, especially its name.
          It means that all providers (possibly in different NetBeans modules)
          need to be registered under the same folder, as shown below:</p>
       
       <h5>Provider 1</h5>   
            Provider 1 is category "owner", which defines properties of <code>SharedCategory</code> such as 
            display name, position and command prefix.
            <pre>
              &lt;folder name="QuickSearch"&gt;
                  &lt;folder name="SharedCategory"&gt;
                      &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.yourmodule.YourBundle"/>
                      &lt;attr name="command" stringvalue="p"/>
                      &lt;attr name="position" intvalue="200"/&gt;
                      &lt;file name="org-netbeans-module1-package1-Provider1Impl.instance"&gt;
                          &lt;attr name="position" intvalue="300"/&gt;
                      &lt;/file&gt;                          
                  &lt;/folder&gt;
              &lt;/folder&gt;
            </pre>

       <h5>Provider 2</h5>   
            Other providers from other modules are sharing category with Provider 1.
            Provider 2 does not define properties of <code>SharedCategory</code>,
            as they were already defined by Provider 1.
            Note that module dependency on the module of Provider 1 is needed
            to ensure that <code>SharedCategory</code> is fully defined.
            <pre>
              &lt;folder name="QuickSearch"&gt;
                  &lt;folder name="SharedCategory"&gt;
                      &lt;file name="org-netbeans-module2-package2-Provider2Impl.instance"/&gt;
                          &lt;attr name="position" intvalue="200"/&gt;
                      &lt;/file&gt;                          
                  &lt;/folder&gt;
              &lt;/folder&gt;
            </pre>

       <h5>Provider 3</h5>   
            The same rules apply like for Provider 2. Note that position attribute
            can be used to control position of provider's results in shared category.
            Results from provider with lowest position will go first and so on.
            <pre>
              &lt;folder name="QuickSearch"&gt;
                  &lt;folder name="SharedCategory"&gt;
                      &lt;file name="org-netbeans-module2-package3-Provider3Impl.instance"/&gt;
                          &lt;attr name="position" intvalue="100"/&gt;
                      &lt;/file&gt;                          
                  &lt;/folder&gt;
              &lt;/folder&gt;
            </pre>
   </usecase>

   <usecase id="categoryOrder" name="How To Define and Modify Order of Categories" >
        Order of categories of results can be set by using "position" attribute
        of category xml folder definition. Following example will result in 
        <code>FirstCategory</code> to be first, and <code>SecongCategory</code> to be second :),
        which means that <code>FirstCategory</code> and its results will be
        displayed above <code>Secondcategory</code> in QuickSearch results window.

            <pre>
              &lt;folder name="QuickSearch"&gt;
                  &lt;folder name="SecondCategory"&gt;
                      &lt;attr name="position" intvalue="300"/&gt;
                      ...
                  &lt;/folder&gt;
                  &lt;folder name="FirstCategory"&gt;
                      &lt;attr name="position" intvalue="200"/&gt;
                      ...
                  &lt;/folder&gt;
             &lt;/folder&gt;
            </pre>
   </usecase>
   
   <usecase id="hideProvider" name="How To Hide Recent Searches Results and Others" >
        "Recent Searches" provider is contained directly in <code>spi.quicksearch</code>
        module, so its functionality is automatically always available by default.
        However, if your module wants to disable "Recent Searches" or any other
        category, follow the steps below:
        
        <h5>Define module dependency</h5>
            Your module have to depend on module where provider you want to disable
            is contained. In case of "Recent Searches" provider, it's <code>spi,quicksearch</code>,
            on which you probably already depend.

        <h5>Disable provider using "_hidden"</h5>
            For example, to disable "Recent Searches" provider, write into your layer:
            
            <pre>
              &lt;folder name="QuickSearch"&gt;
                  &lt;folder name="Recent_hidden"&gt;
                  &lt;/folder&gt;
              &lt;/folder&gt;
           </pre>
           
           "Recent" is a name of category for "Recent Searches" provider and by appending
           "_hidden" suffix you are telling system to "hide" it. This technique
           can be used also to disable invidual search providers.
    </usecase>
    
   <usecase id="usageInPlatform" name="How To Use Quick Search in Platform Application" >
        Quick Search UI is disabled by default in application built on top of
        NetBeans platform. To enable Quick Search feature in your application,
        complete following steps:
        
        <h5>1. Write XML layer registration</h5>
            Add the following lines to XML layer of some of your modules in your
            application suite:
        
        <pre>
        &lt;folder name="Toolbars"&gt;
            &lt;folder name="QuickSearch"&gt;
            &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="com.myapp.mymodule.MyBundle"/>
                &lt;file name="org-netbeans-modules-quicksearch-QuickSearchAction.shadow"&gt;
                    &lt;attr name="originalFile" stringvalue="Actions/Edit/org-netbeans-modules-quicksearch-QuickSearchAction.instance"/&gt;
                &lt;/file&gt;
            &lt;/folder&gt;
        &lt;/folder&gt;
        </pre>
        
        <h5>2. Localize Toolbar Name</h5>
             Replace <code>com.myapp.mymodule.MyBundle</code> in the xml registration
             above with path to your properties file, in which you'll define
             localized name of Quick Search toolbar:
             <pre>
                Toolbars/QuickSearch=Quick Search
             </pre>
        
        <p>By default, providers for searching in actions and recent searches
        will be enabled. Web search provider is disabled by default, see use case
        below for info how to turn it on.</p>
   </usecase>

   <usecase id="searchWebProvider" name="How To Add a Default Web Search Provider" >
       There is a default implementation of web search provider which uses Google
       to search for the given text on the web. Simply add the following lines to your XML layer 
       to enable this search provider in your application:
        <pre>
          &lt;folder name="QuickSearch"&gt;
              &lt;folder name="WebSearch"&gt;
                  &lt;!--Attribute for localization - provide localized display name of category!--&gt;
                  &lt;attr name="SystemFileSystem.localizingBundle" stringvalue="com.myapp.mymodule.MyBundle"/>
                  &lt;!--Attribute for command prefix - used to narrow search to this category only!--&gt;
                  &lt;attr name="command" stringvalue="g"/>
                  &lt;!--Attribute for category ordering!--&gt;
                  &lt;attr name="position" intvalue="200"/&gt;
                  &lt;!--Note that multiple providers can contribute to one category!--&gt;
                  &lt;file name="org-netbeans-modules-quicksearch-web-WebQuickSearchProviderImpl.instance"/&gt;
              &lt;/folder&gt;
          &lt;/folder&gt;
        </pre>
        You can also add branding for <code>org.netbeans.modules.quicksearch.web</code> Bundle to restrict 
        the search to a particular site only:
        <pre>
            quicksearch.web.site=mywebsite.com
        </pre>
        And you can also restrict the search to some parts your website only:
        <pre>
            quicksearch.web.url_patterns=mywebsite.com/docs,mywebsite.com/files/tutorials
        </pre>
   </usecase>
   
   <usecase id="customizeLookAndFeel" name="How to customize Look&amp;Feel properties">
        If you need to adjust border of the Quick Search component for your
        Look&amp;Feel, you can put a <code>Border</code> instance into
        <code>UIManager</code> under key <code>nb.quicksearch.border</code>.
   </usecase>
  </p>
 </answer>



<!--
        <question id="arch-what" when="init">
            What is this project good for?
            <hint>
            Please provide here a few lines describing the project, 
            what problem it should solve, provide links to documentation, 
            specifications, etc.
            </hint>
        </question>
-->
 <answer id="arch-what">
  <p>
    QuickSearch API and its implementations provides way for end user to learn
    system earlier and easier and also to find various things in the system more
    quickly, conveniently and in standard way.
    Main project page is on nb wiki, http://wiki.netbeans.org/QuickSearch
  </p>
 </answer>



<!--
        <question id="arch-where" when="impl">
            Where one can find sources for your module?
            <hint>
                Please provide link to the Hg web client at
                http://hg.netbeans.org/
                or just use tag defaultanswer generate='here'
            </hint>
        </question>
-->
 <answer id="arch-where">
  <defaultanswer generate='here' />
 </answer>



<!--
        <question id="compat-deprecation" when="init">
            How the introduction of your project influences functionality
            provided by previous version of the product?
            <hint>
            If you are planning to deprecate/remove/change any existing APIs,
            list them here accompanied with the reason explaining why you
            are doing so.
            </hint>
        </question>
-->
 <answer id="compat-deprecation">
  <p>
    QuickSearch API is new API, so no deprecations for now.
  </p>
 </answer>



<!--
        <question id="compat-i18n" when="impl">
            Is your module correctly internationalized?
            <hint>
            Correct internationalization means that it obeys instructions 
            at <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html">
            NetBeans I18N pages</a>.
            </hint>
        </question>
-->
 <answer id="compat-i18n">
  <p>
    Yes.
  </p>
 </answer>



<!--
        <question id="compat-standards" when="init">
            Does the module implement or define any standards? Is the 
            implementation exact or does it deviate somehow?
        </question>
-->
 <answer id="compat-standards">
  <p>
   Infrastructure module offers SPI for content provider implementors and
   implements Request-Response pattern for communication between API side
   and client module side.
  </p>
 </answer>



<!--
        <question id="compat-version" when="impl">
            Can your module coexist with earlier and future
            versions of itself? Can you correctly read all old settings? Will future
            versions be able to read your current settings? Can you read
            or politely ignore settings stored by a future version?
            
            <hint>
            Very helpful for reading settings is to store version number
            there, so future versions can decide whether how to read/convert
            the settings and older versions can ignore the new ones.
            </hint>
        </question>
-->
 <answer id="compat-version">
  <p>
    Yes, module can coexist, as no settings are persistent now.
  </p>
 </answer>



<!--
        <question id="dep-jre" when="final">
            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
            <hint>
            It is expected that if your module runs on 1.x that it will run 
            on 1.x+1 if no, state that please. Also describe here cases where
            you run different code on different versions of JRE and why.
            </hint>
        </question>
-->
 <answer id="dep-jre">
  <p>
    JRE 1.5 and higher is needed, as Java 1.5 language constructs are used.
  </p>
 </answer>



<!--
        <question id="dep-jrejdk" when="final">
            Do you require the JDK or is the JRE enough?
        </question>
-->
 <answer id="dep-jrejdk">
  <p>
    JRE is enough.
  </p>
 </answer>



<!--
        <question id="dep-nb" when="init">
            What other NetBeans projects and modules does this one depend on?
            <hint>
            Depending on other NetBeans projects influnces the ability of
            users of your work to customize their own branded version of
            NetBeans by enabling and disabling some modules. Too
            much dependencies restrict this kind of customization. If that
            is your case, then you may want to split your functionality into
            pieces of autoload, eager and regular modules which can be
            enabled independently. Usually the answer to this question
            is generated from your <code>project.xml</code> file, but
            if it is not guessed correctly, you can suppress it by
            specifying &lt;defaultanswer generate="none"/&gt; and
            write here your own. Please describe such projects as imported APIs using
            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>.
            By doing this information gets listed in the summary page of your
            javadoc.
            </hint>
        </question>
-->
 <answer id="dep-nb">
  <defaultanswer generate='here' />
 </answer>



<!--
        <question id="dep-non-nb" when="init">
            What other projects outside NetBeans does this one depend on?
            
            <hint>
            Depending on 3rd party libraries is always problematic,
            especially if they are not open source, as that complicates
            the licensing scheme of NetBeans. Please enumerate your
            external dependencies here, so it is correctly understood since
            the begining what are the legal implications of your project.
            Also please note that
            some non-NetBeans projects are packaged as NetBeans modules
            (see <a href="http://libs.netbeans.org/">libraries</a>) and
            it is preferred to use this approach when more modules may
            depend and share such third-party libraries.
            </hint>
        </question>
-->
 <answer id="dep-non-nb">
  <p>
    No external dependencies.
  </p>
 </answer>



<!--
        <question id="dep-platform" when="init">
            On which platforms does your module run? Does it run in the same
            way on each?
            <hint>
            If you plan any dependency on OS or any usage of native code,
            please describe why you are doing so and describe how you envision
            to enforce the portability of your code.
            Please note that there is a support for <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#how-os-specific">OS conditionally
            enabled modules</a> which together with autoload/eager modules
            can allow you to enable to provide the best OS aware support
            on certain OSes while providing compatibility bridge on the not
            supported ones.
            Also please list the supported
            OSes/HW platforms and mentioned the lovest version of JDK required
            for your project to run on. Also state whether JRE is enough or
            you really need JDK.
            </hint>
        </question>
-->
 <answer id="dep-platform">
  <p>
    Works on all platforms, no OS dependency.
  </p>
 </answer>



<!--
        <question id="deploy-dependencies" when="final">
            What do other modules need to do to declare a dependency on this one,
            in addition to or instead of the normal module dependency declaration
            (e.g. tokens to require)?
            <hint>
                Provide a sample of the actual lines you would add to a module manifest
                to declare a dependency, for example OpenIDE-Module-Requires: some.token.
                If other modules should not depend on this module, or should just use a
                simple regular module dependency, you can just answer "nothing". If you
                intentionally expose a semistable API to clients using implementation
                dependencies, you should mention that here (but there is no need to give
                an example of usage).
            </hint>
        </question>
-->
 <answer id="deploy-dependencies">
  <p>
    Nothing, regular depencency is enough.
  </p>
 </answer>



<!--
        <question id="deploy-jar" when="impl">
            Do you deploy just module JAR file(s) or other files as well?
            <hint>
            Usually a module consist of one JAR file (perhaps with Class-Path
            extensions) and also a configuration file that enables it. If you
            have any other files, use
            &lt;api group="java.io.File" name="yourname" type="export" category="friend"&gt;...&lt;/api&gt;
            to define the location, name and stability of your files (of course
            changing "yourname" and "friend" to suit your needs).
            
            If it uses more than one JAR, describe where they are located, how
            they refer to each other. 
            If it consist of module JAR(s) and other files, please describe
            what is their purpose, why other files are necessary. Please 
            make sure that installation/uninstallation leaves the system 
            in state as it was before installation.
            </hint>
        </question>
-->
 <answer id="deploy-jar">
  <p>
    One module JAR, no extras.
  </p>
 </answer>



<!--
        <question id="deploy-nbm" when="impl">
            Can you deploy an NBM via the Update Center?
            <hint>
            If not why?
            </hint>
        </question>
-->
 <answer id="deploy-nbm">
  <p>
    Yes, can be deployed via UC.
  </p>
 </answer>



<!--
        <question id="deploy-packages" when="init">
            Are packages of your module made inaccessible by not declaring them
            public?
            
            <hint>
            By default NetBeans build harness treats all packages are private.
            If you export some of them - either as public or friend packages,
            you should have a reason. If the reason is described elsewhere
            in this document, you can ignore this question.
            </hint>
        </question>
-->
 <answer id="deploy-packages">
  <p>
    API package is intentionally public, rest is not public.
  </p>
 </answer>



<!--
        <question id="deploy-shared" when="final">
            Do you need to be installed in the shared location only, or in the user directory only,
            or can your module be installed anywhere?
            <hint>
            Installation location shall not matter, if it does explain why.
            Consider also whether <code>InstalledFileLocator</code> can help.
            </hint>
        </question>
-->
 <answer id="deploy-shared">
  <p>
    Module can be installed anywhere.
  </p>
 </answer>



<!--
        <question id="exec-ant-tasks" when="impl">
            Do you define or register any ant tasks that other can use?
            
            <hint>
            If you provide an ant task that users can use, you need to be very
            careful about its syntax and behaviour, as it most likely forms an
	          API for end users and as there is a lot of end users, their reaction
            when such API gets broken can be pretty strong.
            </hint>
        </question>
-->
 <answer id="exec-ant-tasks">
  <p>
    No ant tasks.
  </p>
 </answer>



<!--
        <question id="exec-classloader" when="impl">
            Does your code create its own class loader(s)?
            <hint>
            A bit unusual. Please explain why and what for.
            </hint>
        </question>
-->
 <answer id="exec-classloader">
  <p>
    No own class loader.
  </p>
 </answer>



<!--
        <question id="exec-component" when="impl">
            Is execution of your code influenced by any (string) property
            of any of your components?
            
            <hint>
            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
            a behavior of some code. This of course forms an interface that should
            be documented. Also if one depends on some interface that an object
            implements (<code>component instanceof Runnable</code>) that forms an
            API as well.
            </hint>
        </question>
-->
 <answer id="exec-component">
  <p>
    No properties.
  </p>
 </answer>



<!--
        <question id="exec-introspection" when="impl">
            Does your module use any kind of runtime type information (<code>instanceof</code>,
            work with <code>java.lang.Class</code>, etc.)?
            <hint>
            Check for cases when you have an object of type A and you also
            expect it to (possibly) be of type B and do some special action. That
            should be documented. The same applies on operations in meta-level
            (Class.isInstance(...), Class.isAssignableFrom(...), etc.).
            </hint>
        </question>
-->
 <answer id="exec-introspection">
  <p>
   No.
  </p>
 </answer>



<!--
        <question id="exec-privateaccess" when="final">
            Are you aware of any other parts of the system calling some of 
            your methods by reflection?
            <hint>
            If so, describe the "contract" as an API. Likely private or friend one, but
            still API and consider rewrite of it.
            </hint>
        </question>
-->
 <answer id="exec-privateaccess">
  <p>
    No.
  </p>
 </answer>



<!--
        <question id="exec-process" when="impl">
            Do you execute an external process from your module? How do you ensure
            that the result is the same on different platforms? Do you parse output?
            Do you depend on result code?
            <hint>
            If you feed an input, parse the output please declare that as an API.
            </hint>
        </question>
-->
 <answer id="exec-process">
  <p>
    No external process.
  </p>
 </answer>



<!--
        <question id="exec-property" when="impl">
            Is execution of your code influenced by any environment or
            Java system (<code>System.getProperty</code>) property?
            On a similar note, is there something interesting that you
            pass to <code>java.util.logging.Logger</code>? Or do you observe
            what others log?
            <hint>
            If there is a property that can change the behavior of your 
            code, somebody will likely use it. You should describe what it does 
            and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
            of this API. You may use
            <pre>
                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
                    description of the property, where it is used, what it influence, etc.
                &lt;/api&gt;            
            </pre>
            </hint>
        </question>
-->
 <answer id="exec-property">
  <p>
    No properties, I plan to use Logger and UI gesture collector in future.
  </p>
 </answer>



<!--
        <question id="exec-reflection" when="impl">
            Does your code use Java Reflection to execute other code?
            <hint>
            This usually indicates a missing or insufficient API in the other
            part of the system. If the other side is not aware of your dependency
            this contract can be easily broken.
            </hint>
        </question>
-->
 <answer id="exec-reflection">
  <p>
    No Java Reflection.
  </p>
 </answer>



<!--
        <question id="exec-threading" when="init">
            What threading models, if any, does your module adhere to? How the
            project behaves with respect to threading?
            <hint>
                Is your API threadsafe? Can it be accessed from any threads or
                just from some dedicated ones? Any special relation to AWT and
                its Event Dispatch thread? Also
                if your module calls foreign APIs which have a specific threading model,
                indicate how you comply with the requirements for multithreaded access
                (synchronization, mutexes, etc.) applicable to those APIs.
                If your module defines any APIs, or has complex internal structures
                that might be used from multiple threads, declare how you protect
                data against concurrent access, race conditions, deadlocks, etc.,
                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
                Examples: a class might be non-thread-safe (like Java Collections); might
                be fully thread-safe (internal locking); might require access through a mutex
                (and may or may not automatically acquire that mutex on behalf of a client method);
                might be able to run only in the event queue; etc.
                Also describe when any events are fired: synchronously, asynchronously, etc.
                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
            </hint>
        </question>
-->
 <answer id="exec-threading">
  <p>
    Content providers are called outside EQ thread to not block system UI, 
    RequestProcessor is used. Module's internal data model of provider's results
    is synchronized to be able to work both with providers and UI code.
  </p>
 </answer>



<!--
        <question id="format-clipboard" when="impl">
            Which data flavors (if any) does your code read from or insert to
            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
            
            <hint>
            Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
            Check your code for overriding these methods.
            </hint>
        </question>
-->
 <answer id="format-clipboard">
  <p>
    No direct clipboard access, just Swing controls are used that communicate with clipboard.
  </p>
 </answer>



<!--
        <question id="format-dnd" when="impl">
            Which protocols (if any) does your code understand during Drag &amp; Drop?
            <hint>
            Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>. 
            Check your code for overriding these methods. Btw. if they are not overridden, they
            by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
            </hint>
        </question>
-->
 <answer id="format-dnd">
  <p>
    No direcr DnD, same as for clipboard.
  </p>
 </answer>



<!--
        <question id="format-types" when="impl">
            Which protocols and file formats (if any) does your module read or write on disk,
            or transmit or receive over the network? Do you generate an ant build script?
            Can it be edited and modified? 
            
            <hint>
            <p>
            Files can be read and written by other programs, modules and users. If they influence
            your behaviour, make sure you either document the format or claim that it is a private
            api (using the &lt;api&gt; tag). 
            </p>
            
            <p>
            If you generate an ant build file, this is very likely going to be seen by end users and
            they will be attempted to edit it. You should be ready for that and provide here a link
            to documentation that you have for such purposes and also describe how you are going to
            understand such files during next release, when you (very likely) slightly change the 
            format.
            </p>
            </hint>
        </question>
-->
 <answer id="format-types">
  <p>
    No file IO.
  </p>
 </answer>



<!--
        <question id="lookup-lookup" when="init">
            Does your module use <code>org.openide.util.Lookup</code>
            or any similar technology to find any components to communicate with? Which ones?
            
            <hint>
            NetBeans is build around a generic registry of services called
            lookup. It is preferable to use it for registration and discovery
            if possible. See
            <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-util/org/openide/util/lookup/doc-files/index.html">
            The Solution to Comunication Between Components
            </a>. If you do not plan to use lookup and insist usage
            of other solution, then please describe why it is not working for
            you.
            <br/>
            When filling the final version of your arch document, please
            describe the interfaces you are searching for, where 
            are defined, whether you are searching for just one or more of them,
            if the order is important, etc. Also classify the stability of such
            API contract. Use &lt;api group=&amp;lookup&amp; /&gt; tag, so
            your information gets listed in the summary page of your javadoc.
            </hint>
        </question>
-->
 <answer id="lookup-lookup">
  <p>
    No lookup usage.
  </p>
 </answer>



<!--
        <question id="lookup-register" when="final">
            Do you register anything into lookup for other code to find?
            <hint>
            Do you register using layer file or using <code>META-INF/services</code>?
            Who is supposed to find your component?
            </hint>
        </question>
-->
 <answer id="lookup-register">
  <p>
        No lookup registration.
  </p>
 </answer>



<!--
        <question id="lookup-remove" when="final">
            Do you remove entries of other modules from lookup?
            <hint>
            Why? Of course, that is possible, but it can be dangerous. Is the module
            your are masking resource from aware of what you are doing?
            </hint>
        </question>
-->
 <answer id="lookup-remove">
  <p>
    No.
  </p>
 </answer>



<!--
        <question id="perf-exit" when="final">
            Does your module run any code on exit?
        </question>
-->
 <answer id="perf-exit">
  <p>
    No.
  </p>
 </answer>



<!--
        <question id="perf-huge_dialogs" when="final">
            Does your module contain any dialogs or wizards with a large number of
            GUI controls such as combo boxes, lists, trees, or text areas?
        </question>
-->
 <answer id="perf-huge_dialogs">
  <p>
    No huge dialogs.
  </p>
 </answer>



<!--
        <question id="perf-limit" when="init">
            Are there any hard-coded or practical limits in the number or size of
            elements your code can handle?
            <hint>
                Most of algorithms have increasing memory and speed complexity
                with respect to size of data they operate on. What is the critical
                part of your project that can be seen as a bottleneck with
                respect to speed or required memory? What are the practical
                sizes of data you tested your project with? What is your estimate
                of potential size of data that would cause visible performance
                problems? Is there some kind of check to detect such situation
                and prevent "hard" crashes - for example the CloneableEditorSupport
                checks for size of a file to be opened in editor
                and if it is larger than 1Mb it shows a dialog giving the
                user the right to decide - e.g. to cancel or commit suicide.
            </hint>
        </question>
-->
 <answer id="perf-limit">
  <p>
    No practical limit.
  </p>
 </answer>



<!--
        <question id="perf-mem" when="final">
            How much memory does your component consume? Estimate
            with a relation to the number of windows, etc.
        </question>
-->
 <answer id="perf-mem">
  <p>
    Small memory consumption, only up to a few results items per provider,
    so say several KBs of data, cleared after each search.
  </p>
 </answer>



<!--
        <question id="perf-menus" when="final">
            Does your module use dynamically updated context menus, or
            context-sensitive actions with complicated and slow enablement logic?
            <hint>
                If you do a lot of tricks when adding actions to regular or context menus, you can significantly
                slow down display of the menu, even when the user is not using your action. Pay attention to
                actions you add to the main menu bar, and to context menus of foreign nodes or components. If
                the action is conditionally enabled, or changes its display dynamically, you need to check the
                impact on performance. In some cases it may be more appropriate to make a simple action that is
                always enabled but does more detailed checks in a dialog if it is actually run.
            </hint>
        </question>
-->
 <answer id="perf-menus">
  <p>
    No dynamic context menus.
  </p>
 </answer>



<!--
        <question id="perf-progress" when="final">
            Does your module execute any long-running tasks?
            
            <hint>Long running tasks should never block 
            AWT thread as it badly hurts the UI
            <a href="http://performance.netbeans.org/responsiveness/issues.html">
            responsiveness</a>.
            Tasks like connecting over
            network, computing huge amount of data, compilation
            be done asynchronously (for example
            using <code>RequestProcessor</code>), definitively it should 
            not block AWT thread.
            </hint>
        </question>
-->
 <answer id="perf-progress">
  <p>
    Yes, providers can run their search for a long time. See threading anwer for
    implemented solution.
  </p>
 </answer>



<!--
        <question id="perf-scale" when="init">
            Which external criteria influence the performance of your
            program (size of file in editor, number of files in menu, 
            in source directory, etc.) and how well your code scales?
            <hint>
            Please include some estimates, there are other more detailed 
            questions to answer in later phases of implementation. 
            </hint>
        </question>
-->
 <answer id="perf-scale">
  <p>
    Number and speed of individual content providers. See threading anwer for
    implemented solution.
  </p>
 </answer>



<!--
        <question id="perf-spi" when="init">
            How the performance of the plugged in code will be enforced?
            <hint>
            If you allow foreign code to be plugged into your own module, how
            do you enforce that it will behave correctly and quickly and will not
            negatively influence the performance of your own module?
            </hint>
        </question>
-->
 <answer id="perf-spi">
  <p>
    Code from SPI clients runs in isolated thread and Request-Response API pattern
    is implemented to enable clients to compute results iteratively and stop
    whenever desirable.
  </p>
 </answer>



<!--
        <question id="perf-startup" when="final">
            Does your module run any code on startup?
        </question>
-->
 <answer id="perf-startup">
  <p>
   No.
  </p>
 </answer>



<!--
        <question id="perf-wakeup" when="final">
            Does any piece of your code wake up periodically and do something
            even when the system is otherwise idle (no user interaction)?
        </question>
-->
 <answer id="perf-wakeup">
  <p>
   No.
  </p>
 </answer>



<!--
        <question id="resources-file" when="final">
            Does your module use <code>java.io.File</code> directly?
            
            <hint>
            NetBeans provide a logical wrapper over plain files called 
            <code>org.openide.filesystems.FileObject</code> that
            provides uniform access to such resources and is the preferred
            way that should be used. But of course there can be situations when
            this is not suitable.
            </hint>
        </question>
-->
 <answer id="resources-file">
  <p>
    No.
  </p>
 </answer>



<!--
        <question id="resources-layer" when="final">
            Does your module provide own layer? Does it create any files or
            folders in it? What it is trying to communicate by that and with which 
            components?
            
            <hint>
            NetBeans allows automatic and declarative installation of resources 
            by module layers. Module register files into appropriate places
            and other components use that information to perform their task
            (build menu, toolbar, window layout, list of templates, set of
            options, etc.). 
            </hint>
        </question>
-->
 <answer id="resources-layer">
  <p>
    Yes, Quick Search UI is plugged into NB window system through xml layer.
    Moreover, Quick Search API defines layer structure for its clients, 
    explained in use cases reply.
  </p>
 </answer>



<!--
        <question id="resources-mask" when="final">
            Does your module mask/hide/override any resources provided by other modules in
            their layers?
            
            <hint>
            If you mask a file provided by another module, you probably depend
            on that and do not want the other module to (for example) change
            the file's name. That module shall thus make that file available as an API
            of some stability category.
            </hint>
        </question>
-->
 <answer id="resources-mask">
  <p>
    No.
  </p>
 </answer>



<!--
        <question id="resources-preferences" when="final">
            Does your module uses preferences via Preferences API? Does your module use NbPreferences or
            or regular JDK Preferences ? Does it read, write or both ? 
            Does it share preferences with other modules ? If so, then why ?
            <hint>
                You may use
                    &lt;api type="export" group="preferences"
                    name="preference node name" category="private"&gt;
                    description of individual keys, where it is used, what it
                    influences, whether the module reads/write it, etc.
                    &lt;/api&gt;
                Due to XML ID restrictions, rather than /org/netbeans/modules/foo give the "name" as org.netbeans.modules.foo.
                Note that if you use NbPreferences this name will then be the same as the code name base of the module.
            </hint>
        </question>
-->
 <answer id="resources-preferences">
  <p>
    No preferences API for now.
  </p>
 </answer>



<!--
        <question id="resources-read" when="final">
            Does your module read any resources from layers? For what purpose?
            
            <hint>
            As this is some kind of intermodule dependency, it is a kind of API.
            Please describe it and classify according to 
            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
            common stability categories</a>.
            </hint>
        </question>
-->
 <answer id="resources-read">
  <p>
    Yes, properly described in use-cases section.
  </p>
 </answer>



<!--
        <question id="security-grant" when="final">
            Does your code grant additional rights to some other code?
            <hint>Avoid using a class loader that adds extra
            permissions to loaded code unless really necessary.
            Also note that your API implementation
            can also expose unneeded permissions to enemy code by
            calling AccessController.doPrivileged().</hint>
        </question>
-->
 <answer id="security-grant">
  <p>
   No.
  </p>
 </answer>



<!--
        <question id="security-policy" when="final">
            Does your functionality require modifications to the standard policy file?
            <hint>Your code might pass control to third-party code not
            coming from trusted domains. This could be code downloaded over the
            network or code coming from libraries that are not bundled
            with NetBeans. Which permissions need to be granted to which domains?</hint>
        </question>
-->
 <answer id="security-policy">
  <p>
   No.
  </p>
 </answer>

</api-answers>
