final ExplorerManager mgr = ep.getExplorerManager();
ChildFactory<?> kids = new AllJSFiles( getProjectDirectory() );
Children ch = Children.create( kids, true );
Node root = new AbstractNode( ch );
mgr.setRootContext( root );
final SwingValidationGroup grp = SwingValidationGroup.create();
ValidationPanel pnl = new ValidationPanel( grp );
pnl.setInnerComponent( ep );
class X extends ValidationListener<Void> implements PropertyChangeListener {
X () {
super( Void.class, ValidationUI.NO_OP, null );
}
@Override
public void propertyChange ( PropertyChangeEvent pce ) {
grp.performValidation();
}
@Override
protected void performValidation ( Problems prblms ) {
Node[] selection = mgr.getSelectedNodes();
if (selection != null && selection.length == 1) {
return;
}
prblms.add( new Problem( NbBundle.getMessage( NodeJSProject.class, "PROBLEM_NO_MAIN_FILE" ), Severity.FATAL ) ); //NOI18N
}
}
X x = new X();
mgr.addPropertyChangeListener( x );
grp.addItem( x, true );
DialogBuilder b = new DialogBuilder( NodeJSProject.class ).setModal( true ).setContent( ep ).setValidationGroup( grp ).setTitle( NbBundle.getMessage( NodeJSProject.class, "CHOOSE_NO_MAIN_FILE" ) ).setDialogType( DialogType.QUESTION );
if (b.showDialog( NotifyDescriptor.OK_OPTION ) && mgr.getSelectedNodes().length == 1) {
Node n = mgr.getSelectedNodes()[0];
FileObject fo = n.getLookup().lookup( DataObject.class ).getPrimaryFile();
return fo;