<?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>

<h4>Hyperlink SPI</h4>
<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="http://java.sun.com/xml/jaxp/dist/1.1/docs/api/"> 
    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>
