Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectInformation;
import org.netbeans.api.project.ProjectManager;
import org.netbeans.api.project.SourceGroup;
import org.netbeans.api.project.Sources;
import org.netbeans.spi.project.ProjectFactory;
import org.netbeans.spi.project.ProjectState;
import org.netbeans.spi.project.SubprojectProvider;
Expand All @@ -65,6 +67,8 @@
import org.w3c.dom.Document;
import org.netbeans.api.project.ui.OpenProjects;
import org.netbeans.spi.project.ui.LogicalViewProvider;
import org.openide.awt.Notification;
import org.openide.awt.NotificationDisplayer;
import org.openide.filesystems.FileUtil;
import org.openide.loaders.DataFolder;
import org.openide.nodes.FilterNode;
Expand Down Expand Up @@ -520,14 +524,15 @@ public void onError(String message) {
} // end of FeatureOpenHook
} // end of FeatureNonProject
private static final class FeatureDelegate
implements Lookup.Provider, ProjectInformation, LogicalViewProvider {
implements Lookup.Provider, ProjectInformation, LogicalViewProvider, Sources {
private final FileObject dir;
private final PropertyChangeSupport support;
Lookup delegate;
private final InstanceContent ic = new InstanceContent();
private final Lookup hooks = new AbstractLookup(ic);
private final FeatureNonProject.FeatureOpenHook hook;
private List<RootNode> lvs;
private Notification openingPrj;


public FeatureDelegate(FileObject dir, FeatureNonProject feature) {
Expand Down Expand Up @@ -635,6 +640,38 @@ public Node findPath(Node root, Object target) {
}
return null;
}

@NbBundle.Messages({
"MSG_OnMissingSourceGroup=Project initialization requested",
"# {0} - name of the project",
"MSG_FullyInitializeProject=Should we open the {0} project and initialize it fully?",
})
@Override
public SourceGroup[] getSourceGroups(String type) {
var src = delegate.lookup(Sources.class);
if (src != null && src != this) {
return src.getSourceGroups(type);
}
Project prj = getLookup().lookup(Project.class);
if (prj != null && openingPrj == null) {
openingPrj = NotificationDisplayer.getDefault().notify(
Bundle.MSG_OnMissingSourceGroup(), loadIcon(),
Bundle.MSG_FullyInitializeProject(getDisplayName()),
(ev) -> {
OpenProjects.getDefault().open(new Project[] { prj }, false);
}
);
}
return new SourceGroup[0];
}

@Override
public void addChangeListener(ChangeListener listener) {
}

@Override
public void removeChangeListener(ChangeListener listener) {
}
}

private static final class RootNode extends FilterNode {
Expand Down
Loading