<?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.12"
  author="pzavadsky@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">
<em>Actions</em> provides system of support and utility classes 
for 'actions' usage in NetBeans.
</answer>

<answer id="arch-usecases">
        First see the <a href="@TOP@/org/openide/actions/doc-files/api.html">API description</a>. Here is just
    a list of frequently asked or interesting questions slowly expanding as
    people ask them:
    
    <h3>Actions faq:</h3>
    
    <usecase id="context-action-shortcuts" name="How to define configurable Shortcut for Component based shortcut?" >
<em><b>Q:</b>
The usual Swing way of defining Actions for your component is to create an Action instance and put it into the Input and Action maps of your component.
However how to make this Action's shortcut configurable from the Tools/Keyboard Shortcuts dialog?</em>
<p>
In order for the action to show up in Keyboards Shortcut dialog you need the action defined in the 
layer file under "Actions" folder and have the shortcut defined there under "Keymaps/&lt;Profile Name&gt;" linking to your action.
</p>
<pre>
    &lt;folder name="Actions" &gt;
        &lt;folder name="Window"&gt;
            &lt;file name="org-netbeans-core-actions-PreviousViewCallbackAction.instance"/&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;

    &lt;folder name="Keymaps"&gt;
        &lt;folder name="NetBeans"&gt;
            &lt;file name="S-A-Left.shadow"&gt;
                &lt;attr name="originalFile" stringvalue="Actions/Window/org-netbeans-core-actions-PreviousViewCallbackAction.instance"/&gt;
            &lt;/file&gt;
        &lt;/folder&gt;
    &lt;/folder&gt;
</pre>
<p>
The mentioned Action has to be a subclass of <code>org.openide.util.actions.CallbackSystemAction</code>. It does not necessarily has to 
perform the action, it's just a placeholder for linking the shortcut. You might want to override it's <code>getActionMapKey()</code> and give it a 
reasonable key.
</p>
<p>
The actual action that does the work in your component (preferably a simple Swing <code>javax.swing.Action</code>)
is to be put into your <code>TopComponent</code>'s <code>ActionMap</code>. The key for the <code>ActionMap</code> 
has to match the key defined in the global action's <code>getActionMapKey()</code> method.
</p>
<pre>
        getActionMap().put("PreviousViewAction", new MyPreviousTabAction());
</pre>
<p>
This way even actions from multiple <code>TopComponent</code>s with the same gesture (eg. "switch to next tab") can share the same configurable shortcut.
</p>
<p>
Note: Don't define your action's shortcut and don't put it into any of the <code>TopComponent</code>'s
<code>javax.swing.InputMap</code>. Otherwise the component would not pick up the changed shortcut from the
global context.
</p>

    </usecase>
</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">
Before the Actions was build on <code>org.openide.util.actions.SystemAction</code>, this
was recently changed that Actions supports <code>javax.swing.Action</code> which
is java API standard, and Actions will be improving towards this more and more.
</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">
Yes up to now it is supposed to be compatible with older versions.
</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">
It uses JRE 1.3.
</answer>



<!-- Question: dep-jrejdk

     <question id="dep-jrejdk">
            Do you require JDK or is JRE enough?
        </question>
-->
<answer id="dep-jrejdk">
JRE is enough.
</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">
It uses various kinds of API's:
<ul>
<li>
    <api 
        name="NodesAPI"
        group="java"
        type="import"
        category="official"
        url="@org-openide-nodes@/overview-summary.html"
    />
    The support class <code>NodeAction</code>.
</li>
<li>
    <api 
        name="WindowSystemAPI"
        group="java"
        type="import"
        category="official"
        url="@org-openide-windows@/overview-summary.html"
    />
    <code>NodeAction</code> uses <code>TopComponent.Registry</code>.
</li>
<li>
    <api 
        name="ExplorerAPI"
        group="java"
        type="import"
        category="official"
        url="@org-openide-explorer@/overview-summary.html"
    />
    <code>PasteAction</code> uses <code>ExplorerManager</code>.
</li>
<li>
    <api 
        name="FilesystemsAPI"
        group="java"
        type="import"
        category="official"
        url="@org-openide-filesystems@/overview-summary.html"
    />
    E.g. <code>FileSystemAction</code> uses <code>FileSystem</code>.
</li>
<li>
    <api 
        name="LoadersAPI"
        group="java"
        type="import"
        category="official"
        url="@org-openide-loaders@/overview-summary.html"
    />
    E.g. <code>FileSystemAction</code> uses <code>DataObject</code>.
</li>
<li>
    <api 
        name="UtilitiesAPI"
        group="java"
        type="import"
        category="official"
        url="@org-openide-util-ui@/overview-summary.html"
    />
</li>
</ul>
</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">
No.
</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">
100% pure Java. It should run anywhere.
</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">
Classes belonging to this module do not reside in standalone library.
They are bundled together with other parts of the openide in <code>openide.jar</code>.
</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">
Whole openide can be deployed via AU center.
</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">
<!-- XXX what does this mean? -->
No, ther are <api name="ActionsAPI" group="java" type="export" category="official" url="@TOP@/overview-summary.html"/>.
</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">
<code>openide.jar</code> needs to be in the system directory. 
</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 used three values (via <code>Action.getValue()</code>).
<ul>
    <li><api name="OpenIDE-Transmodal-Action" group="property" category="devel" type="export">Inidicates action can be performed
    (typicaly via shortcut) even when dialog is popped out (modal or modeless).</api></li>
    <li><api name="delegates" group="property" category="devel" type="export">Used internaly in <code>PasteAction</code> delegate action
    which serves to pass an array of <code>PasteType</code> or <code>Action</code> to global instance (it is the only one
    which actually performs paste operation).</api></li>
    <li><api name="iconBase" group="property" category="devel" type="export">Used in companion to Actions.SMALL_ICON. Because there
    is no way to specify values for other types of icons the value of "iconBase" is used
    to construct the resource names of disabled, pressed and rollover icons. The value is
    expected to contain a resource path of the normal icon. Strings "_pressed",
    "_disabled" and "_rollover" are inserted before the suffix when searching for
    the other types of icons.</api></li>
    <li><api name="noIconInMenu" group="property" category="devel" type="export"> 
    Allowed value <code>Boolean.TRUE</code>.
    Influences the display of the action in the main menu, the item will have no icon there. Works for Actions that don't define custom MenuPresenter.
    </api></li>    
    <li><api name="PreferredIconSize" group="property" category="devel" type="export">
    Used to support 24x24 icons in toolbars. If toolbar button has client property "PreferredIconSize"
    set to Integer(24) button tries to load icon with name "iconBase" + "24" eg. "cut24.gif".
    Strings "_pressed","_disabled" and "_rollover" are inserted before the suffix when searching for
    the other types of icons eg.:"cut24_pressed.gif".</api></li>
    <li>
        <api name="waitFinished" group="property" category="friend" type="export">
             There is a new contract established between the caller of an action that
             allows mutual communication and possible synchronous execution even for 
             actions that by default perform their operations asynchronously. If the
             action's <code>actionPeformed</code> method is passed <code>ActionEvent</code>
             with command <q>waitFinished</q> the action shall be executed synchronously.
             The code:
             <pre>
             action.actionPerformed (new ActionEvent (this, 0, "waitFinished"))
             </pre>
             shall be executed synchronously, even if the action by default runs asynchronously.
             All asynchronous actions are asked to obey this contract, <code>CallableSystemAction</code>
             does it by default. However this contract is defined as friend one 
             and may be abandoned in future.
        </api>
    </li>
</ul>

<api name="ActionMapKeys" category="stable" group="property" type="export" >
<code>CallableSystemAction</code> uses its <code>getActionMapKey()</code> method
(usually overriden by subclasses) to get a key which is then searched in the
<code>ActionMap</code> obtained from the action's context. Other modules can
register their own action then: 
<pre>
topComponent.getActionMap ().put (theKey, new YourOwnSwingAction ());
</pre>
Here is the list of special keys:
<ul>
    <li><code>"cloneWindow"</code> - an action to be executed when a top component is to be cloned</li>
    <li><code>"closeWindow"</code> - an action when a view is about to be closed</li>
    <li><code>DefaultEditorKit.copyAction</code> - copy action handler</li>
    <li><code>DefaultEditorKit.cutAction</code> - cut action handler</li>
    <li><code>"delete"</code> - delete action handler</li>
    <li><code>DefaultEditorKit.pasteAction</code> - paste action handler</li>
    
    <!-- new since 5.8 -->
    <li><code>"jumpNext"</code> - when a next element shall be selected</li>
    <li><code>"jumpPrev"</code> - when a previous element shall be selected</li>
</ul>
</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">
No.
</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">
        <ul>
            <li>
                <api type="export" group="systemproperty" name="org.openide.util.actions.CallableSystemAction.synchronousByDefault" category="friend">
                    If set to <code>true</code>, changes default value of the
                    <code>asynchronous()</code> method. Useful for unit tests
                    which would prefer to run all tested actions synchronously.
                </api>
            </li>
        </ul>
</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">
A bit indirectly. <code>SystemAction.get (...)</code> 
calls to <code>SharedClassObject.findObject</code> which calls constructor by reflection. 
</answer>



<!-- Question: format-clipboard

     <question id="format-clipboard">
            Which protocols your code reads/inserts when communicating with
            clipboard?
        </question>
-->
<answer id="format-clipboard">
Implementations of cut, copy and paste (<code>CutAction</code>, <code>CopyAction</code>
and <code>PasteAction</code>) reads/writes from/into clipboard. It uses standard
<a href="http://java.sun.com/j2se/1.4.1/docs/api/java/awt/datatransfer/package-summary.html">java datatransfer mechanism</a>
and <a href="@org-openide-util-ui@/org/openide/util/datatransfer/package-summary.html">Netbeans extension to the mechanism</a>.
</answer>



<!-- Question: format-dnd

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



<!-- Question: format-types

     <question id="format-types">
            Which file formats your code reads or writes on disk?
        </question>
-->
<answer id="format-types">
None.
</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">
It uses <code>Lookup</code> as a representation of context in which are certain action
types <code>ContextAwareAction</code>s used. Current implementations
lookup in the context for <code>javax.swing.ActionMap</code>
or <code>org.openide.nodes.Node</code> or <code>org.openide.Node.Cookie</code>
instances.
</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">
No. Actions are just clients of some lookups.
</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">
Core implementation provides component for customizing shorcuts.
<code>org.netbeans.core.ShortcutsEditor</code>.
</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">
None is defined.
</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">
There is one class in VM per action. Because currently all actions are subclasses 
of <code>SystemAction</code>. 
Those kind of actions are singletons.
That older approach is getting away. There are already newer implementation
which creates short living action instances (context sensitive actions) 
when invoking popup menu. 
<br/>It should be measured how much of memory they take.
I guess the amount shouldn't be signicant.
</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">
Actions doesn't use menus, it is vice versa.
</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">
No.
</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">
This should be irrelevant, as far as I know, Actions shouldn't use any collections
of data or something like that. One exception I know is global keymap implementation
which scales linear.
</answer>



<!-- Question: perf-startup

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



<!-- Question: perf-wakeup

     <question id="perf-wakeup">
            Is any piece of your code waking up periodically?
        </question>
-->
<answer id="perf-wakeup">
No. At least I do not know about that.
</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">
    <api name="UI-ToolActions" group="layer" type="export" category="stable">
        Register your <a href="@JDK@/javax/swing/Action.html">javax.swing.Action</a>
        instances in <code>UI/ToolActions</code> folder to make them known
        to <a href="@TOP@/org/openide/actions/ToolsAction.html">ToolsAction</a>.
    </api>
</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">
There are special folders containing actions in xml layers.
<ul>
<li><em>Menu</em> contains actions which are present in menu.</li>
<li><em>Toolbars</em> contains actions which will be present in toolbars.</li>
<li><em>Shortcuts</em> contains actions which will have assigned shortcuts.</li>
<li><em>Actions</em> contains actions which are possible to manipulate with (via Options).</li>
</ul>
<em>Note:</em> Those layers are not necessarily read by Actions module. Probably 
it belongs to <em>Window system module</em>.
</answer>


<!-- Question: resources-preferences

     <question id="resources-preferences">
            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">
    <api group="preferences" name="org.openide.actions.HeapView" type="export" category="private">
      <table>
          <tbody>
              <tr>
                  <th>key</th>
                  <th>description</th>
                  <th>read</th>
                  <th>write</th>
              </tr>
              <tr>
                  <td>showDropShadow</td>
                  <td>Preserves "Drop Shadow" setting of the view</td>
                  <td>x</td>
                  <td>x</td>
              </tr>
              <tr>
                  <td>showText</td>
                  <td>Preserves "Show Text" setting of the view</td>
                  <td>x</td>
                  <td>x</td>
              </tr>
              <tr>
                  <td>tickStyle</td>
                  <td>Preserves "Overlay Grid" setting of the view</td>
                  <td>x</td>
                  <td>x</td>
              </tr>
          </tbody>
      </table>
  </api>
</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" shape="rect">
                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.
            If possible please provide 
            simple diagrams. 
            </hint>
        </question>
-->
 <answer id="arch-overall">
  <p>
   XXX no answer for arch-overall
  </p>
 </answer>



<!--
        <question id="arch-quality" when="init">
            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html" shape="rect">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? 
            </hint>
        </question>
-->
 <answer id="arch-quality">
  <p>
   XXX no answer for arch-quality
  </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>
   XXX no answer for arch-time
  </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>



 <answer id="deploy-dependencies">
  <p>
   Nothing.
  </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>
   XXX no answer for exec-ant-tasks
  </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>
   XXX no answer for exec-introspection
  </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>
   XXX no answer for exec-process
  </p>
 </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" shape="rect">Threading Recommendations</a> (in progress)
            </hint>
        </question>
-->
 <answer id="exec-threading">
  <p>
   XXX no answer for exec-threading
  </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>
   XXX no answer for perf-spi
  </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>
   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>

</api-answers>
