How do I identify the "main project"?

Apache NetBeans Wiki Index

Note: These pages are being reviewed.

Project mainProject = org.netbeans.api.project.ui.OpenProjects.getDefault().getMainProject();

For this, you need to declare dependencies on Project UI API, Project API and File System API.

As an example usage of the above line of code, here is an action that display a JOptionPane containing the path to the main project, if a project is selected:

public final class ShowMainProjectAction extends CookieAction {

    protected void performAction(Node[] activatedNodes) {
        String projectPath = OpenProjects.getDefault().getMainProject().getProjectDirectory().getPath();
        JOptionPane.showMessageDialog(null, projectPath);

    protected int mode() {
        return CookieAction.MODE_EXACTLY_ONE;

    public String getName() {
        return NbBundle.getMessage(ShowMainProjectAction.class, "CTL_ShowMainProjectAction");

    protected Class[] cookieClasses() {
        return new Class[]{Project.class};

    protected void initialize() {
        // see org.openide.util.actions.SystemAction.iconResource() Javadoc for more details
        putValue("noIconInMenu", Boolean.TRUE);

    public HelpCtx getHelpCtx() {
        return HelpCtx.DEFAULT_HELP;

    protected boolean asynchronous() {
        return false;