<!-- <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">
<api group="java" name="FreeformProjectSPI"type="export" category="friend">
<p>
Provides SPI for domain specific modules to plug their functionality into
freeform project type.
</p>
</api>
<p>
The behavior of the project is entirely controlled by its
<code>project.xml</code>:
</p>
<ol>
<li>
<api group="dtd" name="freeform-project-general.xsd"type="export" category="official"url="http://www.netbeans.org/ns/freeform-project/2.xsd">
<p> XML schema for the general section of the project type. Users are allowed
to modify this section by hand and can refer to this schema for available
syntax.
</p>
</api>
</li>
</ol>
</answer>
<!-- <questionid="arch-quality"when="init"> Howwillthe<ahref="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a> ofyourcodebetestedand howarefutureregressionsgoingtobeprevented? <hint> Whatkindoftestingdo youwanttouse?Howmuchfunctionality,inwhichareas, shouldbecoveredbythetests? </hint> </question>
-->
<answer id="arch-quality">
<p>
Unit test coverage should be high, except for the GUI portions which may be
covered by functional tests in the future.
</p>
</answer>
<!-- <questionid="arch-usecases"when="init"> Describethemain<ahref="http://openide.netbeans.org/tutorial/api-design.html#usecase"> usecases</a>ofthenewAPI.Whowilluseitunder whatcircumstances?Whatkindofcodewouldtypicallyneedtobewritten tousethemodule? </question>
-->
<answer id="arch-usecases">
<p>
See the <a href="http://projects.netbeans.org/buildsys/design.html#freeform">Architecture
Sketch</a> for justifications of the module.
</p>
<p>
The SPI is used to plug additional functionality provided by domain specific
extensions into freeform project type. The base freeform project defines
attributes of project such as its location or Ant script and defines mapping
of IDE actions to Ant script targets. Extensions can enhance base project in
several ways:
</p>
<ol>
<li>
<p>
can extend project's lookup. That allows project to provide implementation
of domain specific queries, e.g. J2SE extension can plug in an implementation
of <code>ClassPathProvider</code>.
</p>
</li>
<li>
<p>
can add UI panel into project's customizer in which user can customize
domain-specific features
</p>
</li>
<li>
<p>
can provide a new source folder visualization style, e.g. J2SE extension
can register "package" style which presents source folder as Java packages
</p>
</li>
<li>
<p>
can list extra build targets to be shown in the target mapping customizer,
e.g. the Web extension may want to map the Deploy (in IDE) action to
an Ant script target
</p>
</li>
</ol>
<p>
Examples of implementation can be found in
<a href="http://www.netbeans.org/source/browse/~checkout~/java/freeform/src/org/netbeans/modules/java/freeform/JavaProjectNature.java?content-type=text/plain">java</a>
or
<a href="http://www.netbeans.org/source/browse/~checkout~/web/freeform/src/org/netbeans/modules/web/freeform/WebProjectNature.java?content-type=text/plain">web</a>
modules.
</p>
<p>
Extensions have access to project's metadata and based on that can decide
whether and how to enhance the freeform project.
</p>
</answer>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
<p>
This module supplies a project type for projects with existing Ant scripts
with no further constraints. Unlike “canned” project types, the
module does not assist the user in creating or maintaining the build script.
Instead, it just provides a NetBeans project wrapper around the existing build
functionality and source structure. Most of what it does falls into four
categories:
</p>
<ol>
<li>
<p>
Provides a logical view for the project and binds NetBeans action commands
to Ant build targets.
</p>
</li>
<li>
<p>
Provides extendable project customizer.
</p>
</li>
<li>
<p>
Answers various <dfn>queries</dfn> from other parts of the IDE about the
structure and intended behavior of the project.
</p>
</li>
<li>
<p>
Provides SPI for pluging in extensions supporting domain specific
development, e.g. J2SE development, Web development, etc.
</p>
</li>
</ol>
<p>
Specifications:
</p>
<ol>
<li>
<a href="http://projects.netbeans.org/buildsys/freeform-project-ui-spec.html">UI Specification</a>
</li>
<li>
<a href="http://projects.netbeans.org/buildsys/design.html#freeform">Architecture Sketch</a>
</li>
</ol>
</answer>
<!-- <questionid="compat-i18n"when="impl"> Isyourmodulecorrectlyinternationalized? <hint> Correctinternationalizationmeansthatitobeysinstructions at<ahref="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html"> NetBeansI18Npages</a>. </hint> </question>
-->
<answer id="compat-i18n">
<p>
Module has 100% I18N coverage. The generated <code>project.xml</code> may not
be internationalized, but most functionality is available through the GUI
anyway.
</p>
</answer>
<!-- <questionid="compat-standards"when="init"> Doesthemoduleimplementordefineanystandards?Isthe implementationexactordoesitdeviatesomehow? </question>
-->
<answer id="compat-standards">
<p>
Defines its project syntax. There is no known independent format for this.
</p>
</answer>
<!-- <questionid="dep-nb"when="init"> WhatotherNetBeansprojectsandmodulesdoesthisonedependon? <hint> Ifyouwant,describesuchprojectsasimportedAPIsusing the<code><apiname="identification"type="importorexport"category="stable"url="whereisthedescription"/></code> </hint> </question>
-->
<answer id="dep-nb">
<ul>
<li>
<api group="java" name="AntModuleAPI"type="import" category="official">
<p>
For running Ant targets, finding targets, etc.
</p>
</api>
</li>
<li>
<api group="java" name="AntProjectAPI"type="import" category="official">
<p>
The SPI is used heavily to implement various queries, evaluate Ant
properties at development time, etc.
</p>
</api>
</li>
<li>
<api group="java" name="ProjectAPI"type="import" category="official">
<p>
Basic project API.
</p>
</api>
</li>
<li>
<api group="java" name="ProjectUIAPI"type="import" category="official">
<p>
Used to provide the logical view and register the project import wizards.
</p>
</api>
</li>
<li>
<api group="java" name="GeneralQueriesAPI"type="import" category="official">
<p>
For checking file collocation.
</p>
</api>
</li>
<li>
<api group="java" name="Datasystems"type="import" category="official">
<p>
Used to provide the logical view, etc.
</p>
</api>
</li>
<li>
<api group="java" name="Filesystems"type="import" category="official">
<p>
Used for many purposes.
</p>
</api>
</li>
<li>
<api group="java" name="Nodes"type="import" category="official">
<p>
Used to show the logical view.
</p>
</api>
</li>
<li>
<api group="java" name="Wizards"type="import" category="official">
<p>
For the new project wizards.
</p>
</api>
</li>
</ul>
</answer>
<!-- <questionid="perf-huge_dialogs"when="final"> Doesyourmodulecontainanydialogsorwizardswithalargenumberof GUIcontrolssuchascomboboxes,lists,trees,ortextareas? </question>
-->
<answer id="perf-huge_dialogs">
<p>
No. There is a customizer dialog which is composed from panels provided by
individual freeform extensions, but these are presented as separate tabs.
</p>
</answer>
<!-- <questionid="perf-spi"when="init"> Howtheperformanceofthepluggedincodewillbeenforced? <hint> Ifyouallowforeigncodetobepluggedintoyourownmodule,how doyouenforcethatitwillbehavecorrectlyandquicklyandwillnot negativelyinfluencetheperformanceofyourownmodule? </hint> </question>
-->
<answer id="perf-spi">
<p>
Exported SPI are of friend stability with limited number of clients whose
performance can be tested.
</p>
</answer>
<!-- <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>
Where needed to evaluate Ant properties or satisfy queries.
</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="AntFreeformLogicalViewProvider"type="export" category="official">
<p> "Projects/org-netbeans-modules-ant-freeform/Nodes" folder's content is used to construct the project's child nodes.
It's content is expected to be <code>NodeFactory</code> instances.
</p>
</api>
<api group="layer" name="AntFreeformLookup"type="export" category="official">
<p> "Projects/org-netbeans-modules-ant-freeform/Lookup" folder's content is used to construct the project's additional lookup.
It's content is expected to be <code>LookupProvider</code> instances. Freeform project provides <code>LookupMerger</code>s
for <code>ActionProvider</code>, <code>PrivilegedTemplates</code> and <code>RecommendedTemplates</code>. Implementations added by 3rd parties
will be merged into a single instance in the project's lookup.
</p>
</api>
<api group="layer" name="AntFreeformCustomizer"type="export" category="official">
<p> "Projects/org-netbeans-modules-ant-freeform/Customizer" folder's content is used to construct the project's customizer.
It's content is expected to be <code>ProjectCustomizer.CompositeCategoryProvider</code> instances.
The lookup passed to the panels contains an instance of <code>Project</code>, <code>AuxiliaryConfiguration</code> and <code>ProjectAccessor</code>
Each panel is assumed to save it's own changed content by setting an <code>ActionListener</code> on it's <code>ProjectCutomizer.Category</code>
</p>
</api>
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.27Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-28)
¤
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.