<!-- <questionid="arch-overall"when="init"> Describetheoverallarchitecture. <hint> WhatwillbeAPIfor <ahref="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi"> clientsandwhatsupportAPI</a>? Whatpartswillbepluggable? Howwillplug-insberegistered?Pleaseuse<code><apitype="export"/></code> todescribeyourgeneralAPIs. Ifpossiblepleaseprovide simplediagrams. </hint> </question>
-->
<answer id="arch-overall">
<ul>
<li>
<api group="java" name="BaseProjectUIAPI"type="export" category="official">
<p>
The Project UI API provides some miscellaneous APIs and SPIs relating to the
appearance and UI behavior of generic projects. Most importantly, it permits
the customizer and logical view of a project to be defined.
</p>
</api>
</li>
<li>
<api group="java" name="BaseProjectUIAPI-provider"type="export" category="friend">
<p>
Callbacks intended to let the Project UI module plug in implementations of
APIs defined here. Uses implementation dependencies.
</p>
</api>
</li>
</ul>
</answer>
<!-- <questionid="arch-quality"when="init"> Howthe<ahref="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a> ofyourcodewillbetestedand howfutureregressionsaregoingtobeprevented? <hint> Whatkindoftesting youwanttouse?What/howmuchareaoffunctionality shouldbecoveredbythetests? </hint> </question>
-->
<answer id="arch-quality">
<p>
No tests currently, but this is mostly API and not implementation.
</p>
</answer>
<!-- <questionid="arch-usecases"when="init"> Describethemain<ahref="http://openide.netbeans.org/tutorial/api-design.html#usecase"> usecases</a>ofthenewAPI.Whowilluseitat whatcircumstancesandwhatwillbethetypicalcodetowrite tousethemodule. </question>
-->
<answer id="arch-usecases">
<p>
The main use case is for project type providers to supply logical views and
customizers for the project. Also for template providers to create
project-aware file templates. Can also get a list of open projects, create
different kinds of project-related actions, and select projects on disk.
</p>
</answer>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
<p>
The module supplies the APIs for the basic, generic UI infrastructure for
projects: list of opened projects, main project, basic project-sensitive
actions, template wizards, etc.
</p>
</answer>
<!-- <questionid="exec-component"when="impl"> Isexecutionofyourcodeinfluencedbyany(string)property ofanyofyourcomponents? <hint> Often<code>JComponent.getClientProperty</code>,<code>Action.getValue</code> or<code>PropertyDescriptor.getValue</code>,etc.areusedtoinfluence abehaviorofsomecode.Thisofcourseformsaninterfacethatshould bedocumented.Alsoifonedependsonsomeinterfacethatanobject implements(<code>componentinstanceofRunnable</code>)thatformsan APIaswell. </hint> </question>
-->
<answer id="exec-component">
<p>
The template creation API uses file attributes to decide which templates are
appropriate for certain project types, and to find template wizards.
</p>
</answer>
<!-- <questionid="exec-property"when="impl"> Isexecutionofyourcodeinfluencedbyanyenvironmentor Javasystem(<code>System.getProperty</code>)property? <hint> Ifthereisapropertythatcanchangethebehaviorofyour code,somebodywilllikelyuseit.Youshoulddescribewhatitdoes andthe<ahref="http://openide.netbeans.org/tutorial/api-design.html#life">stabilitycategory</a> ofthisAPI.Youmayuse <pre> <apitype="export"group="property"name="id"category="private"url="http://..."> descriptionoftheproperty,whereitisused,whatitinfluence,etc. </api> </pre> </hint> </question>
-->
<answer id="exec-property">
<p>
<api name="willOpenProjects" category="friend" group="property"type="export">
Since version1.55 a special <a href="@JDK@@JDKMODULE_JAVA_DESKTOP@/java/beans/PropertyChangeEvent.html">
PropertyChangeEvent</a> is generated for benefit of <code>ide.ergonomics</code>
module by <a href="@TOP@/org/netbeans/api/project/ui/OpenProjects.html#getDefault()">
OpenProjects.getDefault()</a>. The property name of the event is <code>"willOpenProjects"</code>
and its new value contains an array of projects that will be opened (a type
<code>Project[]</code>). Ergonomics module uses this information to enable
modules that seem to provide support for technologies used in the about
to be opened projects.
</api>
</p>
</answer>
<!-- <questionid="lookup-lookup"when="init"> Doesyourmoduleuse<code>org.openide.util.Lookup</code> oranysimilartechnologytofindanycomponentstocommunicatewith?Whichones? <hint> Pleasedescribetheinterfacesyouaresearchingfor,where aredefined,whetheryouaresearchingforjustoneormoreofthem, iftheorderisimportant,etc.Alsoclassifythestabilityofsuch APIcontract. </hint> </question>
-->
<answer id="lookup-lookup">
<p>
Finds the Project UI module’s callbacks via lookup.
</p>
<p>
<api group="lookup" name="org.openide.loaders.CreateFromTemplateAttributesProviderInProjectLookup"type="import" category="official">
The attribute providers registered in project lookups. Collected template
attributes are exposed by
<code>org.openide.loaders.CreateFromTemplateAttributesProvider</code>.
</api>
</p>
</answer>
<!-- <questionid="lookup-register"when="final"> Doyouregisteranythingintolookupforothercodetofind? <hint> Doyouregisterusinglayerfileorusing<code>META-INF/services</code>? Whoissupposedtofindyourcomponent? </hint> </question>
-->
<answer id="lookup-register">
<p>
<api group="lookup" name="org.openide.loaders.CreateFromTemplateAttributesProvider"type="export" category="official">
The attributes provider is registered in <code>META-INF/services</code>. It collects
attributes from
<code>org.openide.loaders.CreateFromTemplateAttributesProvider</code>s
registered in project lookups.
It provides the
<a href="#property-project.license">project.license</a> and
<a href="#property-project.encoding">project.encoding</a>
attributes for file templates using scripting support.
</api>
</p>
<p>
<api group="property" name="project.license"type="export" category="official">
<code>project.license</code> attribute contains project license as <code>String</code> for newly created
<a href="#lookup-org.openide.loaders.CreateFromTemplateAttributesProvider">templates</a>.
It is used to import license templates.
The <code>default</code> is used if the attribute was not found in any
project lookup.
</api>
<api group="property" name="project.encoding"type="export" category="official">
<code>project.encoding</code> attribute contains the project encoding as <code>String</code> for newly created
<a href="#lookup-org.openide.loaders.CreateFromTemplateAttributesProvider">templates</a>.
The encoding of the parent folder of the new file is used if the attribute was not found in any
project lookup.
</api>
<api name="project.licensePath" category="stable" group="property"type="export"> contains <code>String</code> path to the license header include file, by default as path to <code>Templates/Licenses/license-${project.license}.txt</code> system filesystem location, but a local filesystem (file:) url is also supported. </api>
<!-- <questionid="resources-file"when="final"> Doesyourmoduleuse<code>java.io.File</code>directly? <hint> NetBeansprovidealogicalwrapperoverplainfilescalled <code>org.openide.filesystems.FileObject</code>that providesuniformaccesstosuchresourcesandisthepreferred waythatshouldbeused.Butofcoursetherecanbesituationswhen thisisnotsuitable. </hint> </question>
-->
<answer id="resources-file">
<p>
Only to open projects on disk, since <code>JFileChooser</code> is needed.
</p>
</answer>
<!-- <questionid="resources-layer"when="final"> Doesyourmoduleprovideownlayer?Doesitcreateanyfilesor foldersinit?Whatitistryingtocommunicatebythatandwithwhich components? <hint> NetBeansallowsautomaticanddeclarativeinstallationofresources bymodulelayers.Moduleregisterfilesintoappropriateplaces andothercomponentsusethatinformationtoperformtheirtask (buildmenu,toolbar,windowlayout,listoftemplates,setof options,etc.). </hint> </question>
-->
<answer id="resources-layer">
<api group="layer" name="RegisteredActions"type="export" category="devel">
<p>
Several project related actions are registered in the Actions folder in the layer.
Product branding is intended to use those actions to build main menu, toolbars and shortcuts.
</p>
<ul>
<li>Actions/Project/org-netbeans-modules-project-ui-BuildMainProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-CleanMainProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-RebuildMainProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-RunMainProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-DebugMainProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-TestProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-BuildProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-CleanProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-RebuildProject.instance</li>
<li>Actions/Project/org-netbeans-modules-project-ui-RunProject.instance</li>
</ul>
</api>
<api group="layer" name="RegistrationOfConvertors"type="export" category="friend">
This module provides an
<a href="@TOP@/org/netbeans/spi/project/ui/ProjectConvertor.Registration.html">annotation</a>
to register
<a href="@TOP@/org/netbeans/spi/project/ui/ProjectConvertor.html">project convertor</a>s
which generates registration in layer. This registration is used and
processed by <em>ide.ergonomics</em> module. The module especially relies
on the location of the registration (e.g. <code>Services/ProjectConvertors/</code>)
and <code>requiredFiles</code> and <code>delegate</code> attributes.
</api>
</answer>
<!-- <questionid="resources-read"when="final"> Doesyourmodulereadanyresourcesfromlayers?Forwhatpurpose? <hint> Asthisissomekindofintermoduledependency,itisakindofAPI. Pleasedescribeitandclassifyaccordingto <ahref="http://openide.netbeans.org/tutorial/api-design.html#categories"> commonstabilitycategories</a>. </hint> </question>
-->
<answer id="resources-read">
<api group="layer" name="ProjectTemplates"type="export" category="official">
<p>
New (or import) project wizards can be registered in a special folder
<code>Templates/Projects/</code>.
</p>
</api>
<api group="layer" name="ProjectActions"type="export" category="official">
<p>
Providers of generic project actions can register <code>Action</code> and <code>JSeparator</code>
instances in a special folder <code>Projects/Actions/</code>. So if any module wishes
to extend, hide or reorder some of them it can just register its actions there. Example:
</p>
<pre>
<folder name="Projects" >
<folder name="Actions" >
<file name="org-mymodule-MyAction.instance" >
<attr name="instanceCreate" stringvalue="org.mymodule.MyAction" />
</file>
</folder>
</folder>
</pre>
</api>
<!-- XXX link to Javadoc or something with definitions -->
<api group="layer" name="Templates"type="export" category="official">
<p>
File templates can be registered with various attributes, some specific to
the project system.
</p>
</api>
<api group="layer" name="TemplatesLicenses"type="export" category="official">
<p>
Under <code>Templates/Licenses</code> folder should be registered various license headers
that can be imported by templates using scripting. The recommended format of filename is
<code>license-[licensename].txt</code> e.g. <code>license-cddl.txt</code>.
</p>
</api>
</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.