<questionid="arch-what"> Whatisthisprojectgoodfor? <hint> Pleaseprovideherefewlinesdescribingthetheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
Nodes API serves as the main aparatus for visualisation of objects
in NetBeans. Nodes augment objects with standard aspects used for
visualisation (e.g. name, displayName, icons, set of proerties,
subnodes hierarchy, etc.) Once a Node is defined for given object
it can be visualised using diferent views e.g. trees, lists, tables etc.
Descripion of nodes can be found
<a href="@TOP@/org/openide/nodes/doc-files/api.html">here</a>.
</answer>
<answer id="arch-usecases">
<p>
<a onclick="target='_blank'"href="https://leanpub.com/nbp4beginners">
<img src="http://wiki.apidesign.org/images/0/03/NetBeansPlatformForBeginners.jpg"
style="float: right"
width="60" height="70" alt="Cover of NetBeans Platform for Beginners book"/>
</a>
For general overview of the concepts related to nodes and <a href="@org-openide-explorer@/overview-summary.html">explorers</a>,
together with code samples, see chapter 7,
of <a onclick="target='_blank'"href="https://leanpub.com/nbp4beginners">NetBeans Platform for Beginners</a>
by Jason Wexbridge and Walter Nyland.
</p>
</answer>
<!-- <questionid="compat-version"> Canyourmodulecoexistwithearlierandfuture versions?Canyoucorrectlyreadalloldsettings?Willfuture versionsbeabletoreadyourcurrentsettings?Canyouread orpolitelyignoresettingsstoredbyafutureversion? <hint> Veryhelpfulforreadingsettingsistostoreversionnumber there,sofutureversionscandecidewhetherhowtoread/convert thesettingsandolderversionscanignorethenewones. </hint> </question>
-->
<answer id="compat-version">
Nodes API itself does not use any kind of settings. Displayed nodes are
persisted using serialization by default, but this can be changed
by developers by providing own persistence mechanism.
</answer>
<!-- <questionid="deploy-jar"> DoyoudeployjustmoduleJARfile(s)orotherfilesaswell? <hint> IfyourmoduleconsistjustfromonemoduleJARfile,justconfirmthat. IfitusesmorethanoneJAR,describewheretherearelocated,how theyrefertoeachother. IfitconsistofmoduleJAR(s)andotherfiles,pleasedescribe whatistheirpurpose,whyotherfilesarenecessary.Please makesurethatinstallation/deinstallationleavesthesystem instateasitwasbeforeinstallation. </hint> </question>
-->
<answer id="deploy-jar">
The API portion is inside <samp>openide.jar</samp>
</answer>
<!-- <questionid="deploy-nbm"> CanyoudeployanNBMviatheUpdateCenter? <hint> Ifnotwhy? </hint> </question>
-->
<answer id="deploy-nbm">
Yes (as part of <samp>openide.nbm</samp> and <samp>core.nbm</samp>).
</answer>
<!-- <questionid="deploy-packages"> Arepackagesofyourmodulemadeinaccessiblebynotdeclaringthem public? <hint> NetBeansmodulesystemallowsrestrictionofaccessrightsto publicclassesofyourmodulefromothermodules.Thisprevents unwanteddependenciesofothersonyourcodeandshouldbeused wheneverpossible(<ahref="http://www.netbeans.org/download/apis/org/openide/doc-files/upgrade.html#3.4-public-packages"> publicpackages </a>). </hint> </question>
-->
<answer id="deploy-packages">
<api name="NodesAPI" group="java"type="export" category="official"url="@TOP@/org/openide/nodes/doc-files/api.html"/>
is a public package.
</answer>
<!-- <questionid="deploy-shared"> Doyouneedtobeinstalledinthesharedlocationonly,orintheuserdirectoryonly, orcanyourmodulebeinstalledanywhere? <hint> Installationlocationshallnotmatter,ifitdoesexplainwhy. Consideralsowhether<code>InstalledFileLocator</code>canhelp. </hint> </question>
-->
<answer id="deploy-shared">
Must be installed in the shared location as it is part of the very core of NetBeans.
</answer>
<!-- <questionid="exec-component"> Isexecutionofyourcodeinfluencedbyany(string)property ofanyofyourcomponents? <hint> Often<code>JComponent.getClientProperty</code>,<code>Action.getValue</code> or<code>PropertyDescriptor.getValue</code>,etc.areusedtoinfluence abehaviourofsomecode.Thisofcourseformsaninterfacethatshould bedocumented.Alsoifonedependsonsomeinterfacethatanobject implements(<code>componentinstanceofRunnable</code>)thatformsan APIaswell. </hint> </question>
-->
<answer id="exec-component">
<a href="@TOP@/org/openide/nodes/BeanNode.html">BeanNode</a>
which serves for default visualisation of JavaBeans uses the "helpID", "propertiesHelpID" and "expertHelpID" form BeanDescriptor of given bean.
to link with help files.
<api type="import" group="property" name="helpID" category="official">For providing help sets for JavaBeans</api>
<api type="export" group="property" name="propertiesHelpID" category="stable">For providing help sets for JavaBeans proerties</api>
<api type="export" group="property" name="expertHelpID" category="stable">For providing help sets for JavaBeans properties</api>
<!-- <questionid="exec-reflection"> DoesyourcodeuseJavaReflectiontoexecuteothercode? <hint> ThisusuallyindicatesamissingorunsufficientAPIintheother partofthesystem.Iftheothersideisnotawareofyourdependency thiscontractcanbeeasilybroken. </hint> </question>
-->
<answer id="exec-reflection">
<p><a href="@TOP@/org/openide/nodes/BeanNode.html">BeanNode</a>
obviously depends on reflection to get values of beans
properties, which shouldn't be considered lack of API. Same
applyies to
<a href="@TOP@/org/openide/nodes/PropertySupport.html">PropertySupport</a> and
<a href="@TOP@/org/openide/nodes/IndexedPropertySupport.html">IndexedPropertySupport.</a></p>
<api name="ProjectManagerMutex" group="java"type="import" category="private">
<p>A test in <a href="@TOP@/org/openide/nodes/Children.html">Children</a> checks that
<code>org.netbeans.api.project.ProjectManager.mutex()</code> is not held by the current
thread when acquiring <a href="@TOP@/org/openide/nodes/Children.html#MUTEX">Children.MUTEX</a>.
Since this module cannot depend on the module providing <code>ProjectManager</code>,
the test uses reflection to retrieve the <code>ProjectManager.mutex()</code> instance.</p></api>
</answer>
<!-- <questionid="format-clipboard"> Whichdataflavors(ifany)doesyourcodereadfromorinsertto theclipboard? </question>
-->
<answer id="format-clipboard">
Nodes provide default implementation of clipboard operations on nodes. This
can be extendeded by specific implementation of nodes by overloading:
<a href="@TOP@/org/openide/nodes/Node.html#clipboardCopy()">Node.clipboardCopy()</a>,
<a href="@TOP@/org/openide/nodes/Node.html#clipboardCut()">Node.cliboardCut()</a>,
<a href="@TOP@/org/openide/nodes/Node.html#getPasteTypes(java.awt.datatransfer.Transferable)">Node.getPasteTypes()</a>
Default Transferables for nodes can be obtained using.
<a href="@TOP@/org/openide/nodes/NodeTransfer.html">NodeTransfer</a> class
<p>
<a href="@TOP@/org/openide/nodes/IndexedCustomizer.html">IndexedCustomizer</a>
provides own DataFlavor transfering indices.
</p>
</answer>
<!-- <questionid="format-dnd"> Whichprotocols(ifany)doesyourcodeunderstandduringDrag&Drop? </question>
-->
<answer id="format-dnd">
Nodes provide default implementation of d'n'd operations on nodes. This
can be extendeded by specific implementation of nodes by overloading:
<a href="@TOP@/org/openide/nodes/Node.html#drag()">Node.drag()</a>
<a href="@TOP@/org/openide/nodes/Node.html#getDropType(java.awt.datatransfer.Transferable,int,int)">Node.getDropTye()</a>
Default Transferables for nodes can be obtained using.
<a href="@TOP@/org/openide/nodes/NodeTransfer.html">NodeTransfer</a> class
The
<a href="@TOP@/org/openide/nodes/NodeTransfer.Paste.html">NodeTransfer.Paste</a>
interface serves as an intelligent source of paste types for a target node.
</answer>
<!-- <questionid="lookup-lookup"> Doesyourmoduleuse<code>org.openide.util.Lookup</code> tofindanycomponentstocommunicatewith?Whichones? <hint> Pleasedescribetheinterfacesyouaresearchingfor,where aredefined,whetheryouaresearchingforjustoneormoreofthem, iftheorderisimportant,etc.Alsoclasifythestabilityofsuch APIcontract. </hint> </question>
-->
<answer id="lookup-lookup">
Nodes use lookup to communicate with other components. Each node
contains own lookup wich is used for augmenting nodes with extended
functionality and data. Nodes do not depend on content of other Lookups.
</answer>
<!-- <questionid="perf-exit"> Doesyourmodulerunanycodeonexit? </question>
-->
<answer id="perf-exit">
Not directly. State of nodes can be serialized as result of
window system serialization.
</answer>
<!-- <questionid="perf-huge_dialogs"> Doesyourmodulecontainanydialogsorwizardswithalargenumberof GUIcontrolssuchascomboboxes,lists,trees,ortextareas? </question>
-->
<answer id="perf-huge_dialogs">
No
</answer>
<!-- <questionid="perf-limit"> Arethereanyhardcodedorpracticallimitsinthenumberorsizeof elementsyourcodecanhandle? </question>
-->
<answer id="perf-limit">
All nodes are held in memory during the IDE runtime, there is no
swap/cache mechanism for nodes.
</answer>
<!-- <questionid="perf-mem"> Howmuchmemorydoesyourcomponentconsume?Estimate witharelationtothenumberofwindows,etc. </question>
-->
<answer id="perf-mem">
Fully initialized node can contain relatively big amount of
other objects e.g. objects in lookups, properties, etc. Depending on
th Node's subclass.
</answer>
<!-- <questionid="perf-menus"> Doesyourmoduleusedynamicallyupdatedcontextmenus,or context-sensitiveactionswithcomplicatedenablementlogic? </question>
-->
<answer id="perf-menus">
No
</answer>
<!-- <questionid="perf-scale"> Whichexternalcriteriainfluencetheperformanceofyour program(sizeoffileineditor,numberoffilesinmenu, insourcedirectory,etc.)andhowwellyourcodescales? Pleaseincludesomeestimates. </question>
-->
<answer id="perf-scale">
Number of visiualized objects and complexity of the visualised
objects.
</answer>
<!-- <questionid="perf-startup"> Doesyourmodulerunanycodeonstartup? </question>
-->
<answer id="perf-startup">
No
</answer>
<!-- <questionid="perf-wakeup"> Doesanypieceofyourcodewakeupperiodicallyanddosomething evenwhenthesystemisotherwiseidle(nouserinteraction)? </question>
-->
<answer id="perf-wakeup">
No
</answer>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.