This is an automated email from the ASF dual-hosted git repository. vieiro pushed a commit to branch reviews/project-type-tutorial in repository https://gitbox.apache.org/repos/asf/netbeans-website.git
commit ed8e18df912587d5601e2bafafe17c636029a146 Author: Antonio Vieiro <[email protected]> AuthorDate: Tue Jan 4 21:03:35 2022 +0100 Project type tutorial review Reviewing the project type tutorial. --- .../src/content/tutorials/nbm-projecttype.asciidoc | 54 +++++++++------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/netbeans.apache.org/src/content/tutorials/nbm-projecttype.asciidoc b/netbeans.apache.org/src/content/tutorials/nbm-projecttype.asciidoc index baf0d63..0238669 100644 --- a/netbeans.apache.org/src/content/tutorials/nbm-projecttype.asciidoc +++ b/netbeans.apache.org/src/content/tutorials/nbm-projecttype.asciidoc @@ -29,29 +29,20 @@ :experimental: :description: NetBeans Project Type Module Tutorial - Apache NetBeans :keywords: Apache NetBeans Platform, Platform Tutorials, NetBeans Project Type Module Tutorial +:reviewed: 2022-01-04 This tutorial demonstrates how to create a new project type in a NetBeans Platform application. -*Before going further, make sure this is the tutorial you actually need!* +NOTE: Before going further, make sure this is the tutorial you actually need! * Rather than creating a new project type, you might want to extend an _existing_ project type instead, as described in the link:https://netbeans.apache.org/tutorials/nbm-projectextension.html[NetBeans Project Type Extension Module Tutorial]. -* For Maven-based NetBeans Platform applications, see link:http://netbeans.dzone.com/how-create-maven-nb-project-type[How to Create a Custom Project Type in a Mavenized NetBeans Platform Application]. +* For Maven-based NetBeans Platform applications, see link:http://web.archive.org/web/20130603022225/http://netbeans.dzone.com/how-create-maven-nb-project-type[How to Create a Custom Project Type in a Mavenized NetBeans Platform Application]. * If the projects for which you're creating a project type (whether on Ant or Maven based NetBeans Platform applications) need to use Ant as their build tool, you should use the link:https://netbeans.apache.org/tutorials/nbm-projecttypeant.html[NetBeans Ant-Based Project Type Module Tutorial] instead. -NOTE: This document uses NetBeans Platform 7.2 and NetBeans IDE 7.2. If you are using an earlier version, see link:71/nbm-projecttype.html[the previous version of this document]. +You will also make use of these icons, which you can right-click here and download: image:images/icon.png[] and image:images/sub-icon.png[] - - - - - -You will also make use of these icons, which you can right-click here and download: -image::images/icon.png[] -image::images/sub-icon.png[] - -For troubleshooting purposes, you are welcome to download the link:http://web.archive.org/web/20130305120247/http://java.net:80/projects/nb-api-samples/sources/api-samples/show/versions/7.2/tutorials/CustomerProjectType[completed tutorial source code]. - +For troubleshooting purposes, you are welcome to download the link:http://web.archive.org/web/20130305120247/http://java.net:80/projects/nb-api-samples/sources/api-samples/show/versions/7.2/tutorials/CustomerProjectType[complete tutorial source code]. == Introduction to Project Types @@ -59,7 +50,6 @@ A _project type_ is a NetBeans Platform term for a grouping of folders and files Our project type will be defined by the existence of a file named "customer.txt". The tutorial assumes you have available, on disk, multiple folders containing such a file, for example as illustrated below: - image::images/result-1.png[] As in the case of the folders named "customer1", "customer2", and "customer3" above, if a folder contains a file named "customer", with a "txt" extension, the NetBeans Platform will recognize the folder as a project. The user will be able to open the project into a NetBeans Platform application. The user will also be able to create new projects, via the New Projects window (Ctrl-Shift-N), which is where we will register some sample projects. @@ -150,7 +140,7 @@ We start by implementing the `` link:http://bits.netbeans.org/dev/javadoc/org-n 1. Change the default code to the following: -[source,java] +[source,java,subs="macros"] ---- import java.io.IOException; @@ -204,7 +194,7 @@ Next, we implement the `` link:http://bits.netbeans.org/dev/javadoc/org-netbean 1. We'll start with a simple skeleton implementation: -[source,java] +[source,java,subs="macros"] ---- import org.netbeans.api.project.Project; @@ -292,7 +282,7 @@ public class CustomerProject implements Project { * <<projectcustomizer,Creating and Registering the Project Customizer>> * <<projectsubtype,Creating and Registering the Project Subprojects>> - +[[projectinformation]] === Creating and Registering the Project Information In this section, you register minimum NetBeans project support, that is, you create and register a class that provides an icon and a display name for the project. @@ -305,7 +295,7 @@ In this section, you register minimum NetBeans project support, that is, you cre [start=2] 1. As an inner class of the ``CustomerProject`` class, define the project information as follows: -[source,java] +[source,java,subs="macros"] ---- private final class Info implements link:http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectapi/org/netbeans/api/project/ProjectInformation.html[ProjectInformation] { @@ -382,6 +372,7 @@ image::images/result-2.png[] Now that you can open folders as projects into your application, let's work on the project's logical view. The logical view is displayed in the Projects window. The Projects window typically only shows the most important files or folders that the user should work with, together with the related display names, icons, and popup actions. +[[projectlogicalview]] === Creating and Registering the Project Logical View In this section, you define the logical view of your project, as shown in the Projects window of your application. @@ -391,7 +382,7 @@ In this section, you define the logical view of your project, as shown in the Pr [start=1] 1. As an inner class of the ``CustomerProject`` class, define the project logical view as follows: -[source,java] +[source,java,subs="macros"] ---- class CustomerProjectLogicalView implements link:http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectuiapi/org/netbeans/spi/project/ui/LogicalViewProvider.html[LogicalViewProvider] { @@ -507,7 +498,7 @@ image::images/result-4.png[] The project node now shows the display name, icon, and popup actions that you defined. - +[[projectchildren]] === Creating and Registering the Project Node Children In this section, you learn how to define which folders and files should be displayed in the logical view, that is, the Projects window. Currently, you are showing all folders and files because the children of the project node are defined by ``FilterNode.Children(node)`` , which means "display all the children of the node". @@ -517,13 +508,12 @@ In this section, you learn how to define which folders and files should be displ [start=1] 1. Change the constructor of the ProjectNode as follows: -[source,java] +[source,java, subs="macros"] ---- public ProjectNode(Node node, CustomerProject project) throws DataObjectNotFoundException { - super(node, - * link:http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectuiapi/org/netbeans/spi/project/ui/support/NodeFactorySupport.html#createCompositeChildren(org.netbeans.api.project.Project, java.lang.String)[NodeFactorySupport.createCompositeChildren]( + super(node, link:pass:[http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectuiapi/org/netbeans/spi/project/ui/support/NodeFactorySupport.html#createCompositeChildren(org.netbeans.api.project.Project, java.lang.String)][NodeFactorySupport.createCompositeChildren]( project, "Projects/org-customer-project/Nodes"),* // new FilterNode.Children(node), @@ -559,7 +549,7 @@ public Lookup getLookup() { [start=3] 1. Create a new Java class ``TextsNodeFactory`` in a new package ``org.customer.project.nodes`` as follows, while taking special note of the ``@NodeFactory.Registration`` annotation: -[source,java] +[source,java, subs="macros"] ---- package org.customer.project.nodes; @@ -648,7 +638,7 @@ image::images/text-folder-1.png[] An important point to realize in this section is that the `` link:http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectuiapi/org/netbeans/spi/project/ui/support/NodeFactory.Registration.html[@NodeFactory.Registration]`` annotation can be used to register new child nodes of the customer project node, either within the current module or via external modules. In this way, the logical view of your project is extensible, that is, logical views can be pluggable, if an extension p [...] - +[[projectcustomizer]] === Creating and Registering the Project Customizer In this section, you learn how to create a pluggable customizer. When the user right-clicks the project node, they will see a Properties menu item. When they click it, the customizer will open. The categories in the customizer can be contributed by external modules, that is, the customizer will be created to be extensible. @@ -725,7 +715,7 @@ image::images/customizer-3.png[] [start=5] 1. Now we create the infrastructure for our pluggable Project Properties window: -[source,java] +[source,java,subs="macros"] ---- package org.customer.project; @@ -805,7 +795,7 @@ public Lookup getLookup() { [start=7] 1. In a new package ``org.customer.project.panels`` , create a new Java class named ``GeneralCustomerProperties`` , with this content: -[source,java] +[source,java,subs="macros"] ---- package org.customer.project.panels; @@ -858,7 +848,7 @@ When you click the OK button, you will see a message in the status bar. The mess You now have the start of a project customizer. - +[[projectcustomizer]] === Creating and Registering the Project Subprojects In this section, you learn how to create new project types that are nested within other project types: @@ -877,7 +867,7 @@ Above, you can see that the "customer3" project has several folders. One of thos [start=2] 1. Create a `` link:http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectapi/org/netbeans/spi/project/SubprojectProvider.html[SubprojectProvider]`` that looks inside the customer project's "reports" folder for projects of your type: -[source,java] +[source,java,subs="macros"] ---- public class ReportsSubprojectProvider implements link:http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-projectapi/org/netbeans/spi/project/SubprojectProvider.html[SubprojectProvider] { @@ -951,7 +941,7 @@ public Lookup getLookup() { [start=4] 1. Similar to the ``TextsNodeFactory`` that you created earlier in this tutorial, create a new Java class ``ReportsSubProjectNodeFactory`` as follows, while again taking special note of the ``@NodeFactory.Registration`` annotation, which registers the ``NodeFactory`` into the logical view of the customer project: -[source,java] +[source,java,subs="macros"] ---- @NodeFactory.Registration(projectType = "org-customer-project", position = 20) @@ -1045,7 +1035,7 @@ Using the instructions in this subsection, you can create a richly structured an In this section, you have defined the basic infrastructure of a new type of project in your NetBeans Platform application. - +[[projectsubtype]] == Registering the Project Type as Project Sample In this section, we create some project samples that make use of our project type. We also register these project samples in the New Project window of our application. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
