blob: 4d4194edfcff670e00fe27980e4a36762130edfb [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_181) on Fri Sep 14 11:35:44 BST 2018 -->
<title>Overview (Base Project UI API )</title>
<meta name="date" content="2018-09-14">
<link rel="stylesheet" type="text/css" href="javadoc.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Overview (Base Project UI API )";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-files/index-1.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">org.netbeans.modules.projectuiapi.base/1 1.87.1 9</div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 class="title">Base Project UI API <br/><span style='font-style:normal; font-size:medium; font-weight:normal; background-color:#ffffff;'><a href='http://wiki.netbeans.org/API_Stability#Official' target='_blank'>Official</a></span></h1>
</div>
<div class="header">
<div class="subTitle">
<div class="block">
BaseProjectUIAPI</div>
</div>
<p>See: <a href="#overview.description">Description</a></p>
</div>
<div class="contentContainer">
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Base Project UI API table, listing packages, and an explanation">
<caption><span>Base Project UI API </span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="org/netbeans/api/project/ui/package-summary.html">org.netbeans.api.project.ui</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="org/netbeans/spi/project/ui/package-summary.html">org.netbeans.spi.project.ui</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="org/netbeans/spi/project/ui/support/package-summary.html">org.netbeans.spi.project.ui.support</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</div>
<div class="contentContainer"><a name="overview.description">
<!-- -->
</a>
<div class="block"><p>
<ul>
<li>
BaseProjectUIAPI
<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>
</li>
<li>
BaseProjectUIAPI-provider
<p>
Callbacks intended to let the Project UI module plug in implementations of
APIs defined here. Uses implementation dependencies.
</p>
</li>
</ul>
</p>
<h3>What is New (see <a href="apichanges.html">all changes</a>)?</h3>
<ul>
<!--Search for dates that are later or equal to 1997-09-01 in
.-->
<!--Checking date 2016-5-24 with count of newer 0--><!--year ok-->
<li>May 24 '16 <a href="apichanges.html#ProjectConvertors-delegatingLookup">Added a support method into <code>ProjectConvertors</code> creating a <code>Lookup</code> delegating to the owner project.</a>
<p>
<p>
Added a support method into <code>ProjectConvertors</code> creating a <code>Lookup</code> delegating to the owner project.
</p>
</p>
</li>
<!--Checking date 2015-7-21 with count of newer 1--><!--year ok-->
<li>Jul 21 '15 <a href="apichanges.html#ProjectConvertors-lookup">Added support methods into <code>ProjectConvertors</code> for easier convertor project implementation.</a>
<p>
<p>
Added support methods into the <code>ProjectConvertors</code> for easier <code>ProjectConvertor</code> lookup
and queries implementation.
</p>
</p>
</li>
<!--Checking date 2015-7-16 with count of newer 2--><!--year ok-->
<li>Jul 16 '15 <a href="apichanges.html#ProjectConvertors-unregister">Added <code>unregisterConvertorProject</code>into <code>ProjectConvertors</code>.</a>
<p>
<p>
Added <code>unregisterConvertorProject</code>into <code>ProjectConvertors</code> to allow
project generators to unload the artifical convertor project before creating a new one.
</p>
</p>
</li>
<!--Checking date 2015-7-15 with count of newer 3--><!--year ok-->
<li>Jul 15 '15 <a href="apichanges.html#ProjectConvertors">Added <code>ProjectConvertors</code> the support for <code>ProjectConvertor</code>s.</a>
<p>
<p>
Added <code>ProjectConvertors</code> providing a support for <code>ProjectConvertor</code>s.
</p>
</p>
</li>
<!--Checking date 2014-10-31 with count of newer 4--><!--year ok-->
<li>Oct 31 '14 <a href="apichanges.html#ProjectConvertor">Added <code>ProjectConvertor</code> adding an ability to convert a folder into a project.</a>
<p>
<p>
Added an ability to convert a folder into a project.
For a folder accepted by the <code>ProjectConvertor</code> an artifical in memory
project is created causing the folder looks like a regular <code>Project</code> in the UI.
The folder is converted into a regular <code>Project</code> when the artificial <code>Project</code>
is opened.
</p>
</p>
</li>
<!--Checking date 2014-5-26 with count of newer 5--><!--Skipped as the amount of changes is too big-->
</ul>
<h3>Use Cases</h3>
<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>
<h3>Exported Interfaces</h3>
This table lists all of the module exported APIs
with
defined stability classifications. It is generated
based on answers to questions about the architecture
of the module. <a href="architecture-summary.html">Read them all</a>...
<a name="group-java">
<h5>Group of java interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
<tr class="tabler">
<td>BaseProjectUIAPI</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-BaseProjectUIAPI">
<p></p>
<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>
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>BaseProjectUIAPI-provider</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Friend">Friend</a></td><td><a name="java-BaseProjectUIAPI-provider">
<p></p>
<p>
Callbacks intended to let the Project UI module plug in implementations of
APIs defined here. Uses implementation dependencies.
</p>
<p></p>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<a name="group-property">
<h5>Group of property interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
<tr class="tabler">
<td>willOpenProjects</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Friend">Friend</a></td><td><a name="property-willOpenProjects">
<p></p>
Since version 1.55 a special <a href="http://download.oracle.com/javase/8/docs/api/java/beans/PropertyChangeEvent.html" shape="rect">
PropertyChangeEvent</a> is generated for benefit of <code>ide.ergonomics</code>
module by <a href="org/netbeans/api/project/ui/OpenProjects.html#getDefault--" shape="rect">
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.
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>project.license</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="property-project.license">
<p></p>
<code>project.license</code> attribute contains project license as <code>String</code> for newly created
<a href="#lookup-org.openide.loaders.CreateFromTemplateAttributesProvider" shape="rect">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.
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>project.encoding</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="property-project.encoding">
<p></p>
<code>project.encoding</code> attribute contains the project encoding as <code>String</code> for newly created
<a href="#lookup-org.openide.loaders.CreateFromTemplateAttributesProvider" shape="rect">templates</a>.
The encoding of the parent folder of the new file is used if the attribute was not found in any
project lookup.
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>project.licensePath</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Stable">Stable</a></td><td><a name="property-project.licensePath">
<p></p> 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. <p></p>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<a name="group-lookup">
<h5>Group of lookup interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
<tr class="tabler">
<td>org.openide.loaders.CreateFromTemplateAttributesProvider</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="lookup-org.openide.loaders.CreateFromTemplateAttributesProvider">
<p></p>
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" shape="rect">project.license</a> and
<a href="#property-project.encoding" shape="rect">project.encoding</a>
attributes for file templates using scripting support.
<p></p>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<a name="group-layer">
<h5>Group of layer interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
<tr class="tabler">
<td>RegisteredActions</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Devel">Under Development</a></td><td><a name="layer-RegisteredActions">
<p></p>
<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>
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>RegistrationOfConvertors</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Friend">Friend</a></td><td><a name="layer-RegistrationOfConvertors">
<p></p>
This module provides an
<a href="org/netbeans/spi/project/ui/ProjectConvertor.Registration.html" shape="rect">annotation</a>
to register
<a href="org/netbeans/spi/project/ui/ProjectConvertor.html" shape="rect">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.
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>ProjectTemplates</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="layer-ProjectTemplates">
<p></p>
<p>
New (or import) project wizards can be registered in a special folder
<code>Templates/Projects/</code>.
</p>
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>ProjectActions</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="layer-ProjectActions">
<p></p>
<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 xml:space="preserve">
&lt;folder name="Projects" &gt;
&lt;folder name="Actions" &gt;
&lt;file name="org-mymodule-MyAction.instance" &gt;
&lt;attr name="instanceCreate" stringvalue="org.mymodule.MyAction" /&gt;
&lt;/file&gt;
&lt;/folder&gt;
&lt;/folder&gt;
</pre>
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>Templates</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="layer-Templates">
<p></p>
<p>
File templates can be registered with various attributes, some specific to
the project system.
</p>
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>TemplatesLicenses</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="layer-TemplatesLicenses">
<p></p>
<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>
<p></p>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<h3>Implementation Details</h3>
<h5>What do other modules need to do to declare a dependency on this one, in addition to or instead of a plain module dependency?</h5>
Nothing.
<p>
Read more about the implementation in the <a href="architecture-summary.html">answers to
architecture questions</a>.
</p></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-files/index-1.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">org.netbeans.modules.projectuiapi.base/1 1.87.1 9</div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?overview-summary.html" target="_top">Frames</a></li>
<li><a href="overview-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><span class="footnote">Built on September 14 2018.&nbsp;&nbsp;|&nbsp;&nbsp; Copyright &#169; 2017-2018 Apache Software Foundation. All Rights Reserved.</span></small></p>
</body>
</html>