Apache NetBeans
Apache NetBeans
Latest release

Apache NetBeans 22

Download

How do I identify the "main project"?

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};
    }

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

    public HelpCtx getHelpCtx() {
        return HelpCtx.DEFAULT_HELP;
    }

    @Override
    protected boolean asynchronous() {
        return false;
    }
}