<?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.25"
  author="mmetelka@netbeans.org"
>

  &api-questions;


<!-- Question: arch-what

     <question id="arch-what">
            What is this project good for?
            <hint>
            Please provide here few lines describing the the project,
            what problem it should solve, provide links to documentation, 
            specifications, etc.
            </hint>
        </question>
-->
<answer id="arch-what">
The editor library module provides subset of editor functionality independent
on the NetBeans IDE (except few specific standalone classes).

<p>List of the main features:</p>
<ul>
  <li>Syntax highlighting of java, HTML, XML and other languages.</li>
  <li>Code Completion enables to type a few characters 
        and then display a list of suggestions appropriate
        in the given context that can be then used 
        to automatically complete the expression.
  </li>
  <li>Word Matching enables enables to type the beginning characters
        of a word used elsewhere in the code and then have the editor
        generate the rest of the word.
  </li>
  <li>Abbreviations allow to expand typed text from a few
        predefined characters into a full word or phrase.
  </li>
  <li>Goto Class enables to open a Java file in the Source Editor 
        by typing only the class name.
        The IDE helps to identify the correct package name for the class.
  </li>
  <li>The Fast Import feature enables to quickly add import statements
        for Java classes in the source file.
  </li>
  <li>Goto Declaration feature allows to quickly jump to a declaration
        of a variable under the cursor.
  </li>
  <li>Goto Source allows to open source file containing
        definition of a type that the variable under the cursor is of.
  </li>
  <li>Code folding allows to collapse sections of the code that are
        unimportant to the user at the given time.
        For example in java source the collapsable sections include
        imports section, inner classes, methods and javadocs.
  </li>
</ul>
</answer>



<!--
        <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=&quot;export&quot;/></code>
            to describe your general APIs.
            If possible please provide 
            simple diagrams. 
            </hint>
        </question>
-->
<answer id="arch-overall">
The editor functionality are mainly implementations of the Swing Text package APIs
plus extension features such as Syntax Coloring, Code Completion,
Word Matching, Abbreviations or Macros.

<p>
The library part is located under <i>editor/lib/src</i> folder.
<br/>
It depends on the following classes from openide:
</p>
<pre>
org.openide.DialogDescriptor
org.openide.DialogDisplayer
org.openide.ErrorManager
org.openide.NotifyDescriptor

org.openide.util.Lookup
org.openide.util.LookupListener
org.openide.util.LookupEvent
org.openide.util.NbBundle
org.openide.util.RequestProcessor
org.openide.util.Task
</pre>
<p>
The above classes should remain to be isolated in a sense
that they operate without loading other openide classes
(if they need an implementation class they get it from Lookup).
</p>

<h2>Hyperlink SPI</h2>
<api group="java" name="EditorHyperlinkSPI" type="export" category="devel">
    Hyperlink SPI in <code>org.netbeans.lib.editor.hyperlink.spi</code>
    allows the editors for a particular mime-type to respond to the situation
    when a user hovers over the text with a Ctrl key pressed.
</api> 

<br/>
The Hyperlink SPI resolves whether the text under the mouse is hyperlink-able
and defines the span of the hyperlink and the action to be performed
when the user clicks on the hyperlink.
<br/>
The SPI consists of a single <code>HyperlinkProvider</code>
class that contains a javadoc with instructions
about how to register the implementation in the xml layer for the given
mime-type (mentioned in the layer section here as well).

</answer>



<!-- Question: compat-i18n

     <question id="compat-i18n">
            Is your module correctly internationalized?
            <hint>
            Correct internationalization means that it obeys instuctions 
            at <a href="http://www.netbeans.org/devhome/docs/i18n/index.html">
            NetBeans I18N pages</a>.
            </hint>
        </question>
-->
<answer id="compat-i18n">
    Yes.
</answer>



<!-- Question: compat-standards

     <question id="compat-standards">
            Does the module implements or defines any standards? Is the 
            implementation exact or it deviates somehow?
        </question>
-->
<answer id="compat-standards">
    It conforms to the Swing Text Package API.
</answer>



<!-- Question: compat-version

     <question id="compat-version">
            Does your module properly coexists with earlier and future
            versions? Can you correctly read settings? Will future
            versions be able to read settings?
            
            <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">
    Only one version of the module can be installed at a time. 
    The settings are shared across different versions, they are stored
    in a human readable form in XML files.
</answer>



<!-- Question: dep-jre

     <question id="dep-jre">
            Which version of JRE 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">
    Needs at least JRE 1.4.
</answer>



<!-- Question: dep-jrejdk

     <question id="dep-jrejdk">
            Do you require JDK or is JRE enough?
        </question>
-->
<answer id="dep-jrejdk">
    Requires JRE only.
</answer>



<!-- Question: dep-nb

     <question id="dep-nb">
            What other NetBeans projects this one depends on?
            <hint>
            If you want, describe such projects as imported API using
            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
            </hint>
        </question>
-->
<answer id="dep-nb">
    <defaultanswer generate='none'/>
    <br/>
    <api group="java" name="EditorLibraryModuleAPI" type="export" category="devel">
        Editor defines APIs and SPIs both by 
        <ul>
            <li> Providing java classes in public packages for further reuse.
                <br/>
                Most of the classes were created spontaneously (several years ago)
                without fulfilling of the rules imposed on APIs and SPIs
                at the present time.
                <br/>
                There is an ongoing work to revisit the existing classes
                and create stable APIs and SPIs (and possibly extract functionality
                into a submodule where appropriate). However this is a long-term
                task spanning several promotions.
            </li>
            <li> Being sensitive to content of certain directories in xml layer.
            </li>
        </ul>
    </api> 
    <br/>
    <api group="java" name="CodeFoldingAPI" type="import" category="official"
        url="@org-netbeans-modules-editor-fold@/architecture-summary.html#java-CodeFoldingAPI"
    />
    <api group="java" name="EditorUtilAPI" type="import" category="friend">
        Set of various editor-related utility classes and methods.
    </api>
</answer>



<!-- Question: dep-non-nb

     <question id="dep-non-nb">
            What other non-NetBeans projects this one depends on?
            
            <hint>
            Some non-NetBeans projects are packaged as NetBeans modules
            (see <a href="http://libs.netbeans.org">libraries</a>) and
            it is prefered to use this approach when more modules may
            depend on such third-party library.
            </hint>
        </question>
-->
<answer id="dep-non-nb">
    <api group="java" name="JAXP" type="import" category="standard" url="https://www.oracle.com/java/technologies/jaxp-introduction.html"> 
    Standard XML APIs (DOM, SAX) - distributed with the IDE (in lib/ext/xml-apis*.jar),
    already part of JDK 1.4 and newer).
    </api>
</answer>



<!-- Question: dep-platform

     <question id="dep-platform">
            On which platforms your module run? Any? Does it run in the same
            way?
            <hint>
            If your module is using JNI or deals with special differences of
            OSes like filesystems, etc. please describe here what they are.
            </hint>
        </question>
-->
<answer id="dep-platform">
    The module is 100% pure Java and runs on any platform.
</answer>



<!-- Question: deploy-jar

     <question id="deploy-jar">
            Do you deploy just module JAR file(s) or some other files?
            <hint>
            If your module consist just from one module JAR file, just confirm that.
            If it uses more than one JAR, describe where there 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/deinstallation leaves the system 
            in state as it was before installation.
            </hint>
        </question>
-->
<answer id="deploy-jar">
<code>org-netbeans-modules-editor-lib.jar</code> - NetBeans editor library independent of the rest of the NetBeans APIs depending on the JRE only.
</answer>



<!-- Question: deploy-nbm

     <question id="deploy-nbm">
            Can you deploy NBM via AutoUpdate center?
            <hint>
            If not why?
            </hint>
        </question>
-->
<answer id="deploy-nbm">
    Yes.
</answer>



<!-- Question: deploy-packages

     <question id="deploy-packages">
            Are packages of your module made inaccessible by not declaring them
            public?
            
            <hint>
            NetBeans module system allows restriction of access rights to
            public classes of your module from other modules. This prevents
            unwanted dependencies of others on your code and should be used
            whenever possible (<a href="http://www.netbeans.org/download/apis/org/openide/doc-files/upgrade.html#3.4-public-packages">
            public packages
            </a>). 
            </hint>
        </question>
-->
<answer id="deploy-packages">

Description of public packages:
<ul>
    <li> <code>org.netbeans.editor</code> - core of the editor generic infrastructure; indenpendent of the NetBeans IDE.
    </li>
    <li> <code>org.netbeans.editor.ext</code> - extra (non-essential) generic editor infrastructure; indenpendent of the NetBeans IDE.
    </li>
    <li> <code>org.netbeans.editor.ext.html</code> - HTML editor infrastructure; independent of the NetBeans IDE.
    </li>
    <li> <code>org.netbeans.editor.ext.html.dtd</code> - DTD parsing support for determining of the valid input at particular place of a HTML source (offered by code completion); independent of the NetBeans IDE.
    </li>
    <li> <code>org.netbeans.editor.ext.java</code> - Java editor infrastructure; independent of the NetBeans IDE.
    </li>
    <li> <code>org.netbeans.editor.ext.plain</code> - Plain text editor infrastructure; independent of the NetBeans IDE.
    </li>
    <li> <code>org.netbeans.editor.view.spi</code> - A rudiment of a generic view architecture SPI though now it is only used privately in the editor module; independent of the NetBeans IDE.
    </li>
</ul>
    
</answer>



<!-- Question: deploy-shared

     <question id="deploy-shared">
            Do you need to be installed in shared location or only in user directory?
            <hint>
            Installation location shall not matter, if it does explain why.
            </hint>
        </question>
-->
<answer id="deploy-shared">
    Module can be installed anywhere.
</answer>



<!-- Question: exec-classloader

     <question id="exec-classloader">
            Does your code uses own classloader?
            <hint>
            A bit unusual. Please explain why and what for.
            </hint>
        </question>
-->
<answer id="exec-classloader">
    No.
</answer>



<!-- Question: exec-component

     <question id="exec-component">
            Is execution of your code influenced by (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 behaviour 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">
    There are certain document properties (<code>javax.swing.text.Document.getProperty()</code>)
    that influence the document execution:
    <br/>
    <api type="import" name="mimeType" category="stable" group="property">
        Document property containing mime-type of the particular document e.g. "text/x-java".
        <br/>
        It allows to search for particular editor settings based on
        the mime-type such as tooltip annotations providers etc.
        <br/>
        Maintained by <code>org.openide.text</code> package.
    </api>
    <br/>
    <api type="import" name="Document.StreamDescriptionProperty" category="stable" group="property">
        Document property containing either <code>DataObject</code> or <code>FileObject</code>
        from which the <code>Document</code> content was loaded.
        <br/>
        Maintained by <code>org.openide.text</code> package.
    </api>
    <br/>
    <api type="import" name="TextLimitLine" category="private" group="property">
        Component client property that determines a column index where a text limit line
        will be displayed. This overrides a default value from editor settings
        for a particular component.
    </api>
    <br/>
    <api type="export" name="DefaultEditorKit.EndOfLineStringProperty" category="stable" group="property">
        Document property containing line separator that was used when the document content was
        loaded from a <code>java.io.Reader</code> by an <code>EditorKit.read()</code>.
    </api>
    <br/>
    <api type="export" name="line-limit" category="private" group="property">
        Document property that determines the number of characters in the longest line
        determined during the document loading from a reader by the editor kit. 
    </api>
    <br/>
    <api type="export" name="CARET_MIN_WIDTH" category="devel" group="property">
        Component client property that provides an <code>IntUnaryOperator</code>
        which is invoked with a document offset and returns a minimum caret width.
        This overrides a constant 2 minimum caret width.
    </api>
</answer>



<!-- Question: exec-privateaccess

     <question id="exec-privateaccess">
            Are you aware of any other part 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">
yes. core/multiview module is retrieving value of a setting property (visibility of toolbar in editor) and is 
listening on changes.
That's an undeclared dependency on editor(org.netbeans.editor.Settings).
A test is included in commit validation that checks the editor code changes.
</answer>



<!-- Question: exec-property

     <question id="exec-property">
            Is execution of your code influenced by any environment of
            system (<code>System.getProperty</code>) property?
            
            <hint>
            If there is a property that can change the behaviour of your 
            code, somebody will likely use it. You should describe what it does 
            and the stability category of this API. You may use
            <PRE>
                &lt;property name="id" category="private" &gt;
                    description of the property, where it is used, what it influence, etc.
                &lt;/property&gt;            
            </PRE>
            </hint>
        </question>
-->
<answer id="exec-property">
    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.document" category="private">
        System property to deubg inserts and removals done in the document.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.document.stack" category="private">
        System property to dump thread stacks during inserts and removals done in the document.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.document.read" category="private">
        System property to debug loading of the document from a <code>java.io.Reader</code> by an <code>EditorKit</code>.
    </api>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.document.undo" category="private">
        System property to debug undoing/redoing of the modifications done in the document.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.view.rebuild" category="private">
        System property to debug the view regions being rebuilt during document modifications.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.view.paint" category="private">
        System property to debug paint operations done in views (clipping regions sizes etc.).
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.view.repaint" category="private">
        System property to debug when repaints are initiated in views.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.draw" category="private">
        System property to debug the tokens that the drawing engine is rendering.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.draw.fragment" category="private">
        System property to debug particular fragments of the text being rendered by the editor's drawing engine.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.draw.graphics" category="private">
        System property to debug graphics operations that the editor sends to a <code>java.awt.Graphics</code>
        of the component being rendered.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.format.modify" category="private">
        System property to debug particular token modifications during the text formatting process.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.caret.focus" category="private">
        System property to debug when a focus is gained and lost by the editor's caret.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.caret.focus.extra" category="private">
        System property to debug details of a focus related processing of the editor's caret (e.g. caret blinking timer etc.).
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.atomic" category="private">
        System property to debug when atomic transactions are performed over the editor's document.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.atomic.stack" category="private">
        System property to debug thread stacks during atomic transactions performed over the editor's document.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.warmup" category="private">
        System property to debug execution of the editor's warmup task (e.g. time intervals that each warmup section takes etc.).
    </api>
    <api type="import" group="systemproperty" name="netbeans.debug.editor.popup.menu" category="private">
        System property to debug creation of the editor's popup menu. It shows the added popup menu item's text, whether it's invisible and action that produced the item.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="netbeans.debug.exceptions" category="private">
        Obsolete now, we will remove those when time allows.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="line.separator" category="official">
        To determine the line separator on a particular platform.
    </api>

    <br/>
    <api type="import" group="systemproperty" name="org.netbeans.lib.editor.hyperlink.HyperlinkOperation.activationKey" category="private">
        To specify modifiers for which the hyperlinking should be enabled, or to switch the hyperlinking off.
        Valid values are "[CSMA]+" (to specify combination of modifiers) or "off" (to switch hyperlinking off).
    </api>
    <api type="import" group="property" name="org.netbeans.api.fold.expander" category="friend">
        The client property must be defined on JTextComponent managed by the NetBeans editor.
        <p/>
        Mouse gestures require to determine whether the point at caret is folded or not. Plain text is then selected.
        The client property org.netbeans.api.fold.expander (if defined) should contains a Callable&lt;Boolean> that
        returns false, if the point is a plaintext, true otherwise. Fold expansion should be handled by the Callable.
        <p/>
        editor.fold module uses this client property to hook into BaseCaret processing.
    </api>
</answer>



<!-- Question: exec-reflection

     <question id="exec-reflection">
            Does your code uses java.lang.reflect to execute some other code?
            <hint>
            This usually indicates a missing or unsufficient 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">
    Reflection is used for:
    <ul>
    <li>in the libsrc/org/netbeans/editor/ext/ToolTipSupport.java
        there is a method "setText" searched in the tooltip component
        that is unfortunately defined to be a generic javax.swing.JComponent,
        so that the tooltip text can be propagated into it.
    </li>
    </ul>
</answer>



<!-- Question: format-clipboard

     <question id="format-clipboard">
            Which protocols your code reads/inserts when communicating with
            clipboard?
        </question>
-->
<answer id="format-clipboard">
    <ul>
        <li>Editor just forwards the clipboard operation requests
            into javax.swing.text.JTextComponent's cut(), copy() and paste() methods.
        </li>
    </ul>
</answer>



<!-- Question: format-dnd

     <question id="format-dnd">
            Which protocols your code understands during drag-n-drop?
        </question>
-->
<answer id="format-dnd">
    None.
</answer>



<!-- Question: format-types

     <question id="format-types">
            Which file formats your code reads or writes on disk?
        </question>
-->
<answer id="format-types">
</answer>



<!-- Question: lookup-lookup

     <question id="lookup-lookup">
            Does your module uses <code>org.openide.util.Lookup</code>
            to find any components to communicate to? Which ones?
            
            <hint>
            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 clasify the stability of such
            API contract.
            </hint>
        </question>
-->
<answer id="lookup-lookup">
</answer>



<!-- Question: lookup-register

     <question id="lookup-register">
            Do you register anything into the lookup for other 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">
</answer>



<!-- Question: lookup-remove

     <question id="lookup-remove">
            Are removing entries of other modules from the 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">
    No.
</answer>



<!-- Question: perf-exit

     <question id="perf-exit">
            Does your module executes anything on exit?
        </question>
-->
<answer id="perf-exit">
    No.
</answer>



<!-- Question: perf-huge_dialogs

     <question id="perf-huge_dialogs">
            Does your module contain any dialogs or wizards with huge
            amount of GUI controls like combo boxes, lists, trees, text
            areas?
        </question>
-->
<answer id="perf-huge_dialogs">
    No.
</answer>



<!-- Question: perf-limit

     <question id="perf-limit">
            Are there any limits in number/size of elements your code
            can handle?
        </question>
-->
<answer id="perf-limit">
    No explicit limits. Technically, the available memory size is the limit...
</answer>



<!-- Question: perf-mem

     <question id="perf-mem">
            What is the amount of memory your component occupies? Estimate
            with a relaction to the number of windows, etc.
        </question>
-->
<answer id="perf-mem">
    Rough numbers:
    <ul>
    <li>one source file opened in the editor: 534KB</li>
    </ul>
</answer>



<!-- Question: perf-menus

     <question id="perf-menus">
            Does your module use dynamically changing context menus or
            context sensitive actions with complicated logic for enable/disable?
        </question>
-->
<answer id="perf-menus">
    The "goto declaration" and "goto source" are somewhat complicated
    especially during the first invocation.
</answer>



<!-- Question: perf-progress

     <question id="perf-progress">
            Does your module executes some long running task?
            <hint>Typically they are tasks like connecting over
            network, computing huge amount of data, compilation.
            Such communication should be done asynchronously (for example
            using <code>RequestProcessor</code>), definitively it should 
            not block AWT thread.
            </hint>
        </question>
-->
<answer id="perf-progress">
    Opening a editor can be quite long task.
    <br/>
    The creation of the text component (JEditorPane instance) has to be done in AWT event queue
    thread.
    <br/>
    Setting of the document into the text component has to be done in AWT as well
    as the document is regular property and thus it must be modified in AWT only.
    <br/>
    Other tasks during editor opening (such as parsing)
    do not need to be run in the AWT and they are run on the background.
</answer>



<!-- Question: perf-scale

     <question id="perf-scale">
            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?
            Please include some estimates.
        </question>
-->
<answer id="perf-scale">
    The number of characters of the source file multiplied by 2 to respect
    2bytes for each unicode characters.
    Each line separator adds another line element plus a position
    object.
</answer>



<!-- Question: perf-startup

     <question id="perf-startup">
            Does your module executes anything on startup?
        </question>
-->
<answer id="perf-startup">
    It registers an operation listener to watch for changes in dataobjects.
</answer>



<!-- Question: perf-wakeup

     <question id="perf-wakeup">
            Is any piece of your code waking up periodically?
        </question>
-->
<answer id="perf-wakeup">
    No.
</answer>



<!-- Question: resources-file

     <question id="resources-file">
            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 prefered
            way that should be used. But of course there can be situations when
            this is not suitable.
            </hint>
        </question>
-->
<answer id="resources-file">
    No.
</answer>



<!-- Question: resources-layer

     <question id="resources-layer">
            Does your module provide own layer? Does it create some files or
            folders on it? What it is trying to communicate by that and with which 
            component?
            
            <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">
</answer>



<!-- Question: resources-mask

     <question id="resources-mask">
            Does your module mask/hide/override any resource provided by another one in
            module layer? 
            
            <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">
    No.
</answer>



<!-- Question: resources-read

     <question id="resources-read">
            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 clasify according to 
            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
            common stability categories</a>.
            </hint>
        </question>
-->
<answer id="resources-read">
    No.
</answer>


<!--
        <question id="exec-introspection">
            Does your module use any kind of runtime type informations (instanceof,
            work with java.lang.Class, 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">
    No.
</answer>



<!--
        <question id="exec-process">
            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">
    No.
</answer>


<!--
        <question id="arch-quality" when="init">
            How the quality of your code will be tested and 
            how future regressions are going to be prevented?
            <hint>
            What kind of testing you want to use? What/how much area of functionality
            should be covered by the tests? 
            </hint>
        </question>
-->
<answer id="arch-quality">
No answer
</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 the work should be 
            ready.
            </hint>
        </question>
-->
<answer id="arch-time">
No answer
</answer>



<!--
        <question id="arch-usecases" when="init">
            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 at
            what circumstances and what will be the typical code to write
            to use the module.
        </question>
-->
<answer id="arch-usecases">
No answer
</answer>



<answer id="deploy-dependencies">
Nothing.
</answer>



<!--
        <question id="exec-threading" when="impl">
            What threading models, if any, does your module adhere to?
            <hint>
                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>
    Threading model of the document model adheres to javax.swing.text.Document
    interface. There can be multiple reader threads accessing
    the document simultaneously but only one mutating thread at the time.
    </p>

    <p>
    Document.render(Runnable) must be used for all the readonly operations
    accessing the document. The editor fully supports org.openide.text.NbDocument.runAtomic()
    and NbDocument.runAtomicAsUser() extensions that allow transactions
    on top of the document.
    </p>

    <p>
    All the UI-related tasks adhere to Swing/AWT conventions i.e. they
    must be performed in EQ thread.
    </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 fast and will not
            negatively influence the performance of your own module?
            </hint>
        </question>
-->
<answer id="perf-spi">
No answer
</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>
   XXX no answer for security-grant
  </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>
   XXX no answer for security-policy
  </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.
  </p>
 </answer>





<!--
        <question id="arch-where" when="init">
            Where one can find sources for your module?
            <hint>
                Please provide link to the CVS web client at
                http://www.netbeans.org/download/source_browse.html
                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>
   XXX no answer for compat-deprecation
  </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>
   XXX no answer for resources-preferences
  </p>
 </answer>

</api-answers>
