This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 71515
Collapse All | Expand All

(-)a/java.api.common/src/org/netbeans/modules/java/api/common/project/BaseActionProvider.java (-70 / +89 lines)
Lines 71-76 Link Here
71
import java.util.Set;
71
import java.util.Set;
72
import java.util.StringTokenizer;
72
import java.util.StringTokenizer;
73
import java.util.TreeSet;
73
import java.util.TreeSet;
74
import java.util.concurrent.Callable;
74
import java.util.concurrent.atomic.AtomicBoolean;
75
import java.util.concurrent.atomic.AtomicBoolean;
75
import java.util.concurrent.atomic.AtomicReference;
76
import java.util.concurrent.atomic.AtomicReference;
76
import java.util.logging.Level;
77
import java.util.logging.Level;
Lines 99-104 Link Here
99
import org.netbeans.api.java.source.ui.ScanDialog;
100
import org.netbeans.api.java.source.ui.ScanDialog;
100
import org.netbeans.api.project.FileOwnerQuery;
101
import org.netbeans.api.project.FileOwnerQuery;
101
import org.netbeans.api.project.Project;
102
import org.netbeans.api.project.Project;
103
import org.netbeans.api.project.ProjectActions;
102
import org.netbeans.api.project.ProjectInformation;
104
import org.netbeans.api.project.ProjectInformation;
103
import org.netbeans.api.project.ProjectManager;
105
import org.netbeans.api.project.ProjectManager;
104
import org.netbeans.api.project.ProjectUtils;
106
import org.netbeans.api.project.ProjectUtils;
Lines 114-120 Link Here
114
import org.netbeans.modules.java.api.common.util.CommonProjectUtils;
116
import org.netbeans.modules.java.api.common.util.CommonProjectUtils;
115
import org.netbeans.spi.java.classpath.ClassPathProvider;
117
import org.netbeans.spi.java.classpath.ClassPathProvider;
116
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
118
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
117
import org.netbeans.spi.project.ActionProvider;
119
import org.netbeans.spi.project.ActionProvider2;
118
import org.netbeans.spi.project.ProjectConfiguration;
120
import org.netbeans.spi.project.ProjectConfiguration;
119
import org.netbeans.spi.project.SingleMethod;
121
import org.netbeans.spi.project.SingleMethod;
120
import org.netbeans.spi.project.support.ant.AntProjectHelper;
122
import org.netbeans.spi.project.support.ant.AntProjectHelper;
Lines 150-156 Link Here
150
 *
152
 *
151
 * @since org.netbeans.modules.java.api.common/1 1.20
153
 * @since org.netbeans.modules.java.api.common/1 1.20
152
 */
154
 */
153
public abstract class BaseActionProvider implements ActionProvider {
155
public abstract class BaseActionProvider implements ActionProvider2 {
154
    public static final String AUTOMATIC_BUILD_TAG = ".netbeans_automatic_build";
156
    public static final String AUTOMATIC_BUILD_TAG = ".netbeans_automatic_build";
155
157
156
    private static final Logger LOG = Logger.getLogger(BaseActionProvider.class.getName());
158
    private static final Logger LOG = Logger.getLogger(BaseActionProvider.class.getName());
Lines 381-406 Link Here
381
        return project;
383
        return project;
382
    }
384
    }
383
385
384
    @Override
386
    @Override public Callable<Boolean> prepare(final String command, final Lookup context) {
385
    public void invokeAction( final String command, final Lookup context ) throws IllegalArgumentException {
387
        if (ProjectActions.COMMAND_DELETE.equals(command)) {
386
        if (COMMAND_DELETE.equals(command)) {
388
            return new Callable<Boolean>() {
387
            DefaultProjectOperations.performDefaultDeleteOperation(project);
389
                @Override public Boolean call() throws Exception {
388
            return ;
390
                    DefaultProjectOperations.performDefaultDeleteOperation(project);
391
                    return true;
392
                }
393
            };
389
        }
394
        }
390
395
391
        if (COMMAND_COPY.equals(command)) {
396
        if (ProjectActions.COMMAND_COPY.equals(command)) {
392
            DefaultProjectOperations.performDefaultCopyOperation(project);
397
            return new Callable<Boolean>() {
393
            return ;
398
                @Override public Boolean call() throws Exception {
399
                    DefaultProjectOperations.performDefaultCopyOperation(project);
400
                    return true;
401
                }
402
            };
394
        }
403
        }
395
404
396
        if (COMMAND_MOVE.equals(command)) {
405
        if (ProjectActions.COMMAND_MOVE.equals(command)) {
397
            DefaultProjectOperations.performDefaultMoveOperation(project);
406
            return new Callable<Boolean>() {
398
            return ;
407
                @Override public Boolean call() throws Exception {
408
                    DefaultProjectOperations.performDefaultMoveOperation(project);
409
                    return true;
410
                }
411
            };
399
        }
412
        }
400
413
401
        if (COMMAND_RENAME.equals(command)) {
414
        if (ProjectActions.COMMAND_RENAME.equals(command)) {
402
            DefaultProjectOperations.performDefaultRenameOperation(project, null);
415
            return new Callable<Boolean>() {
403
            return ;
416
                @Override public Boolean call() throws Exception {
417
                    DefaultProjectOperations.performDefaultRenameOperation(project, null);
418
                    return true;
419
                }
420
            };
421
        }
422
423
        FileObject buildXml = findBuildXml();
424
        if (buildXml == null || !buildXml.isValid()) {
425
            return null;
426
        }
427
        if (Arrays.asList(getActionsDisabledForQuickRun()).contains(command)
428
            && isCompileOnSaveEnabled()
429
            && !allowAntBuild()) {
430
            return null;
431
        }
432
        if (!isActionEnabled(command, context)) {
433
            return null;
404
        }
434
        }
405
435
406
        final boolean isCompileOnSaveEnabled = isCompileOnSaveEnabled();
436
        final boolean isCompileOnSaveEnabled = isCompileOnSaveEnabled();
Lines 433-439 Link Here
433
                    return;
463
                    return;
434
                }
464
                }
435
                if (isCompileOnSaveEnabled) {
465
                if (isCompileOnSaveEnabled) {
436
                    if (COMMAND_BUILD.equals(command) && !allowAntBuild()) {
466
                    if (ProjectActions.COMMAND_BUILD.equals(command) && !allowAntBuild()) {
437
                        showBuildActionWarning(context);
467
                        showBuildActionWarning(context);
438
                        return ;
468
                        return ;
439
                    }
469
                    }
Lines 465-470 Link Here
465
                                execProperties.put("applet.url", url);
495
                                execProperties.put("applet.url", url);
466
                                execProperties.put(JavaRunner.PROP_EXECUTE_FILE, file);
496
                                execProperties.put(JavaRunner.PROP_EXECUTE_FILE, file);
467
                                prepareSystemProperties(execProperties, false);
497
                                prepareSystemProperties(execProperties, false);
498
                                // XXX block
468
                                JavaRunner.execute(targetNames[0], execProperties);
499
                                JavaRunner.execute(targetNames[0], execProperties);
469
                            }
500
                            }
470
                        } catch (IOException ex) {
501
                        } catch (IOException ex) {
Lines 472-478 Link Here
472
                        }
503
                        }
473
                        return;
504
                        return;
474
                    }
505
                    }
475
                    if (!isServerExecution() && (COMMAND_RUN.equals(command) || COMMAND_DEBUG.equals(command) || COMMAND_DEBUG_STEP_INTO.equals(command))) {
506
                    if (!isServerExecution() && (ProjectActions.COMMAND_RUN.equals(command) || ProjectActions.COMMAND_DEBUG.equals(command) || ProjectActions.COMMAND_DEBUG_STEP_INTO.equals(command))) {
476
                        prepareSystemProperties(execProperties, false);
507
                        prepareSystemProperties(execProperties, false);
477
                        bypassAntBuildScript(command, context, execProperties);
508
                        bypassAntBuildScript(command, context, execProperties);
478
                        return ;
509
                        return ;
Lines 480-488 Link Here
480
                    // for example RUN_SINGLE Java file with Servlet must be run on server and not locally
511
                    // for example RUN_SINGLE Java file with Servlet must be run on server and not locally
481
                    boolean serverExecution = p.getProperty(PROPERTY_RUN_SINGLE_ON_SERVER) != null;
512
                    boolean serverExecution = p.getProperty(PROPERTY_RUN_SINGLE_ON_SERVER) != null;
482
                    p.remove(PROPERTY_RUN_SINGLE_ON_SERVER);
513
                    p.remove(PROPERTY_RUN_SINGLE_ON_SERVER);
483
                    if (!serverExecution && (COMMAND_RUN_SINGLE.equals(command) || COMMAND_DEBUG_SINGLE.equals(command))) {
514
                    if (!serverExecution && (ProjectActions.COMMAND_RUN_SINGLE.equals(command) || ProjectActions.COMMAND_DEBUG_SINGLE.equals(command))) {
484
                        prepareSystemProperties(execProperties, false);
515
                        prepareSystemProperties(execProperties, false);
485
                        if (COMMAND_RUN_SINGLE.equals(command)) {
516
                        if (ProjectActions.COMMAND_RUN_SINGLE.equals(command)) {
486
                            execProperties.put(JavaRunner.PROP_CLASSNAME, p.getProperty("run.class"));
517
                            execProperties.put(JavaRunner.PROP_CLASSNAME, p.getProperty("run.class"));
487
                        } else {
518
                        } else {
488
                            execProperties.put(JavaRunner.PROP_CLASSNAME, p.getProperty("debug.class"));
519
                            execProperties.put(JavaRunner.PROP_CLASSNAME, p.getProperty("debug.class"));
Lines 490-503 Link Here
490
                        bypassAntBuildScript(command, context, execProperties);
521
                        bypassAntBuildScript(command, context, execProperties);
491
                        return;
522
                        return;
492
                    }
523
                    }
493
                    if (COMMAND_TEST_SINGLE.equals(command) || COMMAND_DEBUG_TEST_SINGLE.equals(command)) {
524
                    if (ProjectActions.COMMAND_TEST_SINGLE.equals(command) || ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equals(command)) {
494
                        FileObject[] files = findTestSources(context, true);
525
                        FileObject[] files = findTestSources(context, true);
495
                        try {
526
                        try {
496
                            prepareSystemProperties(execProperties, true);
527
                            prepareSystemProperties(execProperties, true);
497
                            execProperties.put(JavaRunner.PROP_EXECUTE_FILE, files[0]);
528
                            execProperties.put(JavaRunner.PROP_EXECUTE_FILE, files[0]);
498
                            execProperties.put("tmp.dir", updateHelper.getAntProjectHelper().resolvePath(evaluator.getProperty(ProjectProperties.BUILD_DIR)));   //NOI18N
529
                            execProperties.put("tmp.dir", updateHelper.getAntProjectHelper().resolvePath(evaluator.getProperty(ProjectProperties.BUILD_DIR)));   //NOI18N
499
                            updateJavaRunnerClasspath(command, execProperties);
530
                            updateJavaRunnerClasspath(command, execProperties);
500
                            JavaRunner.execute(COMMAND_TEST_SINGLE.equals(command) ? JavaRunner.QUICK_TEST : JavaRunner.QUICK_TEST_DEBUG, execProperties);
531
                            // XXX block
532
                            JavaRunner.execute(ProjectActions.COMMAND_TEST_SINGLE.equals(command) ? JavaRunner.QUICK_TEST : JavaRunner.QUICK_TEST_DEBUG, execProperties);
501
                        } catch (IOException ex) {
533
                        } catch (IOException ex) {
502
                            Exceptions.printStackTrace(ex);
534
                            Exceptions.printStackTrace(ex);
503
                        }
535
                        }
Lines 510-515 Link Here
510
                            execProperties.put(JavaRunner.PROP_EXECUTE_FILE, methodSpec.getFile());
542
                            execProperties.put(JavaRunner.PROP_EXECUTE_FILE, methodSpec.getFile());
511
                            execProperties.put("tmp.dir",updateHelper.getAntProjectHelper().resolvePath(evaluator.getProperty(ProjectProperties.BUILD_DIR)));   //NOI18N
543
                            execProperties.put("tmp.dir",updateHelper.getAntProjectHelper().resolvePath(evaluator.getProperty(ProjectProperties.BUILD_DIR)));   //NOI18N
512
                            updateJavaRunnerClasspath(command, execProperties);
544
                            updateJavaRunnerClasspath(command, execProperties);
545
                            // XXX block
513
                            JavaRunner.execute(command.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) ? JavaRunner.QUICK_TEST : JavaRunner.QUICK_TEST_DEBUG,
546
                            JavaRunner.execute(command.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) ? JavaRunner.QUICK_TEST : JavaRunner.QUICK_TEST_DEBUG,
514
                                                  execProperties);
547
                                                  execProperties);
515
                        } catch (IOException ex) {
548
                        } catch (IOException ex) {
Lines 547-552 Link Here
547
                            cb2.antTargetInvocationStarted(command, context);
580
                            cb2.antTargetInvocationStarted(command, context);
548
                        }
581
                        }
549
                        try {
582
                        try {
583
                            // XXX block
550
                            ActionUtils.runTarget(buildFo, targetNames, p).addTaskListener(new TaskListener() {
584
                            ActionUtils.runTarget(buildFo, targetNames, p).addTaskListener(new TaskListener() {
551
                                @Override
585
                                @Override
552
                                public void taskFinished(Task task) {
586
                                public void taskFinished(Task task) {
Lines 584-598 Link Here
584
618
585
            private List<String> runJvmargsIde() {
619
            private List<String> runJvmargsIde() {
586
                StartupExtender.StartMode mode;
620
                StartupExtender.StartMode mode;
587
                if (command.equals(COMMAND_RUN) || command.equals(COMMAND_RUN_SINGLE)) {
621
                if (command.equals(ProjectActions.COMMAND_RUN) || command.equals(ProjectActions.COMMAND_RUN_SINGLE)) {
588
                    mode = StartupExtender.StartMode.NORMAL;
622
                    mode = StartupExtender.StartMode.NORMAL;
589
                } else if (command.equals(COMMAND_DEBUG) || command.equals(COMMAND_DEBUG_SINGLE) || command.equals(COMMAND_DEBUG_STEP_INTO)) {
623
                } else if (command.equals(ProjectActions.COMMAND_DEBUG) || command.equals(ProjectActions.COMMAND_DEBUG_SINGLE) || command.equals(ProjectActions.COMMAND_DEBUG_STEP_INTO)) {
590
                    mode = StartupExtender.StartMode.DEBUG;
624
                    mode = StartupExtender.StartMode.DEBUG;
591
                } else if (command.equals("profile")) {
625
                } else if (command.equals("profile")) {
592
                    mode = StartupExtender.StartMode.PROFILE;
626
                    mode = StartupExtender.StartMode.PROFILE;
593
                } else if (command.equals(COMMAND_TEST) || command.equals(COMMAND_TEST_SINGLE)) {
627
                } else if (command.equals(ProjectActions.COMMAND_TEST) || command.equals(ProjectActions.COMMAND_TEST_SINGLE)) {
594
                    mode = StartupExtender.StartMode.TEST_NORMAL;
628
                    mode = StartupExtender.StartMode.TEST_NORMAL;
595
                } else if (command.equals(COMMAND_DEBUG_TEST_SINGLE)) {
629
                } else if (command.equals(ProjectActions.COMMAND_DEBUG_TEST_SINGLE)) {
596
                    mode = StartupExtender.StartMode.TEST_DEBUG;
630
                    mode = StartupExtender.StartMode.TEST_DEBUG;
597
                } else if (command.equals("profile-test-single")) {
631
                } else if (command.equals("profile-test-single")) {
598
                    mode = StartupExtender.StartMode.TEST_PROFILE;
632
                    mode = StartupExtender.StartMode.TEST_PROFILE;
Lines 672-678 Link Here
672
        LOG.log(Level.FINE, "COMMAND: {0}", command);       //NOI18N
706
        LOG.log(Level.FINE, "COMMAND: {0}", command);       //NOI18N
673
        String[] targetNames = new String[0];
707
        String[] targetNames = new String[0];
674
        Map<String,String[]> targetsFromConfig = loadTargetsFromConfig();
708
        Map<String,String[]> targetsFromConfig = loadTargetsFromConfig();
675
        if ( command.equals( COMMAND_COMPILE_SINGLE ) ) {
709
        if ( command.equals( ProjectActions.COMMAND_COMPILE_SINGLE) ) {
676
            FileObject[] sourceRoots = projectSourceRoots.getRoots();
710
            FileObject[] sourceRoots = projectSourceRoots.getRoots();
677
            FileObject[] files = findSourcesAndPackages( context, sourceRoots);
711
            FileObject[] files = findSourcesAndPackages( context, sourceRoots);
678
            boolean recursive = (context.lookup(NonRecursiveFolder.class) == null);
712
            boolean recursive = (context.lookup(NonRecursiveFolder.class) == null);
Lines 690-705 Link Here
690
                    return null;
724
                    return null;
691
                }
725
                }
692
            }
726
            }
693
        } else if ( command.equals( COMMAND_TEST ) ){
727
        } else if ( command.equals( ProjectActions.COMMAND_TEST) ){
694
            p.setProperty("ignore.failing.tests", "true");  //NOI18N
728
            p.setProperty("ignore.failing.tests", "true");  //NOI18N
695
            targetNames = getCommands().get(command);
729
            targetNames = getCommands().get(command);
696
        } else if ( command.equals( COMMAND_TEST_SINGLE ) ) {
730
        } else if ( command.equals( ProjectActions.COMMAND_TEST_SINGLE) ) {
697
            final FileObject[] files = findTestSources(context, true);
731
            final FileObject[] files = findTestSources(context, true);
698
            if (files == null) {
732
            if (files == null) {
699
                return null;
733
                return null;
700
            }
734
            }
701
            targetNames = setupTestSingle(p, files);            
735
            targetNames = setupTestSingle(p, files);            
702
        } else if ( command.equals( COMMAND_DEBUG_TEST_SINGLE ) ) {
736
        } else if ( command.equals( ProjectActions.COMMAND_DEBUG_TEST_SINGLE) ) {
703
            final FileObject[] files = findTestSources(context, true);
737
            final FileObject[] files = findTestSources(context, true);
704
            if (files == null) {
738
            if (files == null) {
705
                return null;
739
                return null;
Lines 737-743 Link Here
737
            }
771
            }
738
            p.setProperty("fix.includes", path); // NOI18N
772
            p.setProperty("fix.includes", path); // NOI18N
739
            p.setProperty("fix.classes", classes); // NOI18N
773
            p.setProperty("fix.classes", classes); // NOI18N
740
        } else if (!isServerExecution() && (command.equals (COMMAND_RUN) || command.equals(COMMAND_DEBUG) || command.equals(COMMAND_DEBUG_STEP_INTO))) {
774
        } else if (!isServerExecution() && (command.equals (ProjectActions.COMMAND_RUN) || command.equals(ProjectActions.COMMAND_DEBUG) || command.equals(ProjectActions.COMMAND_DEBUG_STEP_INTO))) {
741
            String config = evaluator.getProperty(ProjectProperties.PROP_PROJECT_CONFIGURATION_CONFIG);
775
            String config = evaluator.getProperty(ProjectProperties.PROP_PROJECT_CONFIGURATION_CONFIG);
742
            String path;
776
            String path;
743
            if (config == null || config.length() == 0) {
777
            if (config == null || config.length() == 0) {
Lines 788-794 Link Here
788
                    ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, "Error while saving project: " + ioe);
822
                    ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, "Error while saving project: " + ioe);
789
                }
823
                }
790
            }
824
            }
791
            if (!command.equals(COMMAND_RUN) && /* XXX should ideally look up proper mainClass in evaluator x config */ mainClass != null) {
825
            if (!command.equals(ProjectActions.COMMAND_RUN) && /* XXX should ideally look up proper mainClass in evaluator x config */ mainClass != null) {
792
                p.setProperty("debug.class", mainClass); // NOI18N
826
                p.setProperty("debug.class", mainClass); // NOI18N
793
            }
827
            }
794
            String[] targets = targetsFromConfig.get(command);
828
            String[] targets = targetsFromConfig.get(command);
Lines 797-803 Link Here
797
                throw new IllegalArgumentException(command);
831
                throw new IllegalArgumentException(command);
798
            }
832
            }
799
            prepareDirtyList(p, false);
833
            prepareDirtyList(p, false);
800
        } else if (command.equals (COMMAND_RUN_SINGLE) || command.equals (COMMAND_DEBUG_SINGLE)) {
834
        } else if (command.equals (ProjectActions.COMMAND_RUN_SINGLE) || command.equals (ProjectActions.COMMAND_DEBUG_SINGLE)) {
801
            FileObject[] files = findTestSources(context, false);
835
            FileObject[] files = findTestSources(context, false);
802
            FileObject[] rootz = projectTestRoots.getRoots();
836
            FileObject[] rootz = projectTestRoots.getRoots();
803
            boolean isTest = true;
837
            boolean isTest = true;
Lines 872-878 Link Here
872
                            return null;
906
                            return null;
873
                        }
907
                        }
874
                        p.setProperty("applet.url", url.toString()); // NOI18N
908
                        p.setProperty("applet.url", url.toString()); // NOI18N
875
                        if (command.equals (COMMAND_RUN_SINGLE)) {
909
                        if (command.equals (ProjectActions.COMMAND_RUN_SINGLE)) {
876
                            targetNames = new String[] {"run-applet"}; // NOI18N
910
                            targetNames = new String[] {"run-applet"}; // NOI18N
877
                        } else {
911
                        } else {
878
                            p.setProperty("debug.class", clazz); // NOI18N
912
                            p.setProperty("debug.class", clazz); // NOI18N
Lines 882-888 Link Here
882
                        List<String> alternativeTargetNames = new ArrayList<String>();
916
                        List<String> alternativeTargetNames = new ArrayList<String>();
883
                        if (isTest) {
917
                        if (isTest) {
884
                            //Fallback to normal (non-main-method-based) unit test run
918
                            //Fallback to normal (non-main-method-based) unit test run
885
                            if (command.equals(COMMAND_RUN_SINGLE)) {
919
                            if (command.equals(ProjectActions.COMMAND_RUN_SINGLE)) {
886
                                targetNames = setupTestSingle(p, files);
920
                                targetNames = setupTestSingle(p, files);
887
                            } else {
921
                            } else {
888
                                targetNames = setupDebugTestSingle(p, files);
922
                                targetNames = setupDebugTestSingle(p, files);
Lines 912-925 Link Here
912
                            }
946
                            }
913
                        }
947
                        }
914
                    }
948
                    }
915
                    if (command.equals (COMMAND_RUN_SINGLE)) {
949
                    if (command.equals (ProjectActions.COMMAND_RUN_SINGLE)) {
916
                        p.setProperty("run.class", clazz); // NOI18N
950
                        p.setProperty("run.class", clazz); // NOI18N
917
                        String[] targets = targetsFromConfig.get(command);
951
                        String[] targets = targetsFromConfig.get(command);
918
                        targetNames = (targets != null) ? targets : (isTest ? new String[] { "run-test-with-main" } : getCommands().get(COMMAND_RUN_SINGLE));
952
                        targetNames = (targets != null) ? targets : (isTest ? new String[] { "run-test-with-main" } : getCommands().get(ProjectActions.COMMAND_RUN_SINGLE));
919
                    } else {
953
                    } else {
920
                        p.setProperty("debug.class", clazz); // NOI18N
954
                        p.setProperty("debug.class", clazz); // NOI18N
921
                        String[] targets = targetsFromConfig.get(command);
955
                        String[] targets = targetsFromConfig.get(command);
922
                        targetNames = (targets != null) ? targets : (isTest ? new String[] {"debug-test-with-main"} : getCommands().get(COMMAND_DEBUG_SINGLE));
956
                        targetNames = (targets != null) ? targets : (isTest ? new String[] {"debug-test-with-main"} : getCommands().get(ProjectActions.COMMAND_DEBUG_SINGLE));
923
                    }
957
                    }
924
                }
958
                }
925
            }
959
            }
Lines 929-942 Link Here
929
                if (clazz == null) {
963
                if (clazz == null) {
930
                    return null;
964
                    return null;
931
                }
965
                }
932
                if (command.equals (COMMAND_RUN_SINGLE)) {
966
                if (command.equals (ProjectActions.COMMAND_RUN_SINGLE)) {
933
                        p.setProperty("run.class", clazz); // NOI18N
967
                        p.setProperty("run.class", clazz); // NOI18N
934
                        String[] targets = targetsFromConfig.get(command);
968
                        String[] targets = targetsFromConfig.get(command);
935
                        targetNames = (targets != null) ? targets : (isTest ? new String[] { "run-test-with-main" } : getCommands().get(COMMAND_RUN_SINGLE));    //NOI18N
969
                        targetNames = (targets != null) ? targets : (isTest ? new String[] { "run-test-with-main" } : getCommands().get(ProjectActions.COMMAND_RUN_SINGLE));    //NOI18N
936
                } else {
970
                } else {
937
                    p.setProperty("debug.class", clazz); // NOI18N
971
                    p.setProperty("debug.class", clazz); // NOI18N
938
                    String[] targets = targetsFromConfig.get(command);
972
                    String[] targets = targetsFromConfig.get(command);
939
                    targetNames = (targets != null) ? targets : (isTest ? new String[] {"debug-test-with-main"} : getCommands().get(COMMAND_DEBUG_SINGLE));      //NOI18N
973
                    targetNames = (targets != null) ? targets : (isTest ? new String[] {"debug-test-with-main"} : getCommands().get(ProjectActions.COMMAND_DEBUG_SINGLE));      //NOI18N
940
                }
974
                }
941
            }
975
            }
942
        } else {
976
        } else {
Lines 944-959 Link Here
944
            targetNames = (targets != null) ? targets : getCommands().get(command);
978
            targetNames = (targets != null) ? targets : getCommands().get(command);
945
            if (targetNames == null) {
979
            if (targetNames == null) {
946
                String buildTarget = "false".equalsIgnoreCase(evaluator.getProperty(ProjectProperties.DO_JAR)) ? "compile" : "jar"; // NOI18N
980
                String buildTarget = "false".equalsIgnoreCase(evaluator.getProperty(ProjectProperties.DO_JAR)) ? "compile" : "jar"; // NOI18N
947
                if (command.equals(COMMAND_BUILD)) {
981
                if (command.equals(ProjectActions.COMMAND_BUILD)) {
948
                    targetNames = new String[] {buildTarget};
982
                    targetNames = new String[] {buildTarget};
949
                    prepareDirtyList(p, true);
983
                    prepareDirtyList(p, true);
950
                } else if (command.equals(COMMAND_REBUILD)) {
984
                } else if (command.equals(ProjectActions.COMMAND_REBUILD)) {
951
                    targetNames = new String[] {"clean", buildTarget}; // NOI18N
985
                    targetNames = new String[] {"clean", buildTarget}; // NOI18N
952
                } else {
986
                } else {
953
                    throw new IllegalArgumentException(command);
987
                    throw new IllegalArgumentException(command);
954
                }
988
                }
955
            }
989
            }
956
            if (COMMAND_CLEAN.equals(command)) {
990
            if (ProjectActions.COMMAND_CLEAN.equals(command)) {
957
                //After clean, rebuild all
991
                //After clean, rebuild all
958
                dirty = null;
992
                dirty = null;
959
            }
993
            }
Lines 1118-1153 Link Here
1118
        return !new File(buildClassesFile, AUTOMATIC_BUILD_TAG).exists();
1152
        return !new File(buildClassesFile, AUTOMATIC_BUILD_TAG).exists();
1119
    }
1153
    }
1120
1154
1121
    @Override
1155
    private boolean isActionEnabled(String command, Lookup context) {
1122
    public boolean isActionEnabled( String command, Lookup context ) {
1156
        if ( command.equals( ProjectActions.COMMAND_COMPILE_SINGLE) ) {
1123
        if (COMMAND_DELETE.equals(command) 
1124
            || COMMAND_MOVE.equals(command)
1125
            || COMMAND_COPY.equals(command)
1126
            || COMMAND_RENAME.equals(command)) {
1127
            return true;
1128
        }
1129
        FileObject buildXml = findBuildXml();
1130
        if (  buildXml == null || !buildXml.isValid()) {
1131
            return false;
1132
        }
1133
        if (   Arrays.asList(getActionsDisabledForQuickRun()).contains(command)
1134
            && isCompileOnSaveEnabled()
1135
            && !allowAntBuild()) {
1136
            return false;
1137
        }
1138
        if ( command.equals( COMMAND_COMPILE_SINGLE ) ) {
1139
            return findSourcesAndPackages( context, projectSourceRoots.getRoots()) != null
1157
            return findSourcesAndPackages( context, projectSourceRoots.getRoots()) != null
1140
                    || findSourcesAndPackages( context, projectTestRoots.getRoots()) != null;
1158
                    || findSourcesAndPackages( context, projectTestRoots.getRoots()) != null;
1141
        }
1159
        }
1142
        else if ( command.equals( COMMAND_TEST_SINGLE ) ) {
1160
        else if ( command.equals( ProjectActions.COMMAND_TEST_SINGLE) ) {
1143
            FileObject[] fos = findTestSources(context, true);
1161
            FileObject[] fos = findTestSources(context, true);
1144
            return fos != null && fos.length == 1;
1162
            return fos != null && fos.length == 1;
1145
        }
1163
        }
1146
        else if ( command.equals( COMMAND_DEBUG_TEST_SINGLE ) ) {
1164
        else if ( command.equals( ProjectActions.COMMAND_DEBUG_TEST_SINGLE) ) {
1147
            FileObject[] fos = findTestSources(context, true);
1165
            FileObject[] fos = findTestSources(context, true);
1148
            return fos != null && fos.length == 1;
1166
            return fos != null && fos.length == 1;
1149
        } else if (command.equals(COMMAND_RUN_SINGLE) ||
1167
        } else if (command.equals(ProjectActions.COMMAND_RUN_SINGLE) ||
1150
                        command.equals(COMMAND_DEBUG_SINGLE) ||
1168
                        command.equals(ProjectActions.COMMAND_DEBUG_SINGLE) ||
1151
                        command.equals(JavaProjectConstants.COMMAND_DEBUG_FIX)) {
1169
                        command.equals(JavaProjectConstants.COMMAND_DEBUG_FIX)) {
1152
            FileObject fos[] = findSources(context);
1170
            FileObject fos[] = findSources(context);
1153
            if (fos != null && fos.length == 1) {
1171
            if (fos != null && fos.length == 1) {
Lines 1356-1368 Link Here
1356
        boolean run = true;
1374
        boolean run = true;
1357
        boolean hasMainMethod = true;
1375
        boolean hasMainMethod = true;
1358
1376
1359
        if (COMMAND_RUN.equals(command) || COMMAND_DEBUG.equals(command) || COMMAND_DEBUG_STEP_INTO.equals(command)) {
1377
        if (ProjectActions.COMMAND_RUN.equals(command) || ProjectActions.COMMAND_DEBUG.equals(command) || ProjectActions.COMMAND_DEBUG_STEP_INTO.equals(command)) {
1360
            final String mainClass = evaluator.getProperty(ProjectProperties.MAIN_CLASS);
1378
            final String mainClass = evaluator.getProperty(ProjectProperties.MAIN_CLASS);
1361
1379
1362
            p.put(JavaRunner.PROP_CLASSNAME, mainClass);
1380
            p.put(JavaRunner.PROP_CLASSNAME, mainClass);
1363
            p.put(JavaRunner.PROP_EXECUTE_CLASSPATH, callback.getProjectSourcesClassPath(ClassPath.EXECUTE));
1381
            p.put(JavaRunner.PROP_EXECUTE_CLASSPATH, callback.getProjectSourcesClassPath(ClassPath.EXECUTE));
1364
            
1382
            
1365
            if (COMMAND_DEBUG_STEP_INTO.equals(command)) {
1383
            if (ProjectActions.COMMAND_DEBUG_STEP_INTO.equals(command)) {
1366
                p.put("stopclassname", mainClass);
1384
                p.put("stopclassname", mainClass);
1367
            }
1385
            }
1368
        } else {
1386
        } else {
Lines 1381-1389 Link Here
1381
1399
1382
            p.put(JavaRunner.PROP_EXECUTE_FILE, files[0]);
1400
            p.put(JavaRunner.PROP_EXECUTE_FILE, files[0]);
1383
        }
1401
        }
1384
        boolean debug = COMMAND_DEBUG.equals(command) || COMMAND_DEBUG_SINGLE.equals(command) || COMMAND_DEBUG_STEP_INTO.equals(command);
1402
        boolean debug = ProjectActions.COMMAND_DEBUG.equals(command) || ProjectActions.COMMAND_DEBUG_SINGLE.equals(command) || ProjectActions.COMMAND_DEBUG_STEP_INTO.equals(command);
1385
        try {
1403
        try {
1386
            updateJavaRunnerClasspath(command, p);
1404
            updateJavaRunnerClasspath(command, p);
1405
            // XXX block
1387
            if (run) {
1406
            if (run) {
1388
                copyMultiValue(ProjectProperties.APPLICATION_ARGS, p);
1407
                copyMultiValue(ProjectProperties.APPLICATION_ARGS, p);
1389
                JavaRunner.execute(debug ? JavaRunner.QUICK_DEBUG : JavaRunner.QUICK_RUN, p);
1408
                JavaRunner.execute(debug ? JavaRunner.QUICK_DEBUG : JavaRunner.QUICK_RUN, p);
Lines 1780-1786 Link Here
1780
        }
1799
        }
1781
1800
1782
        if (result == cleanAndBuild) {
1801
        if (result == cleanAndBuild) {
1783
            invokeAction(COMMAND_REBUILD, context);
1802
            invokeAction(ProjectActions.COMMAND_REBUILD, context);
1784
            return ;
1803
            return ;
1785
        }
1804
        }
1786
1805
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEActionProvider.java (-44 / +44 lines)
Lines 53-58 Link Here
53
import java.util.logging.Logger;
53
import java.util.logging.Logger;
54
import org.netbeans.api.annotations.common.NonNull;
54
import org.netbeans.api.annotations.common.NonNull;
55
import org.netbeans.api.java.project.JavaProjectConstants;
55
import org.netbeans.api.java.project.JavaProjectConstants;
56
import org.netbeans.api.project.ProjectActions;
56
import org.netbeans.modules.java.api.common.ant.UpdateHelper;
57
import org.netbeans.modules.java.api.common.ant.UpdateHelper;
57
import org.netbeans.modules.java.api.common.project.ProjectProperties;
58
import org.netbeans.modules.java.api.common.project.ProjectProperties;
58
import org.netbeans.modules.java.api.common.project.BaseActionProvider;
59
import org.netbeans.modules.java.api.common.project.BaseActionProvider;
Lines 72-120 Link Here
72
73
73
    // Commands available from J2SE project
74
    // Commands available from J2SE project
74
    private static final String[] supportedActions = {
75
    private static final String[] supportedActions = {
75
        COMMAND_BUILD,
76
        ProjectActions.COMMAND_BUILD,
76
        COMMAND_CLEAN,
77
        ProjectActions.COMMAND_CLEAN,
77
        COMMAND_REBUILD,
78
        ProjectActions.COMMAND_REBUILD,
78
        COMMAND_COMPILE_SINGLE,
79
        ProjectActions.COMMAND_COMPILE_SINGLE,
79
        COMMAND_RUN,
80
        ProjectActions.COMMAND_RUN,
80
        COMMAND_RUN_SINGLE,
81
        ProjectActions.COMMAND_RUN_SINGLE,
81
        COMMAND_DEBUG,
82
        ProjectActions.COMMAND_DEBUG,
82
        COMMAND_DEBUG_SINGLE,
83
        ProjectActions.COMMAND_DEBUG_SINGLE,
83
        JavaProjectConstants.COMMAND_JAVADOC,
84
        JavaProjectConstants.COMMAND_JAVADOC,
84
        COMMAND_TEST,
85
        ProjectActions.COMMAND_TEST,
85
        COMMAND_TEST_SINGLE,
86
        ProjectActions.COMMAND_TEST_SINGLE,
86
        COMMAND_DEBUG_TEST_SINGLE,
87
        ProjectActions.COMMAND_DEBUG_TEST_SINGLE,
87
        SingleMethod.COMMAND_RUN_SINGLE_METHOD,
88
        SingleMethod.COMMAND_RUN_SINGLE_METHOD,
88
        SingleMethod.COMMAND_DEBUG_SINGLE_METHOD,
89
        SingleMethod.COMMAND_DEBUG_SINGLE_METHOD,
89
        JavaProjectConstants.COMMAND_DEBUG_FIX,
90
        JavaProjectConstants.COMMAND_DEBUG_FIX,
90
        COMMAND_DEBUG_STEP_INTO,
91
        ProjectActions.COMMAND_DEBUG_STEP_INTO,
91
        COMMAND_DELETE,
92
        ProjectActions.COMMAND_DELETE,
92
        COMMAND_COPY,
93
        ProjectActions.COMMAND_COPY,
93
        COMMAND_MOVE,
94
        ProjectActions.COMMAND_MOVE,
94
        COMMAND_RENAME,
95
        ProjectActions.COMMAND_RENAME,
95
    };
96
    };
96
97
97
98
98
    private static final String[] platformSensitiveActions = {
99
    private static final String[] platformSensitiveActions = {
99
        COMMAND_BUILD,
100
        ProjectActions.COMMAND_BUILD,
100
        COMMAND_REBUILD,
101
        ProjectActions.COMMAND_REBUILD,
101
        COMMAND_COMPILE_SINGLE,
102
        ProjectActions.COMMAND_COMPILE_SINGLE,
102
        COMMAND_RUN,
103
        ProjectActions.COMMAND_RUN,
103
        COMMAND_RUN_SINGLE,
104
        ProjectActions.COMMAND_RUN_SINGLE,
104
        COMMAND_DEBUG,
105
        ProjectActions.COMMAND_DEBUG,
105
        COMMAND_DEBUG_SINGLE,
106
        ProjectActions.COMMAND_DEBUG_SINGLE,
106
        JavaProjectConstants.COMMAND_JAVADOC,
107
        JavaProjectConstants.COMMAND_JAVADOC,
107
        COMMAND_TEST,
108
        ProjectActions.COMMAND_TEST,
108
        COMMAND_TEST_SINGLE,
109
        ProjectActions.COMMAND_TEST_SINGLE,
109
        COMMAND_DEBUG_TEST_SINGLE,
110
        ProjectActions.COMMAND_DEBUG_TEST_SINGLE,
110
        SingleMethod.COMMAND_RUN_SINGLE_METHOD,
111
        SingleMethod.COMMAND_RUN_SINGLE_METHOD,
111
        SingleMethod.COMMAND_DEBUG_SINGLE_METHOD,
112
        SingleMethod.COMMAND_DEBUG_SINGLE_METHOD,
112
        JavaProjectConstants.COMMAND_DEBUG_FIX,
113
        JavaProjectConstants.COMMAND_DEBUG_FIX,
113
        COMMAND_DEBUG_STEP_INTO,
114
        ProjectActions.COMMAND_DEBUG_STEP_INTO,
114
    };
115
    };
115
116
116
    private static final String[] actionsDisabledForQuickRun = {
117
    private static final String[] actionsDisabledForQuickRun = {
117
        COMMAND_COMPILE_SINGLE,
118
        ProjectActions.COMMAND_COMPILE_SINGLE,
118
        JavaProjectConstants.COMMAND_DEBUG_FIX,
119
        JavaProjectConstants.COMMAND_DEBUG_FIX,
119
    };
120
    };
120
121
Lines 133-158 Link Here
133
                new BaseActionProvider.CallbackImpl(project.getClassPathProvider()));
134
                new BaseActionProvider.CallbackImpl(project.getClassPathProvider()));
134
        commands = new HashMap<String,String[]>();
135
        commands = new HashMap<String,String[]>();
135
        // treated specially: COMMAND_{,RE}BUILD
136
        // treated specially: COMMAND_{,RE}BUILD
136
        commands.put(COMMAND_CLEAN, new String[] {"clean"}); // NOI18N
137
        commands.put(ProjectActions.COMMAND_CLEAN, new String[] {"clean"}); // NOI18N
137
        commands.put(COMMAND_COMPILE_SINGLE, new String[] {"compile-single"}); // NOI18N
138
        commands.put(ProjectActions.COMMAND_COMPILE_SINGLE, new String[] {"compile-single"}); // NOI18N
138
        commands.put(COMMAND_RUN, new String[] {"run"}); // NOI18N
139
        commands.put(ProjectActions.COMMAND_RUN, new String[] {"run"}); // NOI18N
139
        commands.put(COMMAND_RUN_SINGLE, new String[] {"run-single"}); // NOI18N
140
        commands.put(ProjectActions.COMMAND_RUN_SINGLE, new String[] {"run-single"}); // NOI18N
140
        commands.put(COMMAND_DEBUG, new String[] {"debug"}); // NOI18N
141
        commands.put(ProjectActions.COMMAND_DEBUG, new String[] {"debug"}); // NOI18N
141
        commands.put(COMMAND_DEBUG_SINGLE, new String[] {"debug-single"}); // NOI18N
142
        commands.put(ProjectActions.COMMAND_DEBUG_SINGLE, new String[] {"debug-single"}); // NOI18N
142
        commands.put(JavaProjectConstants.COMMAND_JAVADOC, new String[] {"javadoc"}); // NOI18N
143
        commands.put(JavaProjectConstants.COMMAND_JAVADOC, new String[] {"javadoc"}); // NOI18N
143
        commands.put(COMMAND_TEST, new String[] {"test"}); // NOI18N
144
        commands.put(ProjectActions.COMMAND_TEST, new String[] {"test"}); // NOI18N
144
        commands.put(COMMAND_TEST_SINGLE, new String[] {"test-single"}); // NOI18N
145
        commands.put(ProjectActions.COMMAND_TEST_SINGLE, new String[] {"test-single"}); // NOI18N
145
        commands.put(COMMAND_DEBUG_TEST_SINGLE, new String[] {"debug-test"}); // NOI18N
146
        commands.put(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, new String[] {"debug-test"}); // NOI18N
146
        commands.put(JavaProjectConstants.COMMAND_DEBUG_FIX, new String[] {"debug-fix"}); // NOI18N
147
        commands.put(JavaProjectConstants.COMMAND_DEBUG_FIX, new String[] {"debug-fix"}); // NOI18N
147
        commands.put(COMMAND_DEBUG_STEP_INTO, new String[] {"debug-stepinto"}); // NOI18N
148
        commands.put(ProjectActions.COMMAND_DEBUG_STEP_INTO, new String[] {"debug-stepinto"}); // NOI18N
148
149
149
        this.bkgScanSensitiveActions = new HashSet<String>(Arrays.asList(
150
        this.bkgScanSensitiveActions = new HashSet<String>(Arrays.asList(
150
            COMMAND_RUN,
151
            ProjectActions.COMMAND_RUN,
151
            COMMAND_RUN_SINGLE,
152
            ProjectActions.COMMAND_RUN_SINGLE,
152
            COMMAND_DEBUG,
153
            ProjectActions.COMMAND_DEBUG,
153
            COMMAND_DEBUG_SINGLE,
154
            ProjectActions.COMMAND_DEBUG_SINGLE,
154
            COMMAND_DEBUG_STEP_INTO
155
            ProjectActions.COMMAND_DEBUG_STEP_INTO));
155
        ));
156
156
157
        this.needJavaModelActions = new HashSet<String>(Arrays.asList(
157
        this.needJavaModelActions = new HashSet<String>(Arrays.asList(
158
            JavaProjectConstants.COMMAND_DEBUG_FIX
158
            JavaProjectConstants.COMMAND_DEBUG_FIX
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEConfigurationProvider.java (-2 / +3 lines)
Lines 59-64 Link Here
59
import java.util.Set;
59
import java.util.Set;
60
import java.util.logging.Level;
60
import java.util.logging.Level;
61
import java.util.logging.Logger;
61
import java.util.logging.Logger;
62
import org.netbeans.api.project.ProjectActions;
62
import org.netbeans.api.project.ProjectManager;
63
import org.netbeans.api.project.ProjectManager;
63
import org.netbeans.modules.java.api.common.project.ProjectProperties;
64
import org.netbeans.modules.java.api.common.project.ProjectProperties;
64
import org.netbeans.modules.java.j2seproject.ui.customizer.CustomizerProviderImpl;
65
import org.netbeans.modules.java.j2seproject.ui.customizer.CustomizerProviderImpl;
Lines 260-267 Link Here
260
    }
261
    }
261
262
262
    public boolean configurationsAffectAction(String command) {
263
    public boolean configurationsAffectAction(String command) {
263
        return command.equals(ActionProvider.COMMAND_RUN) ||
264
        return command.equals(ProjectActions.COMMAND_RUN) ||
264
               command.equals(ActionProvider.COMMAND_DEBUG);
265
               command.equals(ProjectActions.COMMAND_DEBUG);
265
    }
266
    }
266
267
267
    public void addPropertyChangeListener(PropertyChangeListener lst) {
268
    public void addPropertyChangeListener(PropertyChangeListener lst) {
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProject.java (-1 lines)
Lines 393-399 Link Here
393
            LookupMergerSupport.createJFBLookupMerger(),
393
            LookupMergerSupport.createJFBLookupMerger(),
394
            QuerySupport.createBinaryForSourceQueryImplementation(this.sourceRoots, this.testRoots, this.helper, this.evaluator()), //Does not use APH to get/put properties/cfgdata
394
            QuerySupport.createBinaryForSourceQueryImplementation(this.sourceRoots, this.testRoots, this.helper, this.evaluator()), //Does not use APH to get/put properties/cfgdata
395
            QuerySupport.createAnnotationProcessingQuery(this.helper, this.evaluator(), ProjectProperties.ANNOTATION_PROCESSING_ENABLED, ProjectProperties.ANNOTATION_PROCESSING_ENABLED_IN_EDITOR, ProjectProperties.ANNOTATION_PROCESSING_RUN_ALL_PROCESSORS, ProjectProperties.ANNOTATION_PROCESSING_PROCESSORS_LIST, ProjectProperties.ANNOTATION_PROCESSING_SOURCE_OUTPUT, ProjectProperties.ANNOTATION_PROCESSING_PROCESSOR_OPTIONS),
395
            QuerySupport.createAnnotationProcessingQuery(this.helper, this.evaluator(), ProjectProperties.ANNOTATION_PROCESSING_ENABLED, ProjectProperties.ANNOTATION_PROCESSING_ENABLED_IN_EDITOR, ProjectProperties.ANNOTATION_PROCESSING_RUN_ALL_PROCESSORS, ProjectProperties.ANNOTATION_PROCESSING_PROCESSORS_LIST, ProjectProperties.ANNOTATION_PROCESSING_SOURCE_OUTPUT, ProjectProperties.ANNOTATION_PROCESSING_PROCESSOR_OPTIONS),
396
            LookupProviderSupport.createActionProviderMerger(),
397
            WhiteListQueryMergerSupport.createWhiteListQueryMerger()
396
            WhiteListQueryMergerSupport.createWhiteListQueryMerger()
398
        );
397
        );
399
        lookup = base; // in case LookupProvider's call Project.getLookup
398
        lookup = base; // in case LookupProvider's call Project.getLookup
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/J2SEProjectOperations.java (-2 / +2 lines)
Lines 55-66 Link Here
55
import org.apache.tools.ant.module.api.support.ActionUtils;
55
import org.apache.tools.ant.module.api.support.ActionUtils;
56
import org.netbeans.api.project.FileOwnerQuery;
56
import org.netbeans.api.project.FileOwnerQuery;
57
import org.netbeans.api.project.Project;
57
import org.netbeans.api.project.Project;
58
import org.netbeans.api.project.ProjectActions;
58
import org.netbeans.api.project.ProjectInformation;
59
import org.netbeans.api.project.ProjectInformation;
59
import org.netbeans.api.project.ProjectManager;
60
import org.netbeans.api.project.ProjectManager;
60
import org.netbeans.api.project.ProjectUtils;
61
import org.netbeans.api.project.ProjectUtils;
61
import org.netbeans.modules.java.api.common.project.ProjectProperties;
62
import org.netbeans.modules.java.api.common.project.ProjectProperties;
62
import org.netbeans.modules.java.j2seproject.ui.customizer.J2SEProjectProperties;
63
import org.netbeans.modules.java.j2seproject.ui.customizer.J2SEProjectProperties;
63
import org.netbeans.spi.project.ActionProvider;
64
import org.netbeans.spi.project.CopyOperationImplementation;
64
import org.netbeans.spi.project.CopyOperationImplementation;
65
import org.netbeans.spi.project.DeleteOperationImplementation;
65
import org.netbeans.spi.project.DeleteOperationImplementation;
66
import org.netbeans.spi.project.MoveOrRenameOperationImplementation;
66
import org.netbeans.spi.project.MoveOrRenameOperationImplementation;
Lines 152-158 Link Here
152
        Properties p = new Properties();
152
        Properties p = new Properties();
153
        final AntTargetsProvider ap = project.getLookup().lookup(AntTargetsProvider.class);
153
        final AntTargetsProvider ap = project.getLookup().lookup(AntTargetsProvider.class);
154
        assert ap != null;
154
        assert ap != null;
155
        String[] targetNames = ap.getTargetNames(ActionProvider.COMMAND_CLEAN, Lookup.EMPTY, p, false);
155
        String[] targetNames = ap.getTargetNames(ProjectActions.COMMAND_CLEAN, Lookup.EMPTY, p, false);
156
        FileObject buildXML = J2SEProjectUtil.getBuildXml(project);
156
        FileObject buildXML = J2SEProjectUtil.getBuildXml(project);
157
157
158
        assert targetNames != null;
158
        assert targetNames != null;
(-)a/java.j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/J2SEProjectProperties.java (-1 / +2 lines)
Lines 78-83 Link Here
78
import javax.swing.text.Document;
78
import javax.swing.text.Document;
79
import javax.swing.text.PlainDocument;
79
import javax.swing.text.PlainDocument;
80
import org.netbeans.api.annotations.common.NonNull;
80
import org.netbeans.api.annotations.common.NonNull;
81
import org.netbeans.api.project.ProjectActions;
81
import org.netbeans.api.queries.FileEncodingQuery;
82
import org.netbeans.api.queries.FileEncodingQuery;
82
import org.netbeans.api.project.ProjectManager;
83
import org.netbeans.api.project.ProjectManager;
83
import org.netbeans.api.project.ProjectUtils;
84
import org.netbeans.api.project.ProjectUtils;
Lines 463-469 Link Here
463
                                if (mark != null) {
464
                                if (mark != null) {
464
                                    final ActionProvider ap = project.getLookup().lookup(ActionProvider.class);
465
                                    final ActionProvider ap = project.getLookup().lookup(ActionProvider.class);
465
                                    assert ap != null;
466
                                    assert ap != null;
466
                                    ap.invokeAction(ActionProvider.COMMAND_CLEAN, Lookups.fixed(project));
467
                                    ap.invokeAction(ProjectActions.COMMAND_CLEAN, Lookups.fixed(project));
467
                                }
468
                                }
468
                            }
469
                            }
469
                        }
470
                        }
(-)a/java.j2seproject/test/unit/src/org/netbeans/modules/java/j2seproject/J2SEActionProviderTest.java (-72 / +73 lines)
Lines 62-67 Link Here
62
import org.netbeans.api.java.platform.Specification;
62
import org.netbeans.api.java.platform.Specification;
63
import org.netbeans.api.java.project.JavaProjectConstants;
63
import org.netbeans.api.java.project.JavaProjectConstants;
64
import org.netbeans.api.project.Project;
64
import org.netbeans.api.project.Project;
65
import org.netbeans.api.project.ProjectActions;
65
import org.netbeans.api.project.ProjectManager;
66
import org.netbeans.api.project.ProjectManager;
66
import org.netbeans.junit.NbTestCase;
67
import org.netbeans.junit.NbTestCase;
67
import org.netbeans.modules.java.api.common.applet.AppletSupport;
68
import org.netbeans.modules.java.api.common.applet.AppletSupport;
Lines 200-206 Link Here
200
201
201
        p = new Properties();
202
        p = new Properties();
202
        context = Lookups.fixed(someSource1);
203
        context = Lookups.fixed(someSource1);
203
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
204
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
204
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
205
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
205
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
206
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
206
        assertEquals("Unexpected target name", "compile-single", targets[0]);
207
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 208-214 Link Here
208
        assertEquals("There must be be target parameter", "foo/Bar.java", p.getProperty("javac.includes"));
209
        assertEquals("There must be be target parameter", "foo/Bar.java", p.getProperty("javac.includes"));
209
        p = new Properties();
210
        p = new Properties();
210
        context = Lookups.fixed(someTest1,someTest2);
211
        context = Lookups.fixed(someTest1,someTest2);
211
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
212
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
212
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
213
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
213
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
214
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
214
        assertEquals("Unexpected target name", "compile-test-single", targets[0]);
215
        assertEquals("Unexpected target name", "compile-test-single", targets[0]);
Lines 216-222 Link Here
216
        assertEquals("There must be be target parameter", "foo/BarTest.java,foo/MainTest.java", p.getProperty("javac.includes"));
217
        assertEquals("There must be be target parameter", "foo/BarTest.java,foo/MainTest.java", p.getProperty("javac.includes"));
217
        p = new Properties();
218
        p = new Properties();
218
        context = Lookups.fixed(sourcePkg1);
219
        context = Lookups.fixed(sourcePkg1);
219
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
220
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
220
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
221
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
221
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
222
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
222
        assertEquals("Unexpected target name", "compile-single", targets[0]);
223
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 224-230 Link Here
224
        assertEquals("There must be be target parameter", "foo/**", p.getProperty("javac.includes"));
225
        assertEquals("There must be be target parameter", "foo/**", p.getProperty("javac.includes"));
225
        p = new Properties();
226
        p = new Properties();
226
        context = Lookups.fixed(sourcePkg1, sourcePkg2);
227
        context = Lookups.fixed(sourcePkg1, sourcePkg2);
227
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
228
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
228
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
229
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
229
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
230
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
230
        assertEquals("Unexpected target name", "compile-single", targets[0]);
231
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 232-238 Link Here
232
        assertEquals("There must be be target parameter", "foo/**,foo2/**", p.getProperty("javac.includes"));
233
        assertEquals("There must be be target parameter", "foo/**,foo2/**", p.getProperty("javac.includes"));
233
        p = new Properties();
234
        p = new Properties();
234
        context = Lookups.fixed(DataFolder.findFolder(sources));
235
        context = Lookups.fixed(DataFolder.findFolder(sources));
235
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
236
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
236
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
237
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
237
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
238
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
238
        assertEquals("Unexpected target name", "compile-single", targets[0]);
239
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 241-247 Link Here
241
        
242
        
242
        p = new Properties();
243
        p = new Properties();
243
        context = Lookups.fixed(sourcePkg1, new NonRecursiveFolderImpl (sourcePkg1));
244
        context = Lookups.fixed(sourcePkg1, new NonRecursiveFolderImpl (sourcePkg1));
244
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
245
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
245
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
246
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
246
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
247
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
247
        assertEquals("Unexpected target name", "compile-single", targets[0]);
248
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 249-255 Link Here
249
        assertEquals("There must be be target parameter", "foo/*", p.getProperty("javac.includes"));
250
        assertEquals("There must be be target parameter", "foo/*", p.getProperty("javac.includes"));
250
        p = new Properties();
251
        p = new Properties();
251
        context = Lookups.fixed(sourcePkg1, sourcePkg2, new NonRecursiveFolderImpl(sourcePkg1), new NonRecursiveFolderImpl(sourcePkg2));
252
        context = Lookups.fixed(sourcePkg1, sourcePkg2, new NonRecursiveFolderImpl(sourcePkg1), new NonRecursiveFolderImpl(sourcePkg2));
252
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
253
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
253
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
254
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
254
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
255
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
255
        assertEquals("Unexpected target name", "compile-single", targets[0]);
256
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 257-263 Link Here
257
        assertEquals("There must be be target parameter", "foo/*,foo2/*", p.getProperty("javac.includes"));
258
        assertEquals("There must be be target parameter", "foo/*,foo2/*", p.getProperty("javac.includes"));
258
        p = new Properties();
259
        p = new Properties();
259
        context = Lookups.fixed(DataFolder.findFolder(sources), new NonRecursiveFolderImpl(sources));
260
        context = Lookups.fixed(DataFolder.findFolder(sources), new NonRecursiveFolderImpl(sources));
260
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_COMPILE_SINGLE, context, p);
261
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_COMPILE_SINGLE, context, p);
261
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
262
        assertNotNull("Must found some targets for COMMAND_COMPILE_SINGLE", targets);
262
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
263
        assertEquals("There must be one target for COMMAND_COMPILE_SINGLE", 1, targets.length);
263
        assertEquals("Unexpected target name", "compile-single", targets[0]);
264
        assertEquals("Unexpected target name", "compile-single", targets[0]);
Lines 268-274 Link Here
268
269
269
        p = new Properties();
270
        p = new Properties();
270
        context = Lookups.fixed(someSource1);
271
        context = Lookups.fixed(someSource1);
271
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_TEST_SINGLE, context, p);
272
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_TEST_SINGLE, context, p);
272
        assertNotNull("Must found some targets for COMMAND_TEST_SINGLE", targets);
273
        assertNotNull("Must found some targets for COMMAND_TEST_SINGLE", targets);
273
        assertEquals("There must be one target for COMMAND_TEST_SINGLE", 1, targets.length);
274
        assertEquals("There must be one target for COMMAND_TEST_SINGLE", 1, targets.length);
274
        assertEquals("Unexpected target name", "test-single", targets[0]);
275
        assertEquals("Unexpected target name", "test-single", targets[0]);
Lines 277-283 Link Here
277
        assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("test.includes"));
278
        assertEquals("There must be be target parameter", "foo/BarTest.java", p.getProperty("test.includes"));
278
        p = new Properties();
279
        p = new Properties();
279
        context = Lookups.fixed(someSource1,someSource2);
280
        context = Lookups.fixed(someSource1,someSource2);
280
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_TEST_SINGLE, context, p);
281
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_TEST_SINGLE, context, p);
281
        assertNotNull("Must found some targets for COMMAND_TEST_SINGLE", targets);
282
        assertNotNull("Must found some targets for COMMAND_TEST_SINGLE", targets);
282
        assertEquals("There must be one target for COMMAND_TEST_SINGLE", 1, targets.length);
283
        assertEquals("There must be one target for COMMAND_TEST_SINGLE", 1, targets.length);
283
        assertEquals("Unexpected target name", "test-single", targets[0]);
284
        assertEquals("Unexpected target name", "test-single", targets[0]);
Lines 289-295 Link Here
289
290
290
        p = new Properties();
291
        p = new Properties();
291
        context = Lookups.fixed(someSource1);
292
        context = Lookups.fixed(someSource1);
292
        targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context, p);
293
        targets = actionProvider.getTargetNames(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, context, p);
293
        assertNotNull("Must found some targets for COMMAND_DEBUG_TEST_SINGLE", targets);
294
        assertNotNull("Must found some targets for COMMAND_DEBUG_TEST_SINGLE", targets);
294
        assertEquals("There must be one target for COMMAND_DEBUG_TEST_SINGLE", 1, targets.length);
295
        assertEquals("There must be one target for COMMAND_DEBUG_TEST_SINGLE", 1, targets.length);
295
        assertEquals("Unexpected target name", "debug-test", targets[0]);
296
        assertEquals("Unexpected target name", "debug-test", targets[0]);
Lines 325-331 Link Here
325
        context = Lookups.fixed(someSource2);
326
        context = Lookups.fixed(someSource2);
326
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
327
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
327
        try {
328
        try {
328
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN_SINGLE, context, p);
329
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_RUN_SINGLE, context, p);
329
        } finally {
330
        } finally {
330
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
331
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
331
        }
332
        }
Lines 340-346 Link Here
340
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
341
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
341
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
342
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
342
        try {
343
        try {
343
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN_SINGLE, context, p);
344
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_RUN_SINGLE, context, p);
344
        } finally {
345
        } finally {
345
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
346
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
346
            AppletSupport.unitTestingSupport_isApplet = null;
347
            AppletSupport.unitTestingSupport_isApplet = null;
Lines 359-365 Link Here
359
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
360
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
360
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
361
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
361
        try {
362
        try {
362
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN_SINGLE, context, p);
363
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_RUN_SINGLE, context, p);
363
        } finally {
364
        } finally {
364
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
365
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
365
            AppletSupport.unitTestingSupport_isApplet = null;
366
            AppletSupport.unitTestingSupport_isApplet = null;
Lines 377-383 Link Here
377
        context = Lookups.fixed(someSource2);
378
        context = Lookups.fixed(someSource2);
378
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
379
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
379
        try {
380
        try {
380
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_SINGLE, context, p);
381
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_DEBUG_SINGLE, context, p);
381
        } finally {
382
        } finally {
382
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
383
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
383
        }
384
        }
Lines 392-398 Link Here
392
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
393
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.FALSE;
393
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
394
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
394
        try {
395
        try {
395
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_SINGLE, context, p);
396
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_DEBUG_SINGLE, context, p);
396
        } finally {
397
        } finally {
397
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
398
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
398
            AppletSupport.unitTestingSupport_isApplet = null;
399
            AppletSupport.unitTestingSupport_isApplet = null;
Lines 411-417 Link Here
411
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
412
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
412
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
413
        AppletSupport.unitTestingSupport_isApplet = Boolean.TRUE;
413
        try {
414
        try {
414
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_SINGLE, context, p);
415
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_DEBUG_SINGLE, context, p);
415
        } finally {
416
        } finally {
416
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
417
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
417
            AppletSupport.unitTestingSupport_isApplet = null;
418
            AppletSupport.unitTestingSupport_isApplet = null;
Lines 429-435 Link Here
429
        context = Lookup.EMPTY;
430
        context = Lookup.EMPTY;
430
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
431
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
431
        try {
432
        try {
432
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_RUN, context, p);
433
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_RUN, context, p);
433
        } finally {
434
        } finally {
434
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
435
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
435
        }
436
        }
Lines 447-453 Link Here
447
        context = Lookup.EMPTY;
448
        context = Lookup.EMPTY;
448
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
449
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
449
        try {
450
        try {
450
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG, context, p);
451
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_DEBUG, context, p);
451
        } finally {
452
        } finally {
452
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
453
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
453
        }
454
        }
Lines 466-472 Link Here
466
        context = Lookup.EMPTY;
467
        context = Lookup.EMPTY;
467
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
468
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
468
        try {
469
        try {
469
            targets = actionProvider.getTargetNames(ActionProvider.COMMAND_DEBUG_STEP_INTO, context, p);
470
            targets = actionProvider.getTargetNames(ProjectActions.COMMAND_DEBUG_STEP_INTO, context, p);
470
        } finally {
471
        } finally {
471
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
472
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
472
        }
473
        }
Lines 527-545 Link Here
527
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
528
        MainClassChooser.unitTestingSupport_hasMainMethodResult = Boolean.TRUE;
528
        try {
529
        try {
529
            // test of targets defined in config
530
            // test of targets defined in config
530
            String[] targets = ap.getTargetNames(ActionProvider.COMMAND_DEBUG, context, new Properties());
531
            String[] targets = ap.getTargetNames(ProjectActions.COMMAND_DEBUG, context, new Properties());
531
            assertEquals("There must be two Debug targets in test config", 2, targets.length);
532
            assertEquals("There must be two Debug targets in test config", 2, targets.length);
532
            assertEquals("First Debug target name is debugtarget1", "debugtarget1", targets[0]);
533
            assertEquals("First Debug target name is debugtarget1", "debugtarget1", targets[0]);
533
            assertEquals("Second Debug target name is debugtarget2", "debugtarget2", targets[1]);
534
            assertEquals("Second Debug target name is debugtarget2", "debugtarget2", targets[1]);
534
            targets = ap.getTargetNames(ActionProvider.COMMAND_BUILD, context, new Properties());
535
            targets = ap.getTargetNames(ProjectActions.COMMAND_BUILD, context, new Properties());
535
            assertEquals("There must be 1 Build target in test config", 1, targets.length);
536
            assertEquals("There must be 1 Build target in test config", 1, targets.length);
536
            // target is not in fact from the config, config contains empty string
537
            // target is not in fact from the config, config contains empty string
537
            assertEquals("Build target name is jar", "jar", targets[0]); 
538
            assertEquals("Build target name is jar", "jar", targets[0]); 
538
            targets = ap.getTargetNames(ActionProvider.COMMAND_RUN, context, new Properties());
539
            targets = ap.getTargetNames(ProjectActions.COMMAND_RUN, context, new Properties());
539
            assertEquals("There must be 1 Run target in test config", 1, targets.length);
540
            assertEquals("There must be 1 Run target in test config", 1, targets.length);
540
            assertEquals("Run target name is runtarget", "runtarget", targets[0]);
541
            assertEquals("Run target name is runtarget", "runtarget", targets[0]);
541
            // test of targets not in config
542
            // test of targets not in config
542
            targets = ap.getTargetNames(ActionProvider.COMMAND_CLEAN, context, new Properties());
543
            targets = ap.getTargetNames(ProjectActions.COMMAND_CLEAN, context, new Properties());
543
            assertEquals("There must be 1 Clean target", 1, targets.length);
544
            assertEquals("There must be 1 Clean target", 1, targets.length);
544
            assertEquals("Clean target name is runtarget", "clean", targets[0]);
545
            assertEquals("Clean target name is runtarget", "clean", targets[0]);
545
        } finally {
546
        } finally {
Lines 556-562 Link Here
556
        FileObject newRoot = SourceRootsTest.addSourceRoot(helper, projdir, "src.other.dir","other");
557
        FileObject newRoot = SourceRootsTest.addSourceRoot(helper, projdir, "src.other.dir","other");
557
        implTestIsActionEnabled(false);
558
        implTestIsActionEnabled(false);
558
        Lookup context = Lookups.fixed(sourcePkg1, DataFolder.findFolder(newRoot));
559
        Lookup context = Lookups.fixed(sourcePkg1, DataFolder.findFolder(newRoot));
559
        boolean enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
560
        boolean enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
560
        assertFalse ("COMMAND_COMPILE_SINGLE must be disabled on multiple src packages from different roots", enabled);
561
        assertFalse ("COMMAND_COMPILE_SINGLE must be disabled on multiple src packages from different roots", enabled);
561
    }
562
    }
562
563
Lines 570-674 Link Here
570
        helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
571
        helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
571
572
572
        context = Lookups.fixed(someSource1);
573
        context = Lookups.fixed(someSource1);
573
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
574
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
574
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one source", enabled);
575
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one source", enabled);
575
576
576
        context = Lookups.fixed(someSource1, someSource2);
577
        context = Lookups.fixed(someSource1, someSource2);
577
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
578
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
578
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple sources", enabled);
579
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple sources", enabled);
579
580
580
        context = Lookups.fixed(someTest1, someTest2);
581
        context = Lookups.fixed(someTest1, someTest2);
581
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
582
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
582
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple tests", enabled);
583
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple tests", enabled);
583
584
584
        context = Lookups.fixed(someSource1, someTest1);
585
        context = Lookups.fixed(someSource1, someTest1);
585
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
586
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
586
        assertFalse("COMMAND_COMPILE_SINGLE must be disabled on mixed files", enabled);
587
        assertFalse("COMMAND_COMPILE_SINGLE must be disabled on mixed files", enabled);
587
588
588
        context = Lookups.fixed(sourcePkg1);
589
        context = Lookups.fixed(sourcePkg1);
589
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
590
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
590
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one src package", enabled);
591
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one src package", enabled);
591
592
592
        context = Lookups.fixed(sourcePkg1, sourcePkg2);
593
        context = Lookups.fixed(sourcePkg1, sourcePkg2);
593
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
594
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
594
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple src packages", enabled);
595
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple src packages", enabled);
595
596
596
        context = Lookups.fixed(sourcePkg1, someSource1);
597
        context = Lookups.fixed(sourcePkg1, someSource1);
597
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
598
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
598
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on mixed src packages/files", enabled);
599
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on mixed src packages/files", enabled);
599
600
600
601
601
        context = Lookups.fixed(testPkg1);
602
        context = Lookups.fixed(testPkg1);
602
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
603
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
603
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one test package", enabled);
604
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on one test package", enabled);
604
605
605
        context = Lookups.fixed(testPkg1, testPkg2);
606
        context = Lookups.fixed(testPkg1, testPkg2);
606
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
607
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
607
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple test packages", enabled);
608
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on multiple test packages", enabled);
608
609
609
        context = Lookups.fixed(testPkg1, someTest1);
610
        context = Lookups.fixed(testPkg1, someTest1);
610
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
611
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
611
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on mixed test packages/files", enabled);
612
        assertTrue ("COMMAND_COMPILE_SINGLE must be enabled on mixed test packages/files", enabled);
612
613
613
        context = Lookups.fixed(DataFolder.findFolder(projdir));
614
        context = Lookups.fixed(DataFolder.findFolder(projdir));
614
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
615
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
615
        assertFalse ("COMMAND_COMPILE_SINGLE must not be enabled on non source folder", enabled);
616
        assertFalse ("COMMAND_COMPILE_SINGLE must not be enabled on non source folder", enabled);
616
617
617
618
618
        context = Lookups.fixed(sourcePkg1, testPkg1);
619
        context = Lookups.fixed(sourcePkg1, testPkg1);
619
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, context);
620
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, context);
620
        assertFalse ("COMMAND_COMPILE_SINGLE must not be enabled on non mixed packages", enabled);
621
        assertFalse ("COMMAND_COMPILE_SINGLE must not be enabled on non mixed packages", enabled);
621
622
622
        // test COMMAND_TEST_SINGLE
623
        // test COMMAND_TEST_SINGLE
623
624
624
        context = Lookups.fixed(someTest1);
625
        context = Lookups.fixed(someTest1);
625
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
626
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
626
        assertTrue("COMMAND_TEST_SINGLE must be enabled on one test", enabled);
627
        assertTrue("COMMAND_TEST_SINGLE must be enabled on one test", enabled);
627
628
628
        context = Lookups.fixed(someTest1, someTest2);
629
        context = Lookups.fixed(someTest1, someTest2);
629
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
630
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
630
        assertFalse("COMMAND_TEST_SINGLE must be disabled on multiple tests", enabled);
631
        assertFalse("COMMAND_TEST_SINGLE must be disabled on multiple tests", enabled);
631
632
632
        context = Lookups.fixed(someSource3);
633
        context = Lookups.fixed(someSource3);
633
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
634
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
634
        assertFalse("COMMAND_TEST_SINGLE must be disabled on non-test file which does not have associated test", enabled);
635
        assertFalse("COMMAND_TEST_SINGLE must be disabled on non-test file which does not have associated test", enabled);
635
636
636
        context = Lookups.fixed(someSource2);
637
        context = Lookups.fixed(someSource2);
637
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
638
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
638
        assertTrue("COMMAND_TEST_SINGLE must be enabled on source file which has associated test", enabled);
639
        assertTrue("COMMAND_TEST_SINGLE must be enabled on source file which has associated test", enabled);
639
640
640
        context = Lookups.fixed(someSource1, someSource2);
641
        context = Lookups.fixed(someSource1, someSource2);
641
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
642
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
642
        assertFalse("COMMAND_TEST_SINGLE must be enabled on source files which has associated tests", enabled);
643
        assertFalse("COMMAND_TEST_SINGLE must be enabled on source files which has associated tests", enabled);
643
644
644
        context = Lookups.fixed(someSource1, someSource3);
645
        context = Lookups.fixed(someSource1, someSource3);
645
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
646
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
646
        assertFalse("COMMAND_TEST_SINGLE must be disabled on mixture of source files when some files do not have tests", enabled);
647
        assertFalse("COMMAND_TEST_SINGLE must be disabled on mixture of source files when some files do not have tests", enabled);
647
648
648
        context = Lookups.fixed(someSource1, someTest1);
649
        context = Lookups.fixed(someSource1, someTest1);
649
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_TEST_SINGLE, context);
650
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_TEST_SINGLE, context);
650
        assertFalse("COMMAND_TEST_SINGLE must be disabled on mixture of source files and test files", enabled);
651
        assertFalse("COMMAND_TEST_SINGLE must be disabled on mixture of source files and test files", enabled);
651
652
652
        // test COMMAND_DEBUG_TEST_SINGLE
653
        // test COMMAND_DEBUG_TEST_SINGLE
653
654
654
        context = Lookups.fixed(someTest1);
655
        context = Lookups.fixed(someTest1);
655
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
656
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, context);
656
        assertTrue("COMMAND_DEBUG_TEST_SINGLE must be enabled on test files", enabled);
657
        assertTrue("COMMAND_DEBUG_TEST_SINGLE must be enabled on test files", enabled);
657
658
658
        context = Lookups.fixed(someTest1, someTest2);
659
        context = Lookups.fixed(someTest1, someTest2);
659
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
660
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, context);
660
        assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on multiple tests", enabled);
661
        assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on multiple tests", enabled);
661
662
662
        context = Lookups.fixed(someSource3);
663
        context = Lookups.fixed(someSource3);
663
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
664
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, context);
664
        assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on non-test file which does not have associated test", enabled);
665
        assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on non-test file which does not have associated test", enabled);
665
666
666
        context = Lookups.fixed(someSource2);
667
        context = Lookups.fixed(someSource2);
667
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
668
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, context);
668
        assertTrue("COMMAND_DEBUG_TEST_SINGLE must be enabled on source file which has associated test", enabled);
669
        assertTrue("COMMAND_DEBUG_TEST_SINGLE must be enabled on source file which has associated test", enabled);
669
670
670
        context = Lookups.fixed(someSource1, someSource2);
671
        context = Lookups.fixed(someSource1, someSource2);
671
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, context);
672
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, context);
672
        assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on multiple source files", enabled);
673
        assertFalse("COMMAND_DEBUG_TEST_SINGLE must be disabled on multiple source files", enabled);
673
674
674
        // test COMMAND_DEBUG_FIX
675
        // test COMMAND_DEBUG_FIX
Lines 696-740 Link Here
696
        // test COMMAND_RUN_SINGLE
697
        // test COMMAND_RUN_SINGLE
697
698
698
        context = Lookups.fixed(someSource1);
699
        context = Lookups.fixed(someSource1);
699
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
700
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_RUN_SINGLE, context);
700
        assertTrue("COMMAND_RUN_SINGLE must be enabled on one source", enabled);
701
        assertTrue("COMMAND_RUN_SINGLE must be enabled on one source", enabled);
701
702
702
        context = Lookups.fixed(someSource1, someSource2);
703
        context = Lookups.fixed(someSource1, someSource2);
703
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
704
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_RUN_SINGLE, context);
704
        assertFalse("COMMAND_RUN_SINGLE must be disabled on multiple sources", enabled);
705
        assertFalse("COMMAND_RUN_SINGLE must be disabled on multiple sources", enabled);
705
706
706
        context = Lookups.fixed(someTest1);
707
        context = Lookups.fixed(someTest1);
707
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
708
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_RUN_SINGLE, context);
708
        assertTrue("COMMAND_RUN_SINGLE must be enabled on test file", enabled);
709
        assertTrue("COMMAND_RUN_SINGLE must be enabled on test file", enabled);
709
710
710
        context = Lookups.fixed(someTest1, someTest2);
711
        context = Lookups.fixed(someTest1, someTest2);
711
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
712
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_RUN_SINGLE, context);
712
        assertFalse("COMMAND_RUN_SINGLE must be disabled on multiple test files", enabled);
713
        assertFalse("COMMAND_RUN_SINGLE must be disabled on multiple test files", enabled);
713
714
714
        context = Lookups.fixed(someSource1, someTest1);
715
        context = Lookups.fixed(someSource1, someTest1);
715
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_RUN_SINGLE, context);
716
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_RUN_SINGLE, context);
716
        assertFalse("COMMAND_RUN_SINGLE must be disabled on mixed multiple test files", enabled);
717
        assertFalse("COMMAND_RUN_SINGLE must be disabled on mixed multiple test files", enabled);
717
718
718
        // test COMMAND_DEBUG_SINGLE
719
        // test COMMAND_DEBUG_SINGLE
719
720
720
        context = Lookups.fixed(someSource1);
721
        context = Lookups.fixed(someSource1);
721
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
722
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_SINGLE, context);
722
        assertTrue("COMMAND_DEBUG_SINGLE must be enabled on one source", enabled);
723
        assertTrue("COMMAND_DEBUG_SINGLE must be enabled on one source", enabled);
723
724
724
        context = Lookups.fixed(someSource1, someSource2);
725
        context = Lookups.fixed(someSource1, someSource2);
725
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
726
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_SINGLE, context);
726
        assertFalse("COMMAND_DEBUG_SINGLE must be disabled on multiple sources", enabled);
727
        assertFalse("COMMAND_DEBUG_SINGLE must be disabled on multiple sources", enabled);
727
728
728
        context = Lookups.fixed(someTest1);
729
        context = Lookups.fixed(someTest1);
729
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
730
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_SINGLE, context);
730
        assertTrue("COMMAND_DEBUG_SINGLE must be enabled on test file", enabled);
731
        assertTrue("COMMAND_DEBUG_SINGLE must be enabled on test file", enabled);
731
732
732
        context = Lookups.fixed(someTest1, someTest2);
733
        context = Lookups.fixed(someTest1, someTest2);
733
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
734
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_SINGLE, context);
734
        assertFalse("COMMAND_DEBUG_SINGLE must be disabled on multiple test files", enabled);
735
        assertFalse("COMMAND_DEBUG_SINGLE must be disabled on multiple test files", enabled);
735
736
736
        context = Lookups.fixed(someSource1, someTest1);
737
        context = Lookups.fixed(someSource1, someTest1);
737
        enabled = actionProvider.isActionEnabled(ActionProvider.COMMAND_DEBUG_SINGLE, context);
738
        enabled = actionProvider.isActionEnabled(ProjectActions.COMMAND_DEBUG_SINGLE, context);
738
        assertFalse("COMMAND_DEBUG_SINGLE must be disabled on mixed multiple test files", enabled);
739
        assertFalse("COMMAND_DEBUG_SINGLE must be disabled on mixed multiple test files", enabled);
739
    }
740
    }
740
741
Lines 743-786 Link Here
743
        ep.put(ProjectProperties.TRACK_FILE_CHANGES, "true");
744
        ep.put(ProjectProperties.TRACK_FILE_CHANGES, "true");
744
        helper.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
745
        helper.putProperties(AntProjectHelper.PROJECT_PROPERTIES_PATH, ep);
745
        Properties p = new Properties();
746
        Properties p = new Properties();
746
        assertEquals("[jar]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
747
        assertEquals("[jar]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
747
        assertEquals("{}", p.toString());
748
        assertEquals("{}", p.toString());
748
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
749
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
749
        assertEquals("[jar]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
750
        assertEquals("[jar]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
750
        assertEquals("{}", p.toString());
751
        assertEquals("{}", p.toString());
751
        ep = helper.getProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH);
752
        ep = helper.getProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH);
752
        ep.put(ProjectProperties.DO_JAR, "false");
753
        ep.put(ProjectProperties.DO_JAR, "false");
753
        helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
754
        helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
754
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
755
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
755
        assertEquals("{}", p.toString());
756
        assertEquals("{}", p.toString());
756
        ep.put(ProjectProperties.DO_DEPEND, "false");
757
        ep.put(ProjectProperties.DO_DEPEND, "false");
757
        helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
758
        helper.putProperties(AntProjectHelper.PRIVATE_PROPERTIES_PATH, ep);
758
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
759
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
759
        assertEquals("{}", p.toString());
760
        assertEquals("{}", p.toString());
760
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
761
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
761
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
762
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
762
        assertEquals("{includes=foo/Bar.java}", p.toString());
763
        assertEquals("{includes=foo/Bar.java}", p.toString());
763
        p.clear();
764
        p.clear();
764
        TestFileUtils.touch(someSource2.getPrimaryFile(), null);
765
        TestFileUtils.touch(someSource2.getPrimaryFile(), null);
765
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
766
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
766
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
767
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
767
        assertEquals("{includes=foo/Bar.java,foo/Main.java}", p.toString());
768
        assertEquals("{includes=foo/Bar.java,foo/Main.java}", p.toString());
768
        p.clear();
769
        p.clear();
769
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
770
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
770
        assertEquals("{}", p.toString());
771
        assertEquals("{}", p.toString());
771
        TestFileUtils.touch(someTest1.getPrimaryFile(), null);
772
        TestFileUtils.touch(someTest1.getPrimaryFile(), null);
772
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
773
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
773
        assertEquals("{}", p.toString());
774
        assertEquals("{}", p.toString());
774
        sources.createData("x.properties");
775
        sources.createData("x.properties");
775
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
776
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
776
        assertEquals("{includes=x.properties}", p.toString());
777
        assertEquals("{includes=x.properties}", p.toString());
777
        p.clear();
778
        p.clear();
778
        someSource1.setModified(true);
779
        someSource1.setModified(true);
779
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_BUILD, Lookup.EMPTY, p)));
780
        assertEquals("[compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_BUILD, Lookup.EMPTY, p)));
780
        assertEquals("{includes=foo/Bar.java}", p.toString());
781
        assertEquals("{includes=foo/Bar.java}", p.toString());
781
        p.clear();
782
        p.clear();
782
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
783
        TestFileUtils.touch(someSource1.getPrimaryFile(), null);
783
        assertEquals("[clean, compile]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_REBUILD, Lookup.EMPTY, p)));
784
        assertEquals("[clean, compile]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_REBUILD, Lookup.EMPTY, p)));
784
        assertEquals("{}", p.toString());
785
        assertEquals("{}", p.toString());
785
    }
786
    }
786
    public void testBuildWithDirtyListFirstTime() throws Exception { // #119777
787
    public void testBuildWithDirtyListFirstTime() throws Exception { // #119777
Lines 796-804 Link Here
796
        Properties p = new Properties();
797
        Properties p = new Properties();
797
        MainClassChooser.unitTestingSupport_hasMainMethodResult = true;
798
        MainClassChooser.unitTestingSupport_hasMainMethodResult = true;
798
        try {
799
        try {
799
            assertEquals("[run]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_RUN, Lookup.EMPTY, p)));
800
            assertEquals("[run]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_RUN, Lookup.EMPTY, p)));
800
            assertEquals("{}", p.toString());
801
            assertEquals("{}", p.toString());
801
            assertEquals("[run]", Arrays.toString(actionProvider.getTargetNames(ActionProvider.COMMAND_RUN, Lookup.EMPTY, p)));
802
            assertEquals("[run]", Arrays.toString(actionProvider.getTargetNames(ProjectActions.COMMAND_RUN, Lookup.EMPTY, p)));
802
            assertEquals("{includes=nothing whatsoever}", p.toString());
803
            assertEquals("{includes=nothing whatsoever}", p.toString());
803
        } finally {
804
        } finally {
804
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
805
            MainClassChooser.unitTestingSupport_hasMainMethodResult = null;
(-)a/maven/src/org/netbeans/modules/maven/ActionProviderImpl.java (-28 / +29 lines)
Lines 59-64 Link Here
59
import org.apache.maven.artifact.Artifact;
59
import org.apache.maven.artifact.Artifact;
60
import org.apache.maven.artifact.versioning.ComparableVersion;
60
import org.apache.maven.artifact.versioning.ComparableVersion;
61
import org.netbeans.api.project.Project;
61
import org.netbeans.api.project.Project;
62
import org.netbeans.api.project.ProjectActions;
62
import org.netbeans.api.project.ui.OpenProjects;
63
import org.netbeans.api.project.ui.OpenProjects;
63
import static org.netbeans.modules.maven.Bundle.*;
64
import static org.netbeans.modules.maven.Bundle.*;
64
import org.netbeans.modules.maven.api.Constants;
65
import org.netbeans.modules.maven.api.Constants;
Lines 115-139 Link Here
115
116
116
    private final Project proj;
117
    private final Project proj;
117
    private static String[] supported = new String[]{
118
    private static String[] supported = new String[]{
118
        COMMAND_BUILD,
119
        ProjectActions.COMMAND_BUILD,
119
        BUILD_WITH_DEPENDENCIES,
120
        BUILD_WITH_DEPENDENCIES,
120
        COMMAND_CLEAN,
121
        ProjectActions.COMMAND_CLEAN,
121
        COMMAND_REBUILD,
122
        ProjectActions.COMMAND_REBUILD,
122
        "javadoc", //NOI18N
123
        "javadoc", //NOI18N
123
        COMMAND_TEST,
124
        ProjectActions.COMMAND_TEST,
124
        COMMAND_TEST_SINGLE,
125
        ProjectActions.COMMAND_TEST_SINGLE,
125
        COMMAND_RUN,
126
        ProjectActions.COMMAND_RUN,
126
        COMMAND_RUN_SINGLE,
127
        ProjectActions.COMMAND_RUN_SINGLE,
127
        COMMAND_DEBUG,
128
        ProjectActions.COMMAND_DEBUG,
128
        COMMAND_DEBUG_SINGLE,
129
        ProjectActions.COMMAND_DEBUG_SINGLE,
129
        COMMAND_DEBUG_TEST_SINGLE,
130
        ProjectActions.COMMAND_DEBUG_TEST_SINGLE,
130
        "debug.fix", //NOI18N
131
        "debug.fix", //NOI18N
131
132
132
        //operations
133
        //operations
133
        COMMAND_DELETE,
134
        ProjectActions.COMMAND_DELETE,
134
        COMMAND_RENAME,
135
        ProjectActions.COMMAND_RENAME,
135
        COMMAND_MOVE,
136
        ProjectActions.COMMAND_MOVE,
136
        COMMAND_COPY
137
        ProjectActions.COMMAND_COPY
137
    };
138
    };
138
    
139
    
139
    Lookup.Result<? extends MavenActionsProvider> result;
140
    Lookup.Result<? extends MavenActionsProvider> result;
Lines 187-206 Link Here
187
                return;
188
                return;
188
            }
189
            }
189
        }
190
        }
190
        if (COMMAND_DELETE.equals(action)) {
191
        if (ProjectActions.COMMAND_DELETE.equals(action)) {
191
            DefaultProjectOperations.performDefaultDeleteOperation(proj);
192
            DefaultProjectOperations.performDefaultDeleteOperation(proj);
192
            return;
193
            return;
193
        }
194
        }
194
        if (COMMAND_COPY.equals(action)) {
195
        if (ProjectActions.COMMAND_COPY.equals(action)) {
195
            DefaultProjectOperations.performDefaultCopyOperation(proj);
196
            DefaultProjectOperations.performDefaultCopyOperation(proj);
196
            return;
197
            return;
197
        }
198
        }
198
        if (COMMAND_MOVE.equals(action)) {
199
        if (ProjectActions.COMMAND_MOVE.equals(action)) {
199
            DefaultProjectOperations.performDefaultMoveOperation(proj);
200
            DefaultProjectOperations.performDefaultMoveOperation(proj);
200
            return;
201
            return;
201
        }
202
        }
202
203
203
        if (COMMAND_RENAME.equals(action)) {
204
        if (ProjectActions.COMMAND_RENAME.equals(action)) {
204
            Operations.renameProject(proj.getLookup().lookup(NbMavenProjectImpl.class));
205
            Operations.renameProject(proj.getLookup().lookup(NbMavenProjectImpl.class));
205
            return;
206
            return;
206
        }
207
        }
Lines 263-279 Link Here
263
        //#118926 prevent NPE, how come the dobj is null?
264
        //#118926 prevent NPE, how come the dobj is null?
264
        String dobjName = dobj != null ? dobj.getName() : ""; //NOI18N
265
        String dobjName = dobj != null ? dobj.getName() : ""; //NOI18N
265
266
266
        if (ActionProvider.COMMAND_RUN.equals(action)) {
267
        if (ProjectActions.COMMAND_RUN.equals(action)) {
267
            title = TXT_Run(prj.getMavenProject().getArtifactId());
268
            title = TXT_Run(prj.getMavenProject().getArtifactId());
268
        } else if (ActionProvider.COMMAND_DEBUG.equals(action)) {
269
        } else if (ProjectActions.COMMAND_DEBUG.equals(action)) {
269
            title = TXT_Debug(prj.getMavenProject().getArtifactId());
270
            title = TXT_Debug(prj.getMavenProject().getArtifactId());
270
        } else if (ActionProvider.COMMAND_TEST.equals(action)) {
271
        } else if (ProjectActions.COMMAND_TEST.equals(action)) {
271
            title = TXT_Test(prj.getMavenProject().getArtifactId());
272
            title = TXT_Test(prj.getMavenProject().getArtifactId());
272
        } else if (action.startsWith(ActionProvider.COMMAND_RUN_SINGLE)) {
273
        } else if (action.startsWith(ProjectActions.COMMAND_RUN_SINGLE)) {
273
            title = TXT_Run(dobjName);
274
            title = TXT_Run(dobjName);
274
        } else if (action.startsWith(ActionProvider.COMMAND_DEBUG_SINGLE) || ActionProvider.COMMAND_DEBUG_TEST_SINGLE.equals(action)) {
275
        } else if (action.startsWith(ProjectActions.COMMAND_DEBUG_SINGLE) || ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equals(action)) {
275
            title = TXT_Debug(dobjName);
276
            title = TXT_Debug(dobjName);
276
        } else if (ActionProvider.COMMAND_TEST_SINGLE.equals(action)) {
277
        } else if (ProjectActions.COMMAND_TEST_SINGLE.equals(action)) {
277
            title = TXT_Test(dobjName);
278
            title = TXT_Test(dobjName);
278
        } else {
279
        } else {
279
            title = TXT_Build(prj.getMavenProject().getArtifactId());
280
            title = TXT_Build(prj.getMavenProject().getArtifactId());
Lines 283-292 Link Here
283
284
284
    @Override
285
    @Override
285
    public boolean isActionEnabled(String action, Lookup lookup) {
286
    public boolean isActionEnabled(String action, Lookup lookup) {
286
        if (COMMAND_DELETE.equals(action) ||
287
        if (ProjectActions.COMMAND_DELETE.equals(action) ||
287
                COMMAND_RENAME.equals(action) ||
288
                ProjectActions.COMMAND_RENAME.equals(action) ||
288
                COMMAND_COPY.equals(action) ||
289
                ProjectActions.COMMAND_COPY.equals(action) ||
289
                COMMAND_MOVE.equals(action)) {
290
                ProjectActions.COMMAND_MOVE.equals(action)) {
290
            return true;
291
            return true;
291
        }
292
        }
292
        if (action.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) || action.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD)) {
293
        if (action.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) || action.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD)) {
(-)a/maven/src/org/netbeans/modules/maven/TestChecker.java (-3 / +4 lines)
Lines 42-47 Link Here
42
42
43
package org.netbeans.modules.maven;
43
package org.netbeans.modules.maven;
44
44
45
import org.netbeans.api.project.ProjectActions;
45
import org.netbeans.modules.maven.api.execute.PrerequisitesChecker;
46
import org.netbeans.modules.maven.api.execute.PrerequisitesChecker;
46
import org.netbeans.modules.maven.api.execute.RunConfig;
47
import org.netbeans.modules.maven.api.execute.RunConfig;
47
import org.netbeans.modules.maven.api.execute.RunUtils;
48
import org.netbeans.modules.maven.api.execute.RunUtils;
Lines 66-74 Link Here
66
67
67
    @Override public boolean checkRunConfig(RunConfig config) {
68
    @Override public boolean checkRunConfig(RunConfig config) {
68
        String action = config.getActionName();
69
        String action = config.getActionName();
69
        if (ActionProvider.COMMAND_TEST.equals(action) ||
70
        if (ProjectActions.COMMAND_TEST.equals(action) ||
70
            ActionProvider.COMMAND_TEST_SINGLE.equals(action) ||
71
            ProjectActions.COMMAND_TEST_SINGLE.equals(action) ||
71
            ActionProvider.COMMAND_DEBUG_TEST_SINGLE.equals(action) ||
72
            ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equals(action) ||
72
            "profile-tests".equals(action)) { //NOI18N - profile-tests is not really nice but well.
73
            "profile-tests".equals(action)) { //NOI18N - profile-tests is not really nice but well.
73
            if (!RunUtils.hasTestCompileOnSaveEnabled(config)) {
74
            if (!RunUtils.hasTestCompileOnSaveEnabled(config)) {
74
                String test = config.getProperties().get("test");
75
                String test = config.getProperties().get("test");
(-)a/maven/src/org/netbeans/modules/maven/configurations/M2ConfigProvider.java (-1 / +2 lines)
Lines 55-60 Link Here
55
import java.util.Map;
55
import java.util.Map;
56
import java.util.SortedSet;
56
import java.util.SortedSet;
57
import java.util.TreeSet;
57
import java.util.TreeSet;
58
import org.netbeans.api.project.ProjectActions;
58
import org.netbeans.modules.maven.NbMavenProjectImpl;
59
import org.netbeans.modules.maven.NbMavenProjectImpl;
59
import org.netbeans.modules.maven.api.NbMavenProject;
60
import org.netbeans.modules.maven.api.NbMavenProject;
60
import org.netbeans.modules.maven.api.ProjectProfileHandler;
61
import org.netbeans.modules.maven.api.ProjectProfileHandler;
Lines 236-242 Link Here
236
    }
237
    }
237
238
238
    public @Override boolean configurationsAffectAction(String action) {
239
    public @Override boolean configurationsAffectAction(String action) {
239
        if (ActionProvider.COMMAND_DELETE.equals(action) || ActionProvider.COMMAND_COPY.equals(action) || ActionProvider.COMMAND_MOVE.equals(action)) {
240
        if (ProjectActions.COMMAND_DELETE.equals(action) || ProjectActions.COMMAND_COPY.equals(action) || ProjectActions.COMMAND_MOVE.equals(action)) {
240
            return false;
241
            return false;
241
        }
242
        }
242
        return true;
243
        return true;
(-)a/maven/src/org/netbeans/modules/maven/cos/CosChecker.java (-14 / +15 lines)
Lines 72-77 Link Here
72
import org.netbeans.modules.maven.api.execute.RunConfig;
72
import org.netbeans.modules.maven.api.execute.RunConfig;
73
import org.netbeans.api.java.project.runner.JavaRunner;
73
import org.netbeans.api.java.project.runner.JavaRunner;
74
import org.netbeans.api.project.Project;
74
import org.netbeans.api.project.Project;
75
import org.netbeans.api.project.ProjectActions;
75
import org.netbeans.api.project.ProjectUtils;
76
import org.netbeans.api.project.ProjectUtils;
76
import org.netbeans.api.project.SourceGroup;
77
import org.netbeans.api.project.SourceGroup;
77
import org.netbeans.api.project.ui.OpenProjects;
78
import org.netbeans.api.project.ui.OpenProjects;
Lines 108-115 Link Here
108
public class CosChecker implements PrerequisitesChecker, LateBoundPrerequisitesChecker {
109
public class CosChecker implements PrerequisitesChecker, LateBoundPrerequisitesChecker {
109
110
110
    static final String NB_COS = ".netbeans_automatic_build"; //NOI18N
111
    static final String NB_COS = ".netbeans_automatic_build"; //NOI18N
111
    private static final String RUN_MAIN = ActionProvider.COMMAND_RUN_SINGLE + ".main"; //NOI18N
112
    private static final String RUN_MAIN = ProjectActions.COMMAND_RUN_SINGLE + ".main"; //NOI18N
112
    private static final String DEBUG_MAIN = ActionProvider.COMMAND_DEBUG_SINGLE + ".main"; //NOI18N
113
    private static final String DEBUG_MAIN = ProjectActions.COMMAND_DEBUG_SINGLE + ".main"; //NOI18N
113
114
114
    public boolean checkRunConfig(RunConfig config) {
115
    public boolean checkRunConfig(RunConfig config) {
115
        if (config.getProject() == null) {
116
        if (config.getProject() == null) {
Lines 132-138 Link Here
132
        // we only can rely on Run via JavaRunner and via DeployOnSave
133
        // we only can rely on Run via JavaRunner and via DeployOnSave
133
        // any other means of long term execution will not keep the CoS stamp around while running..
134
        // any other means of long term execution will not keep the CoS stamp around while running..
134
        // -->> ONLY DELETE FOR BUILD ACTION
135
        // -->> ONLY DELETE FOR BUILD ACTION
135
        if (ActionProvider.COMMAND_BUILD.equals(config.getActionName())) {
136
        if (ProjectActions.COMMAND_BUILD.equals(config.getActionName())) {
136
            deleteCoSTimeStamp(config, true);
137
            deleteCoSTimeStamp(config, true);
137
            deleteCoSTimeStamp(config, false);
138
            deleteCoSTimeStamp(config, false);
138
            //do clean the generated class files everytime, that won't hurt anything
139
            //do clean the generated class files everytime, that won't hurt anything
Lines 145-151 Link Here
145
                    }
146
                    }
146
                Logger.getLogger(CosChecker.class.getName()).log(Level.INFO, "Compile on Save Clean failed", ex);
147
                Logger.getLogger(CosChecker.class.getName()).log(Level.INFO, "Compile on Save Clean failed", ex);
147
            }
148
            }
148
        } else if (!ActionProvider.COMMAND_REBUILD.equals(config.getActionName())) {
149
        } else if (!ProjectActions.COMMAND_REBUILD.equals(config.getActionName())) {
149
            //now for all custom and non-build only related actions,
150
            //now for all custom and non-build only related actions,
150
            //make sure we place the stamp files into all opened projects.
151
            //make sure we place the stamp files into all opened projects.
151
            Project[] opened = OpenProjects.getDefault().getOpenProjects();
152
            Project[] opened = OpenProjects.getDefault().getOpenProjects();
Lines 229-236 Link Here
229
        if (RunUtils.hasApplicationCompileOnSaveEnabled(config)) {
230
        if (RunUtils.hasApplicationCompileOnSaveEnabled(config)) {
230
            if ((NbMavenProject.TYPE_JAR.equals(
231
            if ((NbMavenProject.TYPE_JAR.equals(
231
                    config.getProject().getLookup().lookup(NbMavenProject.class).getPackagingType()) &&
232
                    config.getProject().getLookup().lookup(NbMavenProject.class).getPackagingType()) &&
232
                    (ActionProvider.COMMAND_RUN.equals(actionName) ||
233
                    (ProjectActions.COMMAND_RUN.equals(actionName) ||
233
                    ActionProvider.COMMAND_DEBUG.equals(actionName))) ||
234
                    ProjectActions.COMMAND_DEBUG.equals(actionName))) ||
234
                    RUN_MAIN.equals(actionName) ||
235
                    RUN_MAIN.equals(actionName) ||
235
                    DEBUG_MAIN.equals(actionName)) {
236
                    DEBUG_MAIN.equals(actionName)) {
236
                long stamp = getLastCoSLastTouch(config, false);
237
                long stamp = getLastCoSLastTouch(config, false);
Lines 319-326 Link Here
319
    private boolean checkRunTest(RunConfig config) {
320
    private boolean checkRunTest(RunConfig config) {
320
        String actionName = config.getActionName();
321
        String actionName = config.getActionName();
321
        if (RunUtils.hasTestCompileOnSaveEnabled(config) &&
322
        if (RunUtils.hasTestCompileOnSaveEnabled(config) &&
322
                (ActionProvider.COMMAND_TEST_SINGLE.equals(actionName) ||
323
                (ProjectActions.COMMAND_TEST_SINGLE.equals(actionName) ||
323
                ActionProvider.COMMAND_DEBUG_TEST_SINGLE.equals(actionName))) {
324
                ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equals(actionName))) {
324
            String testng = PluginPropertyUtils.getPluginProperty(config.getMavenProject(), Constants.GROUP_APACHE_PLUGINS,
325
            String testng = PluginPropertyUtils.getPluginProperty(config.getMavenProject(), Constants.GROUP_APACHE_PLUGINS,
325
                    Constants.PLUGIN_SUREFIRE, "testNGArtifactName", "test"); //NOI18N
326
                    Constants.PLUGIN_SUREFIRE, "testNGArtifactName", "test"); //NOI18N
326
            if (testng == null) {
327
            if (testng == null) {
Lines 451-457 Link Here
451
                    }
452
                    }
452
                    if (DefaultReplaceTokenProvider.METHOD_NAME.equals(entry.getKey())) {
453
                    if (DefaultReplaceTokenProvider.METHOD_NAME.equals(entry.getKey())) {
453
                        params.put("methodname", entry.getValue()); // NOI18N
454
                        params.put("methodname", entry.getValue()); // NOI18N
454
                        actionName = ActionProvider.COMMAND_TEST_SINGLE.equals(actionName) ? SingleMethod.COMMAND_RUN_SINGLE_METHOD : SingleMethod.COMMAND_DEBUG_SINGLE_METHOD;
455
                        actionName = ProjectActions.COMMAND_TEST_SINGLE.equals(actionName) ? SingleMethod.COMMAND_RUN_SINGLE_METHOD : SingleMethod.COMMAND_DEBUG_SINGLE_METHOD;
455
                        continue;
456
                        continue;
456
                    }
457
                    }
457
                    //TODO do these have preference to ones defined in surefire plugin?
458
                    //TODO do these have preference to ones defined in surefire plugin?
Lines 727-741 Link Here
727
    }
728
    }
728
729
729
    private String action2Quick(String actionName) {
730
    private String action2Quick(String actionName) {
730
        if (ActionProvider.COMMAND_CLEAN.equals(actionName)) {
731
        if (ProjectActions.COMMAND_CLEAN.equals(actionName)) {
731
            return JavaRunner.QUICK_CLEAN;
732
            return JavaRunner.QUICK_CLEAN;
732
        } else if (ActionProvider.COMMAND_RUN.equals(actionName) || RUN_MAIN.equals(actionName)) {
733
        } else if (ProjectActions.COMMAND_RUN.equals(actionName) || RUN_MAIN.equals(actionName)) {
733
            return JavaRunner.QUICK_RUN;
734
            return JavaRunner.QUICK_RUN;
734
        } else if (ActionProvider.COMMAND_DEBUG.equals(actionName) || DEBUG_MAIN.equals(actionName)) {
735
        } else if (ProjectActions.COMMAND_DEBUG.equals(actionName) || DEBUG_MAIN.equals(actionName)) {
735
            return JavaRunner.QUICK_DEBUG;
736
            return JavaRunner.QUICK_DEBUG;
736
        } else if (ActionProvider.COMMAND_TEST.equals(actionName) || ActionProvider.COMMAND_TEST_SINGLE.equals(actionName) || SingleMethod.COMMAND_RUN_SINGLE_METHOD.equals(actionName)) {
737
        } else if (ProjectActions.COMMAND_TEST.equals(actionName) || ProjectActions.COMMAND_TEST_SINGLE.equals(actionName) || SingleMethod.COMMAND_RUN_SINGLE_METHOD.equals(actionName)) {
737
            return JavaRunner.QUICK_TEST;
738
            return JavaRunner.QUICK_TEST;
738
        } else if (ActionProvider.COMMAND_DEBUG_TEST_SINGLE.equals(actionName) || SingleMethod.COMMAND_DEBUG_SINGLE_METHOD.equals(actionName)) {
739
        } else if (ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equals(actionName) || SingleMethod.COMMAND_DEBUG_SINGLE_METHOD.equals(actionName)) {
739
            return JavaRunner.QUICK_TEST_DEBUG;
740
            return JavaRunner.QUICK_TEST_DEBUG;
740
        }
741
        }
741
        assert false : "Cannot convert " + actionName + " to quick actions.";
742
        assert false : "Cannot convert " + actionName + " to quick actions.";
(-)a/maven/src/org/netbeans/modules/maven/customizer/ActionMappings.java (-26 / +27 lines)
Lines 79-84 Link Here
79
import javax.swing.event.DocumentEvent;
79
import javax.swing.event.DocumentEvent;
80
import javax.swing.event.DocumentListener;
80
import javax.swing.event.DocumentListener;
81
import org.netbeans.api.annotations.common.NullAllowed;
81
import org.netbeans.api.annotations.common.NullAllowed;
82
import org.netbeans.api.project.ProjectActions;
82
import org.netbeans.modules.maven.spi.grammar.GoalsProvider;
83
import org.netbeans.modules.maven.spi.grammar.GoalsProvider;
83
import org.netbeans.modules.maven.api.customizer.ModelHandle;
84
import org.netbeans.modules.maven.api.customizer.ModelHandle;
84
import org.netbeans.modules.maven.NbMavenProjectImpl;
85
import org.netbeans.modules.maven.NbMavenProjectImpl;
Lines 179-198 Link Here
179
        this();
180
        this();
180
        project = proj;
181
        project = proj;
181
        handle = hand;
182
        handle = hand;
182
        titles.put(ActionProvider.COMMAND_BUILD, NbBundle.getMessage(ActionMappings.class, "COM_Build_project"));
183
        titles.put(ProjectActions.COMMAND_BUILD, NbBundle.getMessage(ActionMappings.class, "COM_Build_project"));
183
        titles.put(ActionProvider.COMMAND_CLEAN, NbBundle.getMessage(ActionMappings.class, "COM_Clean_project"));
184
        titles.put(ProjectActions.COMMAND_CLEAN, NbBundle.getMessage(ActionMappings.class, "COM_Clean_project"));
184
        titles.put(ActionProvider.COMMAND_COMPILE_SINGLE, NbBundle.getMessage(ActionMappings.class, "COM_Compile_file"));
185
        titles.put(ProjectActions.COMMAND_COMPILE_SINGLE, NbBundle.getMessage(ActionMappings.class, "COM_Compile_file"));
185
        titles.put(ActionProvider.COMMAND_DEBUG, NbBundle.getMessage(ActionMappings.class, "COM_Debug_project"));
186
        titles.put(ProjectActions.COMMAND_DEBUG, NbBundle.getMessage(ActionMappings.class, "COM_Debug_project"));
186
        titles.put(ActionProvider.COMMAND_DEBUG_SINGLE + ".main", NbBundle.getMessage(ActionMappings.class, "COM_Debug_file_main"));
187
        titles.put(ProjectActions.COMMAND_DEBUG_SINGLE + ".main", NbBundle.getMessage(ActionMappings.class, "COM_Debug_file_main"));
187
        titles.put(ActionProvider.COMMAND_DEBUG_SINGLE + ".deploy", NbBundle.getMessage(ActionMappings.class, "COM_Debug_file_deploy"));
188
        titles.put(ProjectActions.COMMAND_DEBUG_SINGLE + ".deploy", NbBundle.getMessage(ActionMappings.class, "COM_Debug_file_deploy"));
188
        titles.put(ActionProvider.COMMAND_DEBUG_STEP_INTO, null);
189
        titles.put(ProjectActions.COMMAND_DEBUG_STEP_INTO, null);
189
        titles.put(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, NbBundle.getMessage(ActionMappings.class, "COM_Debug_test"));
190
        titles.put(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, NbBundle.getMessage(ActionMappings.class, "COM_Debug_test"));
190
        titles.put(ActionProvider.COMMAND_REBUILD, NbBundle.getMessage(ActionMappings.class, "COM_ReBuild_project"));
191
        titles.put(ProjectActions.COMMAND_REBUILD, NbBundle.getMessage(ActionMappings.class, "COM_ReBuild_project"));
191
        titles.put(ActionProvider.COMMAND_RUN, NbBundle.getMessage(ActionMappings.class, "COM_Run_project"));
192
        titles.put(ProjectActions.COMMAND_RUN, NbBundle.getMessage(ActionMappings.class, "COM_Run_project"));
192
        titles.put(ActionProvider.COMMAND_RUN_SINGLE + ".main", NbBundle.getMessage(ActionMappings.class, "COM_Run_file_main"));
193
        titles.put(ProjectActions.COMMAND_RUN_SINGLE + ".main", NbBundle.getMessage(ActionMappings.class, "COM_Run_file_main"));
193
        titles.put(ActionProvider.COMMAND_RUN_SINGLE + ".deploy", NbBundle.getMessage(ActionMappings.class, "COM_Run_file_deploy"));
194
        titles.put(ProjectActions.COMMAND_RUN_SINGLE + ".deploy", NbBundle.getMessage(ActionMappings.class, "COM_Run_file_deploy"));
194
        titles.put(ActionProvider.COMMAND_TEST, NbBundle.getMessage(ActionMappings.class, "COM_Test_project"));
195
        titles.put(ProjectActions.COMMAND_TEST, NbBundle.getMessage(ActionMappings.class, "COM_Test_project"));
195
        titles.put(ActionProvider.COMMAND_TEST_SINGLE, NbBundle.getMessage(ActionMappings.class, "COM_Test_file"));
196
        titles.put(ProjectActions.COMMAND_TEST_SINGLE, NbBundle.getMessage(ActionMappings.class, "COM_Test_file"));
196
        titles.put("profile", NbBundle.getMessage(ActionMappings.class, "COM_Profile_project"));
197
        titles.put("profile", NbBundle.getMessage(ActionMappings.class, "COM_Profile_project"));
197
        titles.put("javadoc", NbBundle.getMessage(ActionMappings.class, "COM_Javadoc_project"));
198
        titles.put("javadoc", NbBundle.getMessage(ActionMappings.class, "COM_Javadoc_project"));
198
        titles.put(ActionProviderImpl.BUILD_WITH_DEPENDENCIES, NbBundle.getMessage(ActionMappings.class, "COM_Build_WithDeps_project"));
199
        titles.put(ActionProviderImpl.BUILD_WITH_DEPENDENCIES, NbBundle.getMessage(ActionMappings.class, "COM_Build_WithDeps_project"));
Lines 565-587 Link Here
565
566
566
        if (handle != null) {
567
        if (handle != null) {
567
            boolean isWar = NbMavenProject.TYPE_WAR.equalsIgnoreCase(project.getProjectWatcher().getPackagingType());
568
            boolean isWar = NbMavenProject.TYPE_WAR.equalsIgnoreCase(project.getProjectWatcher().getPackagingType());
568
            addSingleAction(ActionProvider.COMMAND_BUILD, model);
569
            addSingleAction(ProjectActions.COMMAND_BUILD, model);
569
            addSingleAction(ActionProvider.COMMAND_CLEAN, model);
570
            addSingleAction(ProjectActions.COMMAND_CLEAN, model);
570
            addSingleAction(ActionProvider.COMMAND_REBUILD, model);
571
            addSingleAction(ProjectActions.COMMAND_REBUILD, model);
571
            addSingleAction(ActionProviderImpl.BUILD_WITH_DEPENDENCIES, model);
572
            addSingleAction(ActionProviderImpl.BUILD_WITH_DEPENDENCIES, model);
572
            addSingleAction(ActionProvider.COMMAND_TEST, model);
573
            addSingleAction(ProjectActions.COMMAND_TEST, model);
573
            addSingleAction(ActionProvider.COMMAND_TEST_SINGLE, model);
574
            addSingleAction(ProjectActions.COMMAND_TEST_SINGLE, model);
574
            addSingleAction(ActionProvider.COMMAND_RUN, model);
575
            addSingleAction(ProjectActions.COMMAND_RUN, model);
575
            addSingleAction(ActionProvider.COMMAND_RUN_SINGLE + ".main", model); //NOI18N
576
            addSingleAction(ProjectActions.COMMAND_RUN_SINGLE + ".main", model); //NOI18N
576
            if (isWar) {
577
            if (isWar) {
577
                addSingleAction(ActionProvider.COMMAND_RUN_SINGLE + ".deploy", model); //NOI18N
578
                addSingleAction(ProjectActions.COMMAND_RUN_SINGLE + ".deploy", model); //NOI18N
578
            }
579
            }
579
            addSingleAction(ActionProvider.COMMAND_DEBUG, model);
580
            addSingleAction(ProjectActions.COMMAND_DEBUG, model);
580
            addSingleAction(ActionProvider.COMMAND_DEBUG_SINGLE + ".main", model); //NOI18N
581
            addSingleAction(ProjectActions.COMMAND_DEBUG_SINGLE + ".main", model); //NOI18N
581
            if (isWar) {
582
            if (isWar) {
582
                addSingleAction(ActionProvider.COMMAND_DEBUG_SINGLE + ".deploy", model); //NOI18N
583
                addSingleAction(ProjectActions.COMMAND_DEBUG_SINGLE + ".deploy", model); //NOI18N
583
            }
584
            }
584
            addSingleAction(ActionProvider.COMMAND_DEBUG_TEST_SINGLE, model);
585
            addSingleAction(ProjectActions.COMMAND_DEBUG_TEST_SINGLE, model);
585
            addSingleAction("profile", model); //NOI18N
586
            addSingleAction("profile", model); //NOI18N
586
            addSingleAction("javadoc", model); //NOI18N
587
            addSingleAction("javadoc", model); //NOI18N
587
        }
588
        }
(-)a/maven/src/org/netbeans/modules/maven/customizer/RunJarPanel.java (-4 / +5 lines)
Lines 68-73 Link Here
68
import org.netbeans.modules.maven.classpath.MavenSourcesImpl;
68
import org.netbeans.modules.maven.classpath.MavenSourcesImpl;
69
import org.netbeans.modules.maven.NbMavenProjectImpl;
69
import org.netbeans.modules.maven.NbMavenProjectImpl;
70
import org.netbeans.api.java.project.JavaProjectConstants;
70
import org.netbeans.api.java.project.JavaProjectConstants;
71
import org.netbeans.api.project.ProjectActions;
71
import org.netbeans.api.project.ProjectUtils;
72
import org.netbeans.api.project.ProjectUtils;
72
import org.netbeans.api.project.SourceGroup;
73
import org.netbeans.api.project.SourceGroup;
73
import org.netbeans.api.project.Sources;
74
import org.netbeans.api.project.Sources;
Lines 197-206 Link Here
197
        @SuppressWarnings("unchecked")
198
        @SuppressWarnings("unchecked")
198
        List<NetbeansActionMapping> lst = mapp.getActions();
199
        List<NetbeansActionMapping> lst = mapp.getActions();
199
        for (NetbeansActionMapping m : lst) {
200
        for (NetbeansActionMapping m : lst) {
200
            if (ActionProvider.COMMAND_RUN.equals(m.getActionName())) {
201
            if (ProjectActions.COMMAND_RUN.equals(m.getActionName())) {
201
                run = m;
202
                run = m;
202
            }
203
            }
203
            if (ActionProvider.COMMAND_DEBUG.equals(m.getActionName())) {
204
            if (ProjectActions.COMMAND_DEBUG.equals(m.getActionName())) {
204
                debug = m;
205
                debug = m;
205
            }
206
            }
206
            if (PROFILE_CMD.equals(m.getActionName())) {
207
            if (PROFILE_CMD.equals(m.getActionName())) {
Lines 208-217 Link Here
208
            }
209
            }
209
        }
210
        }
210
        if (run == null) {
211
        if (run == null) {
211
            run = ModelHandle.getDefaultMapping(ActionProvider.COMMAND_RUN, project);
212
            run = ModelHandle.getDefaultMapping(ProjectActions.COMMAND_RUN, project);
212
        }
213
        }
213
        if (debug == null) {
214
        if (debug == null) {
214
            debug = ModelHandle.getDefaultMapping(ActionProvider.COMMAND_DEBUG, project);
215
            debug = ModelHandle.getDefaultMapping(ProjectActions.COMMAND_DEBUG, project);
215
        }
216
        }
216
        if (profile == null) {
217
        if (profile == null) {
217
            profile = ModelHandle.getDefaultMapping(PROFILE_CMD, project);
218
            profile = ModelHandle.getDefaultMapping(PROFILE_CMD, project);
(-)a/maven/src/org/netbeans/modules/maven/debug/DebuggerChecker.java (-2 / +3 lines)
Lines 54-59 Link Here
54
import org.netbeans.api.java.classpath.ClassPath;
54
import org.netbeans.api.java.classpath.ClassPath;
55
import org.netbeans.api.java.queries.SourceForBinaryQuery;
55
import org.netbeans.api.java.queries.SourceForBinaryQuery;
56
import org.netbeans.api.project.Project;
56
import org.netbeans.api.project.Project;
57
import org.netbeans.api.project.ProjectActions;
57
import org.netbeans.modules.maven.api.Constants;
58
import org.netbeans.modules.maven.api.Constants;
58
import org.netbeans.modules.maven.api.NbMavenProject;
59
import org.netbeans.modules.maven.api.NbMavenProject;
59
import org.netbeans.modules.maven.api.PluginPropertyUtils;
60
import org.netbeans.modules.maven.api.PluginPropertyUtils;
Lines 88-94 Link Here
88
            return true;
89
            return true;
89
        }
90
        }
90
        boolean debug = "true".equalsIgnoreCase(config.getProperties().get(Constants.ACTION_PROPERTY_JPDALISTEN));//NOI18N
91
        boolean debug = "true".equalsIgnoreCase(config.getProperties().get(Constants.ACTION_PROPERTY_JPDALISTEN));//NOI18N
91
        if (debug && ActionProvider.COMMAND_DEBUG_TEST_SINGLE.equalsIgnoreCase(config.getActionName()) && config.getGoals().contains("surefire:test")) { //NOI18N - just a safeguard
92
        if (debug && ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equalsIgnoreCase(config.getActionName()) && config.getGoals().contains("surefire:test")) { //NOI18N - just a safeguard
92
            String newArgs = config.getProperties().get(MAVENSUREFIREDEBUG); //NOI18N
93
            String newArgs = config.getProperties().get(MAVENSUREFIREDEBUG); //NOI18N
93
            String oldArgs = config.getProperties().get(ARGLINE); //NOI18N
94
            String oldArgs = config.getProperties().get(ARGLINE); //NOI18N
94
95
Lines 160-166 Link Here
160
                LOGGER.log(Level.INFO, th.getMessage(), th);
161
                LOGGER.log(Level.INFO, th.getMessage(), th);
161
            }
162
            }
162
        }
163
        }
163
        if (ActionProvider.COMMAND_DEBUG_STEP_INTO.equals(config.getActionName())) {
164
        if (ProjectActions.COMMAND_DEBUG_STEP_INTO.equals(config.getActionName())) {
164
            //TODO - change the goal from compile to test-compile in case of file coming from
165
            //TODO - change the goal from compile to test-compile in case of file coming from
165
            //the test source roots..
166
            //the test source roots..
166
        }
167
        }
(-)a/maven/src/org/netbeans/modules/maven/execute/ActionToGoalUtils.java (-4 / +5 lines)
Lines 58-63 Link Here
58
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
58
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
59
import org.netbeans.api.progress.ProgressHandle;
59
import org.netbeans.api.progress.ProgressHandle;
60
import org.netbeans.api.project.Project;
60
import org.netbeans.api.project.Project;
61
import org.netbeans.api.project.ProjectActions;
61
import org.netbeans.api.project.ProjectUtils;
62
import org.netbeans.api.project.ProjectUtils;
62
import org.netbeans.modules.maven.api.FileUtilities;
63
import org.netbeans.modules.maven.api.FileUtilities;
63
import org.netbeans.modules.maven.api.execute.ExecutionContext;
64
import org.netbeans.modules.maven.api.execute.ExecutionContext;
Lines 109-115 Link Here
109
        
110
        
110
        if (rc == null) {
111
        if (rc == null) {
111
            // for build and rebuild check the pom for default goal and run that one..
112
            // for build and rebuild check the pom for default goal and run that one..
112
            if (ActionProvider.COMMAND_BUILD.equals(action) || ActionProvider.COMMAND_REBUILD.equals(action)) {
113
            if (ProjectActions.COMMAND_BUILD.equals(action) || ProjectActions.COMMAND_REBUILD.equals(action)) {
113
                Build bld = project.getOriginalMavenProject().getBuild();
114
                Build bld = project.getOriginalMavenProject().getBuild();
114
                if (bld != null) {
115
                if (bld != null) {
115
                    String goal = bld.getDefaultGoal();
116
                    String goal = bld.getDefaultGoal();
Lines 122-128 Link Here
122
                        while (tok.hasMoreTokens()) {
123
                        while (tok.hasMoreTokens()) {
123
                            toRet.add(tok.nextToken());
124
                            toRet.add(tok.nextToken());
124
                        }
125
                        }
125
                        if (ActionProvider.COMMAND_REBUILD.equals(action)) {
126
                        if (ProjectActions.COMMAND_REBUILD.equals(action)) {
126
                            toRet.add(0, "clean"); //NOI18N
127
                            toRet.add(0, "clean"); //NOI18N
127
                            }
128
                            }
128
                        brc.setGoals(toRet);
129
                        brc.setGoals(toRet);
Lines 163-170 Link Here
163
            return true;
164
            return true;
164
        }
165
        }
165
166
166
        if (ActionProvider.COMMAND_BUILD.equals(action) ||
167
        if (ProjectActions.COMMAND_BUILD.equals(action) ||
167
                ActionProvider.COMMAND_REBUILD.equals(action)) {
168
                ProjectActions.COMMAND_REBUILD.equals(action)) {
168
            Build bld = project.getOriginalMavenProject().getBuild();
169
            Build bld = project.getOriginalMavenProject().getBuild();
169
            if (bld != null) {
170
            if (bld != null) {
170
                String goal = bld.getDefaultGoal();
171
                String goal = bld.getDefaultGoal();
(-)a/maven/src/org/netbeans/modules/maven/execute/DefaultReplaceTokenProvider.java (-6 / +7 lines)
Lines 53-58 Link Here
53
import org.netbeans.api.java.source.ClasspathInfo;
53
import org.netbeans.api.java.source.ClasspathInfo;
54
import org.netbeans.api.java.source.SourceUtils;
54
import org.netbeans.api.java.source.SourceUtils;
55
import org.netbeans.api.project.Project;
55
import org.netbeans.api.project.Project;
56
import org.netbeans.api.project.ProjectActions;
56
import org.netbeans.api.project.ProjectUtils;
57
import org.netbeans.api.project.ProjectUtils;
57
import org.netbeans.api.project.SourceGroup;
58
import org.netbeans.api.project.SourceGroup;
58
import org.netbeans.api.project.Sources;
59
import org.netbeans.api.project.Sources;
Lines 152-159 Link Here
152
            replaceMap.put(CLASSPATHSCOPE,"runtime"); //NOI18N
153
            replaceMap.put(CLASSPATHSCOPE,"runtime"); //NOI18N
153
        }
154
        }
154
        if (tuple.group != null && MavenSourcesImpl.NAME_SOURCE.equals(tuple.group.getName()) &&
155
        if (tuple.group != null && MavenSourcesImpl.NAME_SOURCE.equals(tuple.group.getName()) &&
155
                (ActionProvider.COMMAND_TEST_SINGLE.equals(actionName) ||
156
                (ProjectActions.COMMAND_TEST_SINGLE.equals(actionName) ||
156
                ActionProvider.COMMAND_DEBUG_TEST_SINGLE.equals(actionName))) {
157
                ProjectActions.COMMAND_DEBUG_TEST_SINGLE.equals(actionName))) {
157
            String withExt = replaceMap.get(CLASSNAME_EXT);
158
            String withExt = replaceMap.get(CLASSNAME_EXT);
158
            if (withExt != null && withExt.endsWith(".java")) {//NOI18N
159
            if (withExt != null && withExt.endsWith(".java")) {//NOI18N
159
                replaceMap.put(CLASSNAME_EXT, withExt.replace(".java", "Test.java"));//NOI18N
160
                replaceMap.put(CLASSNAME_EXT, withExt.replace(".java", "Test.java"));//NOI18N
Lines 246-258 Link Here
246
247
247
    @Override public String convert(String action, Lookup lookup) {
248
    @Override public String convert(String action, Lookup lookup) {
248
        if (SingleMethod.COMMAND_DEBUG_SINGLE_METHOD.equals(action)) {
249
        if (SingleMethod.COMMAND_DEBUG_SINGLE_METHOD.equals(action)) {
249
            return ActionProvider.COMMAND_DEBUG_TEST_SINGLE;
250
            return ProjectActions.COMMAND_DEBUG_TEST_SINGLE;
250
        }
251
        }
251
        if (SingleMethod.COMMAND_RUN_SINGLE_METHOD.equals(action)) {
252
        if (SingleMethod.COMMAND_RUN_SINGLE_METHOD.equals(action)) {
252
            return ActionProvider.COMMAND_TEST_SINGLE;
253
            return ProjectActions.COMMAND_TEST_SINGLE;
253
        }
254
        }
254
        if (ActionProvider.COMMAND_RUN_SINGLE.equals(action) ||
255
        if (ProjectActions.COMMAND_RUN_SINGLE.equals(action) ||
255
            ActionProvider.COMMAND_DEBUG_SINGLE.equals(action)) {
256
            ProjectActions.COMMAND_DEBUG_SINGLE.equals(action)) {
256
            FileObject[] fos = extractFileObjectsfromLookup(lookup);
257
            FileObject[] fos = extractFileObjectsfromLookup(lookup);
257
            if (fos.length > 0) {
258
            if (fos.length > 0) {
258
                FileObject fo = fos[0];
259
                FileObject fo = fos[0];
(-)a/maven/src/org/netbeans/modules/maven/runjar/RunJarPrereqChecker.java (-2 / +3 lines)
Lines 52-57 Link Here
52
import javax.swing.event.ChangeListener;
52
import javax.swing.event.ChangeListener;
53
import org.netbeans.api.java.project.JavaProjectConstants;
53
import org.netbeans.api.java.project.JavaProjectConstants;
54
import org.netbeans.api.project.Project;
54
import org.netbeans.api.project.Project;
55
import org.netbeans.api.project.ProjectActions;
55
import org.netbeans.api.project.ProjectUtils;
56
import org.netbeans.api.project.ProjectUtils;
56
import org.netbeans.api.project.SourceGroup;
57
import org.netbeans.api.project.SourceGroup;
57
import org.netbeans.api.project.Sources;
58
import org.netbeans.api.project.Sources;
Lines 102-109 Link Here
102
            }
103
            }
103
        }
104
        }
104
105
105
        if ((ActionProvider.COMMAND_RUN.equals(actionName) ||
106
        if ((ProjectActions.COMMAND_RUN.equals(actionName) ||
106
                ActionProvider.COMMAND_DEBUG.equals(actionName) ||
107
                ProjectActions.COMMAND_DEBUG.equals(actionName) ||
107
                "profile".equals(actionName))) {
108
                "profile".equals(actionName))) {
108
            String mc = null;
109
            String mc = null;
109
            for (Map.Entry<? extends String,? extends String> entry : config.getProperties().entrySet()) {
110
            for (Map.Entry<? extends String,? extends String> entry : config.getProperties().entrySet()) {
(-)a/maven/src/org/netbeans/modules/maven/runjar/RunJarStartupArgs.java (-4 / +5 lines)
Lines 47-52 Link Here
47
import java.util.Map;
47
import java.util.Map;
48
import org.netbeans.api.extexecution.startup.StartupExtender;
48
import org.netbeans.api.extexecution.startup.StartupExtender;
49
import org.netbeans.api.project.Project;
49
import org.netbeans.api.project.Project;
50
import org.netbeans.api.project.ProjectActions;
50
import org.netbeans.modules.maven.api.NbMavenProject;
51
import org.netbeans.modules.maven.api.NbMavenProject;
51
import org.netbeans.modules.maven.api.execute.ActiveJ2SEPlatformProvider;
52
import org.netbeans.modules.maven.api.execute.ActiveJ2SEPlatformProvider;
52
import org.netbeans.modules.maven.api.execute.ExecutionContext;
53
import org.netbeans.modules.maven.api.execute.ExecutionContext;
Lines 61-75 Link Here
61
public class RunJarStartupArgs implements LateBoundPrerequisitesChecker {
62
public class RunJarStartupArgs implements LateBoundPrerequisitesChecker {
62
63
63
    // XXX introduce constant w/ CosChecker, ActionMappings, DefaultReplaceTokenProvider
64
    // XXX introduce constant w/ CosChecker, ActionMappings, DefaultReplaceTokenProvider
64
    private static final String RUN_MAIN = ActionProvider.COMMAND_RUN_SINGLE + ".main";
65
    private static final String RUN_MAIN = ProjectActions.COMMAND_RUN_SINGLE + ".main";
65
    private static final String DEBUG_MAIN = ActionProvider.COMMAND_DEBUG_SINGLE + ".main";
66
    private static final String DEBUG_MAIN = ProjectActions.COMMAND_DEBUG_SINGLE + ".main";
66
67
67
    @Override public boolean checkRunConfig(RunConfig config, ExecutionContext con) {
68
    @Override public boolean checkRunConfig(RunConfig config, ExecutionContext con) {
68
        String actionName = config.getActionName();
69
        String actionName = config.getActionName();
69
        StartupExtender.StartMode mode;
70
        StartupExtender.StartMode mode;
70
        if (ActionProvider.COMMAND_RUN.equals(actionName) || RUN_MAIN.equals(actionName)) {
71
        if (ProjectActions.COMMAND_RUN.equals(actionName) || RUN_MAIN.equals(actionName)) {
71
            mode = StartupExtender.StartMode.NORMAL;
72
            mode = StartupExtender.StartMode.NORMAL;
72
        } else if (ActionProvider.COMMAND_DEBUG.equals(actionName) || DEBUG_MAIN.equals(actionName)) {
73
        } else if (ProjectActions.COMMAND_DEBUG.equals(actionName) || DEBUG_MAIN.equals(actionName)) {
73
            mode = StartupExtender.StartMode.DEBUG;
74
            mode = StartupExtender.StartMode.DEBUG;
74
        } else if ("profile".equals(actionName)) {
75
        } else if ("profile".equals(actionName)) {
75
            mode = StartupExtender.StartMode.PROFILE;
76
            mode = StartupExtender.StartMode.PROFILE;
(-)a/projectapi/nbproject/project.xml (+9 lines)
Lines 50-55 Link Here
50
            <code-name-base>org.netbeans.modules.projectapi</code-name-base>
50
            <code-name-base>org.netbeans.modules.projectapi</code-name-base>
51
            <module-dependencies>
51
            <module-dependencies>
52
                <dependency>
52
                <dependency>
53
                    <code-name-base>org.netbeans.api.annotations.common</code-name-base>
54
                    <build-prerequisite/>
55
                    <compile-dependency/>
56
                    <run-dependency>
57
                        <release-version>1</release-version>
58
                        <specification-version>1.13</specification-version>
59
                    </run-dependency>
60
                </dependency>
61
                <dependency>
53
                    <code-name-base>org.netbeans.modules.queries</code-name-base>
62
                    <code-name-base>org.netbeans.modules.queries</code-name-base>
54
                    <build-prerequisite/>
63
                    <build-prerequisite/>
55
                    <compile-dependency/>
64
                    <compile-dependency/>
(-)a/projectapi/src/META-INF/upgrade/ActionProvider.hint (+16 lines)
Line 0 Link Here
1
org.netbeans.spi.project.ActionProvider.COMMAND_BUILD => org.netbeans.api.project.ProjectActions.COMMAND_BUILD;;
2
org.netbeans.spi.project.ActionProvider.COMMAND_COMPILE_SINGLE => org.netbeans.api.project.ProjectActions.COMMAND_COMPILE_SINGLE;;
3
org.netbeans.spi.project.ActionProvider.COMMAND_CLEAN => org.netbeans.api.project.ProjectActions.COMMAND_CLEAN;;
4
org.netbeans.spi.project.ActionProvider.COMMAND_REBUILD => org.netbeans.api.project.ProjectActions.COMMAND_REBUILD;;
5
org.netbeans.spi.project.ActionProvider.COMMAND_RUN => org.netbeans.api.project.ProjectActions.COMMAND_RUN;;
6
org.netbeans.spi.project.ActionProvider.COMMAND_RUN_SINGLE => org.netbeans.api.project.ProjectActions.COMMAND_RUN_SINGLE;;
7
org.netbeans.spi.project.ActionProvider.COMMAND_TEST => org.netbeans.api.project.ProjectActions.COMMAND_TEST;;
8
org.netbeans.spi.project.ActionProvider.COMMAND_TEST_SINGLE => org.netbeans.api.project.ProjectActions.COMMAND_TEST_SINGLE;;
9
org.netbeans.spi.project.ActionProvider.COMMAND_DEBUG => org.netbeans.api.project.ProjectActions.COMMAND_DEBUG;;
10
org.netbeans.spi.project.ActionProvider.COMMAND_DEBUG_SINGLE => org.netbeans.api.project.ProjectActions.COMMAND_DEBUG_SINGLE;;
11
org.netbeans.spi.project.ActionProvider.COMMAND_DEBUG_TEST_SINGLE => org.netbeans.api.project.ProjectActions.COMMAND_DEBUG_TEST_SINGLE;;
12
org.netbeans.spi.project.ActionProvider.COMMAND_DEBUG_STEP_INTO => org.netbeans.api.project.ProjectActions.COMMAND_DEBUG_STEP_INTO;;
13
org.netbeans.spi.project.ActionProvider.COMMAND_DELETE => org.netbeans.api.project.ProjectActions.COMMAND_DELETE;;
14
org.netbeans.spi.project.ActionProvider.COMMAND_COPY => org.netbeans.api.project.ProjectActions.COMMAND_COPY;;
15
org.netbeans.spi.project.ActionProvider.COMMAND_MOVE => org.netbeans.api.project.ProjectActions.COMMAND_MOVE;;
16
org.netbeans.spi.project.ActionProvider.COMMAND_RENAME => org.netbeans.api.project.ProjectActions.COMMAND_RENAME;;
(-)a/projectapi/src/org/netbeans/api/project/Project.java (-1 / +1 lines)
Lines 94-100 Link Here
94
     * <li><a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/LogicalViewProvider.html"><code>LogicalViewProvider</code></a></li>
94
     * <li><a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/LogicalViewProvider.html"><code>LogicalViewProvider</code></a></li>
95
     * <li><a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/CustomizerProvider.html"><code>CustomizerProvider</code></a></li>
95
     * <li><a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/CustomizerProvider.html"><code>CustomizerProvider</code></a></li>
96
     * <li>{@link org.netbeans.api.project.Sources}</li>
96
     * <li>{@link org.netbeans.api.project.Sources}</li>
97
     * <li>{@link org.netbeans.spi.project.ActionProvider}</li>
97
     * <li>{@link org.netbeans.spi.project.ActionProvider2}</li>
98
     * <li>{@link org.netbeans.spi.project.SubprojectProvider}</li>
98
     * <li>{@link org.netbeans.spi.project.SubprojectProvider}</li>
99
     * <li>{@link org.netbeans.spi.project.AuxiliaryConfiguration}</li>
99
     * <li>{@link org.netbeans.spi.project.AuxiliaryConfiguration}</li>
100
     * <li>{@link org.netbeans.spi.project.AuxiliaryProperties}</li>
100
     * <li>{@link org.netbeans.spi.project.AuxiliaryProperties}</li>
(-)a/projectapi/src/org/netbeans/api/project/ProjectActions.java (+208 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2012 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
41
 */
42
43
package org.netbeans.api.project;
44
45
import java.util.Arrays;
46
import java.util.concurrent.Callable;
47
import java.util.concurrent.Future;
48
import org.netbeans.api.annotations.common.CheckForNull;
49
import org.netbeans.api.annotations.common.NonNull;
50
import org.netbeans.spi.project.ActionProvider2;
51
import org.netbeans.spi.project.SingleMethod;
52
import org.openide.util.Exceptions;
53
import org.openide.util.Lookup;
54
import org.openide.util.RequestProcessor;
55
56
/**
57
 * Defines and manages actions exported by projects.
58
 * Each possible action is identified by a command string;
59
 * this class defines some commonly used ones, such as {@link #COMMAND_BUILD}.
60
 * @see ActionProvider2
61
 * @see SingleMethod
62
 * @since XXX
63
 */
64
public class ProjectActions {
65
66
    private static final RequestProcessor RP = new RequestProcessor(ProjectActions.class.getName(), Integer.MAX_VALUE);
67
68
    /**
69
     * Prepare to run an action.
70
     * @param project a project to run the action on
71
     * @param command a predefined command string
72
     * @param context an action context
73
     * @return a callback to run the action, or null if disabled (or just not recognized by this project)
74
     */
75
    public static @CheckForNull Callable<Boolean> prepare(@NonNull Project project, final @NonNull String command, final @NonNull Lookup context) {
76
        for (ActionProvider2 ap2 : project.getLookup().lookupAll(ActionProvider2.class)) {
77
            Callable<Boolean> task = ap2.prepare(command, context);
78
            if (task != null) {
79
                return task;
80
            }
81
        }
82
        @SuppressWarnings("deprecation")
83
        final org.netbeans.spi.project.ActionProvider ap = project.getLookup().lookup(org.netbeans.spi.project.ActionProvider.class);
84
        if (ap != null && Arrays.asList(ap.getSupportedActions()).contains(command)) {
85
            try {
86
                if (ap.isActionEnabled(command, context)) {
87
                    return new Callable<Boolean>() {
88
                        @Override public Boolean call() throws Exception {
89
                            ap.invokeAction(command, context);
90
                            return true;
91
                        }
92
                    };
93
                }
94
            } catch (IllegalArgumentException x) {
95
                Exceptions.printStackTrace(x);
96
            }
97
        }
98
        return null;
99
    }
100
101
    /**
102
     * Convenience method to run an action if it is enabled.
103
     * The return value may be safely ignored if you do not depend on the result.
104
     * @param project a project to run the action on
105
     * @param command a predefined command string
106
     * @param context an action context
107
     * @return a task representing the result; will be false if the action is not defined or enabled, or was run but failed
108
     */
109
    public static @NonNull Future<Boolean> run(@NonNull Project project, @NonNull String command, @NonNull Lookup context) {
110
        Callable<Boolean> task = prepare(project, command, context);
111
        if (task == null) {
112
            task = new Callable<Boolean>() {
113
                @Override public Boolean call() throws Exception {
114
                    return false;
115
                }
116
            };
117
        }
118
        return RP.submit(task);
119
    }
120
121
    /**
122
     * Standard command to incrementally build the project.
123
     */
124
    public static final String COMMAND_BUILD = "build"; // NOI18N
125
126
    /**
127
     * Standard command for compiling set of files
128
     */
129
    public static final String COMMAND_COMPILE_SINGLE = "compile.single"; // NOI18N
130
131
    /**
132
     * Standard command to clean build products.
133
     */
134
    public static final String COMMAND_CLEAN = "clean"; // NOI18N
135
136
    /**
137
     * Standard command to do a "clean" (forced) rebuild.
138
     */
139
    public static final String COMMAND_REBUILD = "rebuild"; // NOI18N
140
141
    /**
142
     * Standard command for running the project
143
     */
144
    public static final String COMMAND_RUN = "run"; // NOI18N
145
146
    /**
147
     * Standard command for running one file
148
     *
149
     * @see  SingleMethod#COMMAND_RUN_SINGLE_METHOD
150
     */
151
    public static final String COMMAND_RUN_SINGLE = "run.single"; // NOI18N
152
153
    /**
154
     * Standard command for running tests on given projects
155
     */
156
    public static final String COMMAND_TEST = "test"; // NOI18N
157
158
    /**
159
     * Standard command for running one test file
160
     */
161
    public static final String COMMAND_TEST_SINGLE = "test.single";  // NOI18N
162
163
    /**
164
     * Standard command for running the project in debugger
165
     */
166
    public static final String COMMAND_DEBUG = "debug"; // NOI18N
167
168
    /**
169
     * Standard command for running single file in debugger
170
     *
171
     * @see  SingleMethod#COMMAND_DEBUG_SINGLE_METHOD
172
     */
173
    public static final String COMMAND_DEBUG_SINGLE = "debug.single"; // NOI18N
174
175
    /**
176
     * Standard command for running one test in debugger
177
     */
178
    public static final String COMMAND_DEBUG_TEST_SINGLE = "debug.test.single"; // NOI18N
179
180
    /**
181
     * Standard command for starting app in debugger and stopping at the
182
     * beginning of app whatever that means.
183
     */
184
    public static final String COMMAND_DEBUG_STEP_INTO = "debug.stepinto"; // NOI18N
185
186
    /**
187
     * Standard command for deleting the project.
188
     */
189
    public static final String COMMAND_DELETE = "delete"; // NOI18N
190
191
    /**
192
     * Standard command for deleting the project.
193
     */
194
    public static final String COMMAND_COPY = "copy"; // NOI18N
195
196
    /**
197
     * Standard command for moving the project.
198
     */
199
    public static final String COMMAND_MOVE = "move"; // NOI18N
200
201
    /**
202
     * Standard command for renaming the project.
203
     */
204
    public static final String COMMAND_RENAME = "rename"; // NOI18N
205
206
    private ProjectActions() {}
207
208
}
(-)a/projectapi/src/org/netbeans/spi/project/ActionProvider.java (-92 / +19 lines)
Lines 44-49 Link Here
44
44
45
package org.netbeans.spi.project;
45
package org.netbeans.spi.project;
46
46
47
import org.netbeans.api.project.ProjectActions;
47
import org.openide.util.ContextAwareAction;
48
import org.openide.util.ContextAwareAction;
48
import org.openide.util.Lookup;
49
import org.openide.util.Lookup;
49
50
Lines 61-161 Link Here
61
 * @see <a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/support/ProjectSensitiveActions.html#projectCommandAction(java.lang.String,%20java.lang.String,%20javax.swing.Icon)"><code>ProjectSensitiveActions.projectCommandAction(...)</code></a>
62
 * @see <a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/support/ProjectSensitiveActions.html#projectCommandAction(java.lang.String,%20java.lang.String,%20javax.swing.Icon)"><code>ProjectSensitiveActions.projectCommandAction(...)</code></a>
62
 * @see SingleMethod
63
 * @see SingleMethod
63
 * @author Jesse Glick
64
 * @author Jesse Glick
65
 * @deprecated Use {@link ActionProvider2} and {@link ProjectActions} instead.
64
 */
66
 */
67
@Deprecated
65
public interface ActionProvider {
68
public interface ActionProvider {
66
    
69
    
67
    /**
70
    String COMMAND_BUILD = ProjectActions.COMMAND_BUILD;
68
     * Standard command to incrementally build the project.
71
    String COMMAND_COMPILE_SINGLE = ProjectActions.COMMAND_COMPILE_SINGLE;
69
     */
72
    String COMMAND_CLEAN = ProjectActions.COMMAND_CLEAN;
70
    String COMMAND_BUILD = "build"; // NOI18N
73
    String COMMAND_REBUILD = ProjectActions.COMMAND_REBUILD;
71
    
74
    String COMMAND_RUN = ProjectActions.COMMAND_RUN;
72
    /** 
75
    String COMMAND_RUN_SINGLE = ProjectActions.COMMAND_RUN_SINGLE;
73
     * Standard command for compiling set of files
76
    String COMMAND_TEST = ProjectActions.COMMAND_TEST;
74
     */
77
    String COMMAND_TEST_SINGLE = ProjectActions.COMMAND_TEST_SINGLE;
75
    String COMMAND_COMPILE_SINGLE = "compile.single"; // NOI18N
78
    String COMMAND_DEBUG = ProjectActions.COMMAND_DEBUG;
76
        
79
    String COMMAND_DEBUG_SINGLE = ProjectActions.COMMAND_DEBUG_SINGLE;
77
    /**
80
    String COMMAND_DEBUG_TEST_SINGLE = ProjectActions.COMMAND_DEBUG_TEST_SINGLE;
78
     * Standard command to clean build products.
81
    String COMMAND_DEBUG_STEP_INTO = ProjectActions.COMMAND_DEBUG_STEP_INTO;
79
     */
82
    String COMMAND_DELETE = ProjectActions.COMMAND_DELETE;
80
    String COMMAND_CLEAN = "clean"; // NOI18N
83
    String COMMAND_COPY = ProjectActions.COMMAND_COPY;
81
    
84
    String COMMAND_MOVE = ProjectActions.COMMAND_MOVE;
82
    /**
85
    String COMMAND_RENAME = ProjectActions.COMMAND_RENAME;
83
     * Standard command to do a "clean" (forced) rebuild.
84
     */
85
    String COMMAND_REBUILD = "rebuild"; // NOI18N
86
        
87
    /** 
88
     * Standard command for running the project
89
     */
90
    String COMMAND_RUN = "run"; // NOI18N
91
92
    /** 
93
     * Standard command for running one file
94
     *
95
     * @see  SingleMethod#COMMAND_RUN_SINGLE_METHOD
96
     */
97
    String COMMAND_RUN_SINGLE = "run.single"; // NOI18N
98
    
99
    /** 
100
     * Standard command for running tests on given projects
101
     */
102
    String COMMAND_TEST = "test"; // NOI18N
103
    
104
    /** 
105
     * Standard command for running one test file
106
     */    
107
    String COMMAND_TEST_SINGLE = "test.single";  // NOI18N
108
    
109
    /**
110
     * Standard command for running the project in debugger
111
     */    
112
    String COMMAND_DEBUG = "debug"; // NOI18N
113
    
114
    /**
115
     * Standard command for running single file in debugger
116
     *
117
     * @see  SingleMethod#COMMAND_DEBUG_SINGLE_METHOD
118
     */    
119
    String COMMAND_DEBUG_SINGLE = "debug.single"; // NOI18N
120
    
121
    /** 
122
     * Standard command for running one test in debugger
123
     */
124
    String COMMAND_DEBUG_TEST_SINGLE = "debug.test.single"; // NOI18N
125
    
126
    /** 
127
     * Standard command for starting app in debugger and stopping at the 
128
     * beginning of app whatever that means.
129
     */
130
    String COMMAND_DEBUG_STEP_INTO = "debug.stepinto"; // NOI18N
131
    
132
    /**
133
     * Standard command for deleting the project.
134
     *
135
     * @since 1.6
136
     */
137
    String COMMAND_DELETE = "delete"; // NOI18N
138
    
139
    /**
140
     * Standard command for deleting the project.
141
     *
142
     * @since 1.7
143
     */
144
    String COMMAND_COPY = "copy"; // NOI18N
145
    
146
    /**
147
     * Standard command for moving the project.
148
     *
149
     * @since 1.7
150
     */
151
    String COMMAND_MOVE = "move"; // NOI18N
152
153
    /**
154
     * Standard command for renaming the project.
155
     *
156
     * @since 1.7
157
     */
158
    String COMMAND_RENAME = "rename"; // NOI18N
159
    
86
    
160
    /**
87
    /**
161
     * Get a list of all commands which this project supports.
88
     * Get a list of all commands which this project supports.
(-)a/projectapi/src/org/netbeans/spi/project/ActionProvider2.java (+82 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2012 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2012 Sun Microsystems, Inc.
41
 */
42
43
package org.netbeans.spi.project;
44
45
import java.util.concurrent.Callable;
46
import org.netbeans.api.annotations.common.CheckForNull;
47
import org.netbeans.api.annotations.common.NonNull;
48
import org.netbeans.api.project.Project;
49
import org.netbeans.api.project.ProjectActions;
50
import org.openide.util.ContextAwareAction;
51
import org.openide.util.Lookup;
52
53
/**
54
 * Ability for a project to have various actions (such as Build) invoked on it.
55
 * Should be registered in a project's lookup and will be used by UI infrastructure.
56
 * Do not search for this service in a project's lookup directly; use {@link ProjectActions} instead.
57
 * <p>
58
 * Implementations supporting single file commands (command constants ending with
59
 * {@code _SINGLE}) can also be registered in default lookup. If a provider in project
60
 * lookup does not enable the action for a given command on the selected file then
61
 * the first implementation found in default lookup that is enabled will be used.
62
 * </p>
63
 * @see Project#getLookup
64
 * @see ProjectActions
65
 * @see <a href="@org-apache-tools-ant-module@/org/apache/tools/ant/module/api/support/ActionUtils.html"><code>ActionUtils</code></a>
66
 * @see <a href="@org-netbeans-modules-projectuiapi@/org/netbeans/spi/project/ui/support/ProjectSensitiveActions.html#projectCommandAction(java.lang.String,%20java.lang.String,%20javax.swing.Icon)"><code>ProjectSensitiveActions.projectCommandAction(...)</code></a>
67
 * @since XXX
68
 */
69
public interface ActionProvider2 {
70
71
    /**
72
     * Prepare to run a command.
73
     * @param command a predefined command name, such as those given in {@link ProjectActions}
74
     * @param context any action context, e.g. for a node selection
75
     *                (as in {@link ContextAwareAction})
76
     * @return null if the command is unrecognized or it would be disabled in this context;
77
     *          else a task which should block until the action completes and return true if it succeeded,
78
     *          false if it failed in some way (e.g. compilation failed)
79
     */
80
    @CheckForNull Callable<Boolean> prepare(@NonNull String command, @NonNull Lookup context);
81
82
}
(-)a/projectapi/src/org/netbeans/spi/project/support/LookupProviderSupport.java (-12 / +16 lines)
Lines 53-59 Link Here
53
import javax.swing.event.ChangeListener;
53
import javax.swing.event.ChangeListener;
54
import org.netbeans.api.project.SourceGroup;
54
import org.netbeans.api.project.SourceGroup;
55
import org.netbeans.api.project.Sources;
55
import org.netbeans.api.project.Sources;
56
import org.netbeans.spi.project.ActionProvider;
56
import org.netbeans.spi.project.ActionProvider2;
57
import org.netbeans.spi.project.LookupMerger;
57
import org.netbeans.spi.project.LookupMerger;
58
import org.netbeans.spi.project.LookupProvider;
58
import org.netbeans.spi.project.LookupProvider;
59
import org.openide.util.ChangeSupport;
59
import org.openide.util.ChangeSupport;
Lines 109-116 Link Here
109
     * enabled on it_will perform it.
109
     * enabled on it_will perform it.
110
     * @return instance to include in project lookup
110
     * @return instance to include in project lookup
111
     * @since 1.38
111
     * @since 1.38
112
     * @deprecated Use {@link ActionProvider2} instead (no need for a merger).
112
     */
113
     */
113
    public static LookupMerger<ActionProvider> createActionProviderMerger() {
114
    @Deprecated
115
    public static LookupMerger<org.netbeans.spi.project.ActionProvider> createActionProviderMerger() {
114
        return new ActionProviderMerger();
116
        return new ActionProviderMerger();
115
    }
117
    }
116
118
Lines 196-221 Link Here
196
        }
198
        }
197
    }
199
    }
198
200
199
    private static final class ActionProviderMerger implements LookupMerger<ActionProvider> {
201
    @Deprecated
202
    private static final class ActionProviderMerger implements LookupMerger<org.netbeans.spi.project.ActionProvider> {
200
        @Override
203
        @Override
201
        public Class<ActionProvider> getMergeableClass() {
204
        public Class<org.netbeans.spi.project.ActionProvider> getMergeableClass() {
202
            return ActionProvider.class;
205
            return org.netbeans.spi.project.ActionProvider.class;
203
        }
206
        }
204
207
205
        @Override
208
        @Override
206
        public ActionProvider merge(final Lookup lookup) {
209
        public org.netbeans.spi.project.ActionProvider merge(final Lookup lookup) {
207
            return new MergedActionProvider(lookup);
210
            return new MergedActionProvider(lookup);
208
        }
211
        }
209
    }
212
    }
210
213
211
    private static final class MergedActionProvider implements ActionProvider, LookupListener {
214
    @Deprecated
215
    private static final class MergedActionProvider implements org.netbeans.spi.project.ActionProvider, LookupListener {
212
216
213
        private final Lookup.Result<ActionProvider> lkpResult;
217
        private final Lookup.Result<org.netbeans.spi.project.ActionProvider> lkpResult;
214
        @SuppressWarnings("VolatileArrayField")
218
        @SuppressWarnings("VolatileArrayField")
215
        private volatile String[] actionNamesCache;
219
        private volatile String[] actionNamesCache;
216
220
217
        private MergedActionProvider(final Lookup lkp) {
221
        private MergedActionProvider(final Lookup lkp) {
218
            this.lkpResult = lkp.lookupResult(ActionProvider.class);
222
            this.lkpResult = lkp.lookupResult(org.netbeans.spi.project.ActionProvider.class);
219
            this.lkpResult.addLookupListener(this);
223
            this.lkpResult.addLookupListener(this);
220
        }
224
        }
221
225
Lines 224-230 Link Here
224
            String[] result = actionNamesCache;
228
            String[] result = actionNamesCache;
225
            if (result == null) {
229
            if (result == null) {
226
                final Set<String> actionNames = new LinkedHashSet <String>();
230
                final Set<String> actionNames = new LinkedHashSet <String>();
227
                for (ActionProvider ap : lkpResult.allInstances()) {
231
                for (org.netbeans.spi.project.ActionProvider ap : lkpResult.allInstances()) {
228
                    actionNames.addAll(Arrays.asList(ap.getSupportedActions()));
232
                    actionNames.addAll(Arrays.asList(ap.getSupportedActions()));
229
                }
233
                }
230
                result = actionNames.toArray(new String[actionNames.size()]);
234
                result = actionNames.toArray(new String[actionNames.size()]);
Lines 237-243 Link Here
237
        @Override
241
        @Override
238
        public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
242
        public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
239
            boolean found = false;
243
            boolean found = false;
240
            for (ActionProvider ap : lkpResult.allInstances()) {
244
            for (org.netbeans.spi.project.ActionProvider ap : lkpResult.allInstances()) {
241
                if (Arrays.asList(ap.getSupportedActions()).contains(command)) {
245
                if (Arrays.asList(ap.getSupportedActions()).contains(command)) {
242
                    if (ap.isActionEnabled(command, context)) {
246
                    if (ap.isActionEnabled(command, context)) {
243
                        return true;
247
                        return true;
Lines 255-261 Link Here
255
259
256
        @Override
260
        @Override
257
        public void invokeAction(String command, Lookup context) throws IllegalArgumentException {
261
        public void invokeAction(String command, Lookup context) throws IllegalArgumentException {
258
            for (ActionProvider ap : lkpResult.allInstances()) {
262
            for (org.netbeans.spi.project.ActionProvider ap : lkpResult.allInstances()) {
259
                if (Arrays.asList(ap.getSupportedActions()).contains(command) &&
263
                if (Arrays.asList(ap.getSupportedActions()).contains(command) &&
260
                    ap.isActionEnabled(command, context)) {
264
                    ap.isActionEnabled(command, context)) {
261
                    ap.invokeAction(command, context);
265
                    ap.invokeAction(command, context);
(-)a/projectapi/test/unit/src/org/netbeans/spi/project/support/LookupProviderSupportTest.java (-40 / +41 lines)
Lines 55-60 Link Here
55
import java.util.Map;
55
import java.util.Map;
56
import javax.swing.Icon;
56
import javax.swing.Icon;
57
import javax.swing.event.ChangeListener;
57
import javax.swing.event.ChangeListener;
58
import org.netbeans.api.project.ProjectActions;
58
import org.netbeans.api.project.SourceGroup;
59
import org.netbeans.api.project.SourceGroup;
59
import org.netbeans.api.project.Sources;
60
import org.netbeans.api.project.Sources;
60
import org.netbeans.junit.NbTestCase;
61
import org.netbeans.junit.NbTestCase;
Lines 149-166 Link Here
149
    public void testActionProviderMerger() throws Exception {
150
    public void testActionProviderMerger() throws Exception {
150
        final ActionProviderImpl ap1 = new ActionProviderImpl(new LinkedHashMap<String,Boolean>(){
151
        final ActionProviderImpl ap1 = new ActionProviderImpl(new LinkedHashMap<String,Boolean>(){
151
            {
152
            {
152
                put(ActionProvider.COMMAND_CLEAN,Boolean.TRUE);
153
                put(ProjectActions.COMMAND_CLEAN,Boolean.TRUE);
153
                put(ActionProvider.COMMAND_BUILD,Boolean.TRUE);
154
                put(ProjectActions.COMMAND_BUILD,Boolean.TRUE);
154
                put(ActionProvider.COMMAND_REBUILD,Boolean.TRUE);
155
                put(ProjectActions.COMMAND_REBUILD,Boolean.TRUE);
155
                put(ActionProvider.COMMAND_COMPILE_SINGLE,Boolean.FALSE);
156
                put(ProjectActions.COMMAND_COMPILE_SINGLE,Boolean.FALSE);
156
            }
157
            }
157
        });
158
        });
158
        final ActionProviderImpl ap2 = new ActionProviderImpl(new LinkedHashMap<String,Boolean>(){
159
        final ActionProviderImpl ap2 = new ActionProviderImpl(new LinkedHashMap<String,Boolean>(){
159
            {
160
            {
160
                put(ActionProvider.COMMAND_RUN,Boolean.TRUE);
161
                put(ProjectActions.COMMAND_RUN,Boolean.TRUE);
161
                put(ActionProvider.COMMAND_TEST,Boolean.TRUE);
162
                put(ProjectActions.COMMAND_TEST,Boolean.TRUE);
162
                put(ActionProvider.COMMAND_DEBUG,Boolean.FALSE);
163
                put(ProjectActions.COMMAND_DEBUG,Boolean.FALSE);
163
                put(ActionProvider.COMMAND_COMPILE_SINGLE,Boolean.TRUE);
164
                put(ProjectActions.COMMAND_COMPILE_SINGLE,Boolean.TRUE);
164
            }
165
            }
165
        });
166
        });
166
167
Lines 168-224 Link Here
168
        assertEquals(ActionProvider.class,merger.getMergeableClass());
169
        assertEquals(ActionProvider.class,merger.getMergeableClass());
169
        final ActionProvider ap = merger.merge(Lookups.fixed(ap1,ap2));
170
        final ActionProvider ap = merger.merge(Lookups.fixed(ap1,ap2));
170
        assertEquals(Arrays.asList(new String[] {
171
        assertEquals(Arrays.asList(new String[] {
171
                ActionProvider.COMMAND_CLEAN,
172
                ProjectActions.COMMAND_CLEAN,
172
                ActionProvider.COMMAND_BUILD,
173
                ProjectActions.COMMAND_BUILD,
173
                ActionProvider.COMMAND_REBUILD,
174
                ProjectActions.COMMAND_REBUILD,
174
                ActionProvider.COMMAND_COMPILE_SINGLE,
175
                ProjectActions.COMMAND_COMPILE_SINGLE,
175
                ActionProvider.COMMAND_RUN,
176
                ProjectActions.COMMAND_RUN,
176
                ActionProvider.COMMAND_TEST,
177
                ProjectActions.COMMAND_TEST,
177
                ActionProvider.COMMAND_DEBUG,
178
                ProjectActions.COMMAND_DEBUG,
178
            }),
179
            }),
179
            Arrays.asList(ap.getSupportedActions()));
180
            Arrays.asList(ap.getSupportedActions()));
180
        assertTrue(ap.isActionEnabled(ActionProvider.COMMAND_CLEAN, Lookup.EMPTY));
181
        assertTrue(ap.isActionEnabled(ProjectActions.COMMAND_CLEAN, Lookup.EMPTY));
181
        assertTrue(ap.isActionEnabled(ActionProvider.COMMAND_BUILD, Lookup.EMPTY));
182
        assertTrue(ap.isActionEnabled(ProjectActions.COMMAND_BUILD, Lookup.EMPTY));
182
        assertTrue(ap.isActionEnabled(ActionProvider.COMMAND_REBUILD, Lookup.EMPTY));
183
        assertTrue(ap.isActionEnabled(ProjectActions.COMMAND_REBUILD, Lookup.EMPTY));
183
        assertTrue(ap.isActionEnabled(ActionProvider.COMMAND_COMPILE_SINGLE, Lookup.EMPTY));
184
        assertTrue(ap.isActionEnabled(ProjectActions.COMMAND_COMPILE_SINGLE, Lookup.EMPTY));
184
        assertTrue(ap.isActionEnabled(ActionProvider.COMMAND_RUN, Lookup.EMPTY));
185
        assertTrue(ap.isActionEnabled(ProjectActions.COMMAND_RUN, Lookup.EMPTY));
185
        assertTrue(ap.isActionEnabled(ActionProvider.COMMAND_TEST, Lookup.EMPTY));
186
        assertTrue(ap.isActionEnabled(ProjectActions.COMMAND_TEST, Lookup.EMPTY));
186
        assertFalse(ap.isActionEnabled(ActionProvider.COMMAND_DEBUG, Lookup.EMPTY));
187
        assertFalse(ap.isActionEnabled(ProjectActions.COMMAND_DEBUG, Lookup.EMPTY));
187
        try {
188
        try {
188
            ap.isActionEnabled(ActionProvider.COMMAND_MOVE, Lookup.EMPTY);
189
            ap.isActionEnabled(ProjectActions.COMMAND_MOVE, Lookup.EMPTY);
189
            throw new AssertionError("IAE should be thrown");   //NOI18N
190
            throw new AssertionError("IAE should be thrown");   //NOI18N
190
        } catch (IllegalArgumentException iae) {
191
        } catch (IllegalArgumentException iae) {
191
            assertEquals(ActionProvider.COMMAND_MOVE, iae.getMessage());
192
            assertEquals(ProjectActions.COMMAND_MOVE, iae.getMessage());
192
        }
193
        }
193
        ap.invokeAction(ActionProvider.COMMAND_CLEAN, Lookup.EMPTY);
194
        ap.invokeAction(ProjectActions.COMMAND_CLEAN, Lookup.EMPTY);
194
        assertEquals(ActionProvider.COMMAND_CLEAN,ap1.cleanInvokedTarget());
195
        assertEquals(ProjectActions.COMMAND_CLEAN,ap1.cleanInvokedTarget());
195
        assertNull(ap2.cleanInvokedTarget());
196
        assertNull(ap2.cleanInvokedTarget());
196
        ap.invokeAction(ActionProvider.COMMAND_BUILD, Lookup.EMPTY);
197
        ap.invokeAction(ProjectActions.COMMAND_BUILD, Lookup.EMPTY);
197
        assertEquals(ActionProvider.COMMAND_BUILD,ap1.cleanInvokedTarget());
198
        assertEquals(ProjectActions.COMMAND_BUILD,ap1.cleanInvokedTarget());
198
        assertNull(ap2.cleanInvokedTarget());
199
        assertNull(ap2.cleanInvokedTarget());
199
        ap.invokeAction(ActionProvider.COMMAND_REBUILD, Lookup.EMPTY);
200
        ap.invokeAction(ProjectActions.COMMAND_REBUILD, Lookup.EMPTY);
200
        assertEquals(ActionProvider.COMMAND_REBUILD,ap1.cleanInvokedTarget());
201
        assertEquals(ProjectActions.COMMAND_REBUILD,ap1.cleanInvokedTarget());
201
        assertNull(ap2.cleanInvokedTarget());
202
        assertNull(ap2.cleanInvokedTarget());
202
        ap.invokeAction(ActionProvider.COMMAND_COMPILE_SINGLE, Lookup.EMPTY);
203
        ap.invokeAction(ProjectActions.COMMAND_COMPILE_SINGLE, Lookup.EMPTY);
203
        assertNull(ap1.cleanInvokedTarget());
204
        assertNull(ap1.cleanInvokedTarget());
204
        assertEquals(ActionProvider.COMMAND_COMPILE_SINGLE,ap2.cleanInvokedTarget());
205
        assertEquals(ProjectActions.COMMAND_COMPILE_SINGLE,ap2.cleanInvokedTarget());
205
        ap.invokeAction(ActionProvider.COMMAND_RUN, Lookup.EMPTY);
206
        ap.invokeAction(ProjectActions.COMMAND_RUN, Lookup.EMPTY);
206
        assertNull(ap1.cleanInvokedTarget());
207
        assertNull(ap1.cleanInvokedTarget());
207
        assertEquals(ActionProvider.COMMAND_RUN,ap2.cleanInvokedTarget());
208
        assertEquals(ProjectActions.COMMAND_RUN,ap2.cleanInvokedTarget());
208
        ap.invokeAction(ActionProvider.COMMAND_TEST, Lookup.EMPTY);
209
        ap.invokeAction(ProjectActions.COMMAND_TEST, Lookup.EMPTY);
209
        assertNull(ap1.cleanInvokedTarget());
210
        assertNull(ap1.cleanInvokedTarget());
210
        assertEquals(ActionProvider.COMMAND_TEST,ap2.cleanInvokedTarget());
211
        assertEquals(ProjectActions.COMMAND_TEST,ap2.cleanInvokedTarget());
211
        try {
212
        try {
212
            ap.invokeAction(ActionProvider.COMMAND_DEBUG, Lookup.EMPTY);
213
            ap.invokeAction(ProjectActions.COMMAND_DEBUG, Lookup.EMPTY);
213
            throw new AssertionError("IAE should be thrown");   //NOI18N
214
            throw new AssertionError("IAE should be thrown");   //NOI18N
214
        } catch (IllegalArgumentException iae) {
215
        } catch (IllegalArgumentException iae) {
215
            assertEquals(ActionProvider.COMMAND_DEBUG, iae.getMessage());
216
            assertEquals(ProjectActions.COMMAND_DEBUG, iae.getMessage());
216
        }
217
        }
217
        try {
218
        try {
218
            ap.invokeAction(ActionProvider.COMMAND_MOVE, Lookup.EMPTY);
219
            ap.invokeAction(ProjectActions.COMMAND_MOVE, Lookup.EMPTY);
219
            throw new AssertionError("IAE should be thrown");   //NOI18N
220
            throw new AssertionError("IAE should be thrown");   //NOI18N
220
        } catch (IllegalArgumentException iae) {
221
        } catch (IllegalArgumentException iae) {
221
            assertEquals(ActionProvider.COMMAND_MOVE, iae.getMessage());
222
            assertEquals(ProjectActions.COMMAND_MOVE, iae.getMessage());
222
        }
223
        }
223
    }
224
    }
224
225
(-)a/projectui/src/org/netbeans/modules/project/ui/ProjectsRootNode.java (-15 / +3 lines)
Lines 70-81 Link Here
70
import org.netbeans.api.annotations.common.StaticResource;
70
import org.netbeans.api.annotations.common.StaticResource;
71
import org.netbeans.api.project.FileOwnerQuery;
71
import org.netbeans.api.project.FileOwnerQuery;
72
import org.netbeans.api.project.Project;
72
import org.netbeans.api.project.Project;
73
import org.netbeans.api.project.ProjectActions;
73
import org.netbeans.spi.project.ProjectIconAnnotator;
74
import org.netbeans.spi.project.ProjectIconAnnotator;
74
import org.netbeans.api.project.ProjectManager;
75
import org.netbeans.api.project.ProjectManager;
75
import org.netbeans.api.project.ProjectUtils;
76
import org.netbeans.api.project.ProjectUtils;
76
import org.netbeans.api.project.SourceGroup;
77
import org.netbeans.api.project.SourceGroup;
77
import org.netbeans.api.project.Sources;
78
import org.netbeans.api.project.Sources;
78
import org.netbeans.spi.project.ActionProvider;
79
import org.netbeans.spi.project.ui.LogicalViewProvider;
79
import org.netbeans.spi.project.ui.LogicalViewProvider;
80
import org.openide.filesystems.FileChangeAdapter;
80
import org.openide.filesystems.FileChangeAdapter;
81
import org.openide.filesystems.FileChangeListener;
81
import org.openide.filesystems.FileChangeListener;
Lines 86-92 Link Here
86
import org.openide.filesystems.FileStatusListener;
86
import org.openide.filesystems.FileStatusListener;
87
import org.openide.filesystems.FileSystem;
87
import org.openide.filesystems.FileSystem;
88
import org.openide.filesystems.FileUtil;
88
import org.openide.filesystems.FileUtil;
89
import org.openide.loaders.DataObject;
90
import org.openide.nodes.AbstractNode;
89
import org.openide.nodes.AbstractNode;
91
import org.openide.nodes.Children;
90
import org.openide.nodes.Children;
92
import org.openide.nodes.FilterNode;
91
import org.openide.nodes.FilterNode;
Lines 842-858 Link Here
842
            if (p == null) {
841
            if (p == null) {
843
                return false;
842
                return false;
844
            }
843
            }
845
            ActionProvider ap = p.getLookup().lookup(ActionProvider.class);
844
            return ProjectActions.prepare(p, ProjectActions.COMMAND_DELETE, getLookup()) != null;
846
847
            String[] sa = ap != null ? ap.getSupportedActions() : new String[0];
848
            int k = sa.length;
849
850
            for (int i = 0; i < k; i++) {
851
                if (ActionProvider.COMMAND_DELETE.equals(sa[i])) {
852
                    return ap.isActionEnabled(ActionProvider.COMMAND_DELETE, getLookup());
853
                }
854
            }
855
            return false;
856
        }
845
        }
857
846
858
        @Override
847
        @Override
Lines 861-868 Link Here
861
            if (p == null) {
850
            if (p == null) {
862
                return;
851
                return;
863
            }
852
            }
864
            ActionProvider ap = p.getLookup().lookup(ActionProvider.class);
853
            ProjectActions.run(p, ProjectActions.COMMAND_DELETE, getLookup());
865
            ap.invokeAction(ActionProvider.COMMAND_DELETE, getLookup());
866
        }
854
        }
867
    } // end of BadgingNode
855
    } // end of BadgingNode
868
    private static final class BadgingLookup extends ProxyLookup {
856
    private static final class BadgingLookup extends ProxyLookup {
(-)a/projectui/src/org/netbeans/modules/project/ui/actions/Actions.java (-18 / +18 lines)
Lines 48-61 Link Here
48
import java.beans.PropertyChangeListener;
48
import java.beans.PropertyChangeListener;
49
import javax.swing.Action;
49
import javax.swing.Action;
50
import javax.swing.Icon;
50
import javax.swing.Icon;
51
import org.netbeans.api.project.ProjectActions;
51
import org.netbeans.modules.project.uiapi.ActionsFactory;
52
import org.netbeans.modules.project.uiapi.ActionsFactory;
52
import org.netbeans.spi.project.ActionProvider;
53
import org.netbeans.spi.project.ui.support.FileActionPerformer;
53
import org.netbeans.spi.project.ui.support.FileActionPerformer;
54
import org.netbeans.spi.project.ui.support.ProjectActionPerformer;
54
import org.netbeans.spi.project.ui.support.ProjectActionPerformer;
55
import org.openide.util.ContextAwareAction;
55
import org.openide.util.ContextAwareAction;
56
import org.openide.util.Exceptions;
56
import org.openide.util.Exceptions;
57
import org.openide.util.ImageUtilities;
57
import org.openide.util.ImageUtilities;
58
import org.openide.util.Lookup;
59
import org.openide.util.NbBundle;
58
import org.openide.util.NbBundle;
60
import org.openide.util.actions.SystemAction;
59
import org.openide.util.actions.SystemAction;
61
60
Lines 179-185 Link Here
179
    
178
    
180
    public static Action testProject() {        
179
    public static Action testProject() {        
181
        Action a = new ProjectAction (
180
        Action a = new ProjectAction (
182
            ActionProvider.COMMAND_TEST,
181
            ProjectActions.COMMAND_TEST,
183
            NbBundle.getMessage(Actions.class, "LBL_TestProjectAction_Name"),
182
            NbBundle.getMessage(Actions.class, "LBL_TestProjectAction_Name"),
184
            NbBundle.getMessage(Actions.class, "LBL_TestProjectAction_Name_popup"),
183
            NbBundle.getMessage(Actions.class, "LBL_TestProjectAction_Name_popup"),
185
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/testProject.png", false),
184
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/testProject.png", false),
Lines 192-198 Link Here
192
    
191
    
193
    public static Action buildProject() {
192
    public static Action buildProject() {
194
        Action a = new ProjectAction (
193
        Action a = new ProjectAction (
195
            ActionProvider.COMMAND_BUILD, 
194
            ProjectActions.COMMAND_BUILD,
196
            NbBundle.getMessage(Actions.class, "LBL_BuildProjectAction_Name"),
195
            NbBundle.getMessage(Actions.class, "LBL_BuildProjectAction_Name"),
197
            NbBundle.getMessage(Actions.class, "LBL_BuildProjectAction_Name_popup"),
196
            NbBundle.getMessage(Actions.class, "LBL_BuildProjectAction_Name_popup"),
198
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/buildCurrentProject.gif", false),
197
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/buildCurrentProject.gif", false),
Lines 202-209 Link Here
202
    }
201
    }
203
    
202
    
204
    public static Action cleanProject() {
203
    public static Action cleanProject() {
204
        @SuppressWarnings("deprecation")
205
        Action a = new ProjectAction(
205
        Action a = new ProjectAction(
206
                ActionProvider.COMMAND_CLEAN,
206
                ProjectActions.COMMAND_CLEAN,
207
                NbBundle.getMessage(Actions.class, "LBL_CleanProjectAction_Name"),
207
                NbBundle.getMessage(Actions.class, "LBL_CleanProjectAction_Name"),
208
                NbBundle.getMessage(Actions.class, "LBL_CleanProjectAction_Name_popup"),
208
                NbBundle.getMessage(Actions.class, "LBL_CleanProjectAction_Name_popup"),
209
                ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/cleanCurrentProject.gif", false),
209
                ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/cleanCurrentProject.gif", false),
Lines 214-220 Link Here
214
    
214
    
215
    public static Action rebuildProject() {
215
    public static Action rebuildProject() {
216
        Action a = new ProjectAction(
216
        Action a = new ProjectAction(
217
            ActionProvider.COMMAND_REBUILD,
217
            ProjectActions.COMMAND_REBUILD,
218
            NbBundle.getMessage(Actions.class, "LBL_RebuildProjectAction_Name"),
218
            NbBundle.getMessage(Actions.class, "LBL_RebuildProjectAction_Name"),
219
            NbBundle.getMessage(Actions.class, "LBL_RebuildProjectAction_Name_popup"),
219
            NbBundle.getMessage(Actions.class, "LBL_RebuildProjectAction_Name_popup"),
220
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/rebuildCurrentProject.gif", false),
220
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/rebuildCurrentProject.gif", false),
Lines 225-231 Link Here
225
        
225
        
226
    public static Action runProject() {
226
    public static Action runProject() {
227
        Action a = new ProjectAction(
227
        Action a = new ProjectAction(
228
            ActionProvider.COMMAND_RUN, 
228
            ProjectActions.COMMAND_RUN,
229
            NbBundle.getMessage(Actions.class, "LBL_RunProjectAction_Name"),
229
            NbBundle.getMessage(Actions.class, "LBL_RunProjectAction_Name"),
230
            NbBundle.getMessage(Actions.class, "LBL_RunProjectAction_Name_popup"),
230
            NbBundle.getMessage(Actions.class, "LBL_RunProjectAction_Name_popup"),
231
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/runCurrentProject.gif", false),
231
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/runCurrentProject.gif", false),
Lines 236-242 Link Here
236
    
236
    
237
    public static synchronized Action deleteProject() {
237
    public static synchronized Action deleteProject() {
238
        final Action a = new ProjectAction(
238
        final Action a = new ProjectAction(
239
            ActionProvider.COMMAND_DELETE, 
239
            ProjectActions.COMMAND_DELETE,
240
            NbBundle.getMessage(Actions.class, "LBL_DeleteProjectAction_Name"),
240
            NbBundle.getMessage(Actions.class, "LBL_DeleteProjectAction_Name"),
241
            null,
241
            null,
242
            null );
242
            null );
Lines 259-265 Link Here
259
    public static synchronized Action copyProject() {
259
    public static synchronized Action copyProject() {
260
        if (COPY_PROJECT == null) {
260
        if (COPY_PROJECT == null) {
261
            Action a = new ProjectAction(
261
            Action a = new ProjectAction(
262
                    ActionProvider.COMMAND_COPY,
262
                    ProjectActions.COMMAND_COPY,
263
		    NbBundle.getMessage(Actions.class, "LBL_CopyProjectAction_Name"),
263
		    NbBundle.getMessage(Actions.class, "LBL_CopyProjectAction_Name"),
264
                    null, //NOI18N
264
                    null, //NOI18N
265
                    null );
265
                    null );
Lines 272-278 Link Here
272
    public static synchronized Action moveProject() {
272
    public static synchronized Action moveProject() {
273
        if (MOVE_PROJECT == null) {
273
        if (MOVE_PROJECT == null) {
274
            Action a = new ProjectAction(
274
            Action a = new ProjectAction(
275
                    ActionProvider.COMMAND_MOVE,
275
                    ProjectActions.COMMAND_MOVE,
276
		    NbBundle.getMessage(Actions.class, "LBL_MoveProjectAction_Name"),
276
		    NbBundle.getMessage(Actions.class, "LBL_MoveProjectAction_Name"),
277
                    null, //NOI18N
277
                    null, //NOI18N
278
                    null );
278
                    null );
Lines 285-291 Link Here
285
    public static synchronized Action renameProject() {
285
    public static synchronized Action renameProject() {
286
        if (RENAME_PROJECT == null) {
286
        if (RENAME_PROJECT == null) {
287
            Action a = new ProjectAction(
287
            Action a = new ProjectAction(
288
                    ActionProvider.COMMAND_RENAME,
288
                    ProjectActions.COMMAND_RENAME,
289
		    NbBundle.getMessage(Actions.class, "LBL_RenameProjectAction_Name"),
289
		    NbBundle.getMessage(Actions.class, "LBL_RenameProjectAction_Name"),
290
                    null, //NOI18N
290
                    null, //NOI18N
291
                    null );
291
                    null );
Lines 299-305 Link Here
299
    
299
    
300
    public static Action compileSingle() {
300
    public static Action compileSingle() {
301
        Action a = new FileAction(
301
        Action a = new FileAction(
302
            ActionProvider.COMMAND_COMPILE_SINGLE,
302
            ProjectActions.COMMAND_COMPILE_SINGLE,
303
            NbBundle.getMessage(Actions.class, "LBL_CompileSingleAction_Name"),
303
            NbBundle.getMessage(Actions.class, "LBL_CompileSingleAction_Name"),
304
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/compileSingle.png", true),
304
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/compileSingle.png", true),
305
            null);
305
            null);
Lines 310-316 Link Here
310
    
310
    
311
    public static Action runSingle() {
311
    public static Action runSingle() {
312
        Action a = new FileAction(
312
        Action a = new FileAction(
313
            ActionProvider.COMMAND_RUN_SINGLE,
313
            ProjectActions.COMMAND_RUN_SINGLE,
314
            NbBundle.getMessage(Actions.class, "LBL_RunSingleAction_Name"),
314
            NbBundle.getMessage(Actions.class, "LBL_RunSingleAction_Name"),
315
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/runSingle.png", true),
315
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/runSingle.png", true),
316
            null);
316
            null);
Lines 321-327 Link Here
321
    
321
    
322
    public static Action testSingle() {
322
    public static Action testSingle() {
323
        Action a = new FileAction(
323
        Action a = new FileAction(
324
            ActionProvider.COMMAND_TEST_SINGLE,
324
            ProjectActions.COMMAND_TEST_SINGLE,
325
            NbBundle.getMessage(Actions.class, "LBL_TestSingleAction_Name"),
325
            NbBundle.getMessage(Actions.class, "LBL_TestSingleAction_Name"),
326
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/testSingle.png", true),
326
            ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/testSingle.png", true),
327
            null);
327
            null);
Lines 335-341 Link Here
335
335
336
    public static Action buildMainProject() {
336
    public static Action buildMainProject() {
337
        Action a = new MainProjectAction (
337
        Action a = new MainProjectAction (
338
            ActionProvider.COMMAND_BUILD, 
338
            ProjectActions.COMMAND_BUILD,
339
            NbBundle.getMessage(Actions.class, "LBL_BuildMainProjectAction_Name" ),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/buildProject.png", false));  //NOI18N
339
            NbBundle.getMessage(Actions.class, "LBL_BuildMainProjectAction_Name" ),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/buildProject.png", false));  //NOI18N
340
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/buildProject.png"); //NOI18N
340
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/buildProject.png"); //NOI18N
341
        return a;
341
        return a;
Lines 343-349 Link Here
343
    
343
    
344
    public static Action cleanMainProject() {
344
    public static Action cleanMainProject() {
345
        Action a = new MainProjectAction(
345
        Action a = new MainProjectAction(
346
                ActionProvider.COMMAND_CLEAN,
346
                ProjectActions.COMMAND_CLEAN,
347
                NbBundle.getMessage(Actions.class, "LBL_CleanMainProjectAction_Name" ),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/cleanProject.gif", false));  //NOI18N
347
                NbBundle.getMessage(Actions.class, "LBL_CleanMainProjectAction_Name" ),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/cleanProject.gif", false));  //NOI18N
348
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/cleanProject.gif"); //NOI18N
348
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/cleanProject.gif"); //NOI18N
349
        return a;
349
        return a;
Lines 351-357 Link Here
351
351
352
    public static Action rebuildMainProject() {
352
    public static Action rebuildMainProject() {
353
        Action a = new MainProjectAction(
353
        Action a = new MainProjectAction(
354
            ActionProvider.COMMAND_REBUILD,
354
            ProjectActions.COMMAND_REBUILD,
355
            NbBundle.getMessage(Actions.class, "LBL_RebuildMainProjectAction_Name"),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/rebuildProject.png", false)); //NOI18N
355
            NbBundle.getMessage(Actions.class, "LBL_RebuildMainProjectAction_Name"),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/rebuildProject.png", false)); //NOI18N
356
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/rebuildProject.png"); //NOI18N
356
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/rebuildProject.png"); //NOI18N
357
        return a;
357
        return a;
Lines 359-365 Link Here
359
        
359
        
360
    public static Action runMainProject() {
360
    public static Action runMainProject() {
361
        Action a = new MainProjectAction(
361
        Action a = new MainProjectAction(
362
            ActionProvider.COMMAND_RUN,
362
            ProjectActions.COMMAND_RUN,
363
            NbBundle.getMessage(Actions.class, "LBL_RunMainProjectAction_Name"),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/runProject.png", false)); //NOI18N
363
            NbBundle.getMessage(Actions.class, "LBL_RunMainProjectAction_Name"),ImageUtilities.loadImageIcon("org/netbeans/modules/project/ui/resources/runProject.png", false)); //NOI18N
364
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/runProject.png"); //NOI18N
364
        a.putValue("iconBase","org/netbeans/modules/project/ui/resources/runProject.png"); //NOI18N
365
        return a;
365
        return a;
(-)a/projectui/src/org/netbeans/modules/project/ui/actions/ActionsUtil.java (-16 / +5 lines)
Lines 45-64 Link Here
45
package org.netbeans.modules.project.ui.actions;
45
package org.netbeans.modules.project.ui.actions;
46
46
47
import java.text.MessageFormat;
47
import java.text.MessageFormat;
48
import java.util.Arrays;
49
import java.util.HashMap;
48
import java.util.HashMap;
50
import java.util.HashSet;
49
import java.util.HashSet;
51
import java.util.List;
52
import java.util.Map;
50
import java.util.Map;
53
import java.util.Set;
51
import java.util.Set;
54
import javax.swing.Action;
52
import javax.swing.Action;
55
import org.netbeans.api.project.FileOwnerQuery;
53
import org.netbeans.api.project.FileOwnerQuery;
56
import org.netbeans.api.project.Project;
54
import org.netbeans.api.project.Project;
57
import org.netbeans.spi.project.ActionProvider;
55
import org.netbeans.api.project.ProjectActions;
58
import org.netbeans.api.project.ProjectUtils;
56
import org.netbeans.api.project.ProjectUtils;
59
import org.openide.filesystems.FileObject;
57
import org.openide.filesystems.FileObject;
60
import org.openide.loaders.DataObject;
58
import org.openide.loaders.DataObject;
61
import org.openide.util.Lookup;
59
import org.openide.util.Lookup;
60
import org.openide.util.RequestProcessor;
62
import org.openide.util.WeakSet;
61
import org.openide.util.WeakSet;
63
62
64
/** Nice utility methods to be used in ProjectBased Actions
63
/** Nice utility methods to be used in ProjectBased Actions
Lines 71-76 Link Here
71
    public static LookupResultsCache lookupResultsCache;
70
    public static LookupResultsCache lookupResultsCache;
72
     */
71
     */
73
    
72
    
73
    public static final RequestProcessor RP = new RequestProcessor(ActionsUtil.class.getName(), Integer.MAX_VALUE);
74
74
    public static final ShortcutsManager SHORCUTS_MANAGER = new ShortcutsManager();
75
    public static final ShortcutsManager SHORCUTS_MANAGER = new ShortcutsManager();
75
    
76
    
76
    public static HashMap<String,MessageFormat> pattern2format = new HashMap<String,MessageFormat>(); 
77
    public static HashMap<String,MessageFormat> pattern2format = new HashMap<String,MessageFormat>(); 
Lines 145-163 Link Here
145
     *                does not matter.
146
     *                does not matter.
146
     */    
147
     */    
147
    public static boolean commandSupported( Project project, String command, Lookup context ) {
148
    public static boolean commandSupported( Project project, String command, Lookup context ) {
148
        //We have to look whether the command is supported by the project
149
        return ProjectActions.prepare(project, command, context) != null;
149
        ActionProvider ap = project.getLookup().lookup(ActionProvider.class);
150
        if ( ap != null ) {
151
            List commands = Arrays.asList( ap.getSupportedActions() );
152
            if ( commands.contains( command ) ) {
153
                if (context == null || ap.isActionEnabled(command, context)) {
154
                    //System.err.println("cS: true project=" + project + " command=" + command + " context=" + context);
155
                    return true;
156
                }
157
            }
158
        }            
159
        //System.err.println("cS: false project=" + project + " command=" + command + " context=" + context);
160
        return false;
161
    }
150
    }
162
    
151
    
163
    
152
    
(-)a/projectui/src/org/netbeans/modules/project/ui/actions/FileAction.java (-8 / +24 lines)
Lines 46-55 Link Here
46
46
47
import java.util.Arrays;
47
import java.util.Arrays;
48
import java.util.Collection;
48
import java.util.Collection;
49
import java.util.concurrent.Callable;
49
import javax.swing.Action;
50
import javax.swing.Action;
50
import javax.swing.Icon;
51
import javax.swing.Icon;
51
import org.netbeans.api.project.Project;
52
import org.netbeans.api.project.Project;
53
import org.netbeans.api.project.ProjectActions;
52
import org.netbeans.spi.project.ActionProvider;
54
import org.netbeans.spi.project.ActionProvider;
55
import org.netbeans.spi.project.ActionProvider2;
53
import org.netbeans.spi.project.ui.support.FileActionPerformer;
56
import org.netbeans.spi.project.ui.support.FileActionPerformer;
54
import org.openide.awt.Actions;
57
import org.openide.awt.Actions;
55
import org.openide.filesystems.FileObject;
58
import org.openide.filesystems.FileObject;
Lines 58-67 Link Here
58
import org.openide.util.ImageUtilities;
61
import org.openide.util.ImageUtilities;
59
import org.openide.util.Lookup;
62
import org.openide.util.Lookup;
60
import org.openide.util.Mutex;
63
import org.openide.util.Mutex;
64
import org.openide.util.RequestProcessor;
61
65
62
/** An action sensitive to selected node. Used for 1-off actions
66
/** An action sensitive to selected node. Used for 1-off actions
63
 */
67
 */
64
public final class FileAction extends LookupSensitiveAction implements ContextAwareAction {
68
public final class FileAction extends LookupSensitiveAction implements ContextAwareAction {
69
65
    private String command;
70
    private String command;
66
    private FileActionPerformer performer;
71
    private FileActionPerformer performer;
67
    private final String namePattern;
72
    private final String namePattern;
Lines 177-191 Link Here
177
        if (command != null) {
182
        if (command != null) {
178
            Project[] projects = ActionsUtil.getProjectsFromLookup( context, command );
183
            Project[] projects = ActionsUtil.getProjectsFromLookup( context, command );
179
184
180
            if ( projects.length == 1 ) {            
185
            if ( projects.length == 1 ) {
181
                ActionProvider ap = projects[0].getLookup().lookup(ActionProvider.class);
186
                ProjectActions.run(projects[0], command, context);
182
                ap.invokeAction( command, context );
183
                return;
187
                return;
184
            }
188
            }
185
189
186
            ActionProvider provider = globalProvider(context);
190
            Callable<Boolean> provider = globalProvider(context);
187
            if (provider != null) {
191
            if (provider != null) {
188
                provider.invokeAction(command, context);
192
                ActionsUtil.RP.submit(provider);
189
            }
193
            }
190
        } else if (performer != null) {
194
        } else if (performer != null) {
191
            Collection<? extends DataObject> dobjs = context.lookupAll(DataObject.class);
195
            Collection<? extends DataObject> dobjs = context.lookupAll(DataObject.class);
Lines 200-209 Link Here
200
        return new FileAction( command, performer, namePattern, (Icon)getValue( SMALL_ICON ), actionContext );
204
        return new FileAction( command, performer, namePattern, (Icon)getValue( SMALL_ICON ), actionContext );
201
    }
205
    }
202
206
203
    private ActionProvider globalProvider(Lookup context) {
207
    @SuppressWarnings("deprecation")
204
        for (ActionProvider ap : Lookup.getDefault().lookupAll(ActionProvider.class)) {
208
    private Callable<Boolean> globalProvider(final Lookup context) {
209
        for (ActionProvider2 ap2 : Lookup.getDefault().lookupAll(ActionProvider2.class)) {
210
            Callable<Boolean> c = ap2.prepare(command, context);
211
            if (c != null) {
212
                return c;
213
            }
214
        }
215
        for (final ActionProvider ap : Lookup.getDefault().lookupAll(ActionProvider.class)) {
205
            if (Arrays.asList(ap.getSupportedActions()).contains(command) && ap.isActionEnabled(command, context)) {
216
            if (Arrays.asList(ap.getSupportedActions()).contains(command) && ap.isActionEnabled(command, context)) {
206
                return ap;
217
                return new Callable<Boolean>() {
218
                    @Override public Boolean call() throws Exception {
219
                        ap.invokeAction(command, context);
220
                        return true;
221
                    }
222
                };
207
            }
223
            }
208
        }
224
        }
209
        return null;
225
        return null;
(-)a/projectui/src/org/netbeans/modules/project/ui/actions/MainProjectAction.java (-11 / +9 lines)
Lines 50-66 Link Here
50
import java.beans.PropertyChangeEvent;
50
import java.beans.PropertyChangeEvent;
51
import java.beans.PropertyChangeListener;
51
import java.beans.PropertyChangeListener;
52
import java.text.MessageFormat;
52
import java.text.MessageFormat;
53
import java.util.Arrays;
53
import java.util.concurrent.Callable;
54
import javax.swing.Icon;
54
import javax.swing.Icon;
55
import javax.swing.JButton;
55
import javax.swing.JButton;
56
import javax.swing.event.ChangeEvent;
56
import javax.swing.event.ChangeEvent;
57
import javax.swing.event.ChangeListener;
57
import javax.swing.event.ChangeListener;
58
import org.netbeans.api.project.Project;
58
import org.netbeans.api.project.Project;
59
import org.netbeans.api.project.ProjectActions;
59
import org.netbeans.api.project.ProjectUtils;
60
import org.netbeans.api.project.ProjectUtils;
60
import org.netbeans.api.project.ui.OpenProjects;
61
import org.netbeans.api.project.ui.OpenProjects;
61
import org.netbeans.modules.project.ui.NoMainProjectWarning;
62
import org.netbeans.modules.project.ui.NoMainProjectWarning;
62
import org.netbeans.modules.project.ui.OpenProjectList;
63
import org.netbeans.modules.project.ui.OpenProjectList;
63
import org.netbeans.spi.project.ActionProvider;
64
import org.netbeans.spi.project.ui.support.ProjectActionPerformer;
64
import org.netbeans.spi.project.ui.support.ProjectActionPerformer;
65
import org.openide.DialogDescriptor;
65
import org.openide.DialogDescriptor;
66
import org.openide.DialogDisplayer;
66
import org.openide.DialogDisplayer;
Lines 155-169 Link Here
155
        }
155
        }
156
156
157
        if ( command != null ) {
157
        if ( command != null ) {
158
            ActionProvider ap = p.getLookup().lookup(ActionProvider.class);
158
            Callable<Boolean> task = ProjectActions.prepare(p, command, Lookup.EMPTY);
159
            if (ap != null) {
159
            if (task != null) {
160
                if (Arrays.asList(ap.getSupportedActions()).contains(command)) {
160
                ActionsUtil.RP.submit(task);
161
                    ap.invokeAction(command, Lookup.EMPTY);
161
            } else {
162
                } else {
162
                // #47160: was a supported command (e.g. on a freeform project) but was then removed.
163
                    // #47160: was a supported command (e.g. on a freeform project) but was then removed.
163
                Toolkit.getDefaultToolkit().beep();
164
                    Toolkit.getDefaultToolkit().beep();
164
                refreshView(null, false);
165
                    refreshView(null, false);
166
                }
167
            }
165
            }
168
        }
166
        }
169
        else {
167
        else {
(-)a/projectui/src/org/netbeans/modules/project/ui/actions/ProjectAction.java (-3 / +2 lines)
Lines 49-55 Link Here
49
import javax.swing.Action;
49
import javax.swing.Action;
50
import javax.swing.Icon;
50
import javax.swing.Icon;
51
import org.netbeans.api.project.Project;
51
import org.netbeans.api.project.Project;
52
import org.netbeans.spi.project.ActionProvider;
52
import org.netbeans.api.project.ProjectActions;
53
import org.netbeans.spi.project.ui.support.ProjectActionPerformer;
53
import org.netbeans.spi.project.ui.support.ProjectActionPerformer;
54
import org.openide.awt.Actions;
54
import org.openide.awt.Actions;
55
import org.openide.awt.DynamicMenuContent;
55
import org.openide.awt.DynamicMenuContent;
Lines 121-127 Link Here
121
        
121
        
122
        if ( projects.length == 1 ) {
122
        if ( projects.length == 1 ) {
123
            if ( command != null ) {
123
            if ( command != null ) {
124
                ActionProvider ap = projects[0].getLookup().lookup(ActionProvider.class);
125
                LogRecord r = new LogRecord(Level.FINE, "PROJECT_ACTION"); // NOI18N
124
                LogRecord r = new LogRecord(Level.FINE, "PROJECT_ACTION"); // NOI18N
126
                r.setResourceBundle(NbBundle.getBundle(ProjectAction.class));
125
                r.setResourceBundle(NbBundle.getBundle(ProjectAction.class));
127
                r.setParameters(new Object[] {
126
                r.setParameters(new Object[] {
Lines 131-137 Link Here
131
                });
130
                });
132
                r.setLoggerName(UILOG.getName());
131
                r.setLoggerName(UILOG.getName());
133
                UILOG.log(r);
132
                UILOG.log(r);
134
                ap.invokeAction( command, Lookup.EMPTY );        
133
                ProjectActions.run(projects[0], command, Lookup.EMPTY);
135
            }
134
            }
136
            else if ( performer != null ) {
135
            else if ( performer != null ) {
137
                performer.perform( projects[0] );
136
                performer.perform( projects[0] );
(-)a/projectuiapi/src/org/netbeans/spi/project/ui/support/FileSensitiveActions.java (-4 / +5 lines)
Lines 49-56 Link Here
49
import javax.swing.Icon;
49
import javax.swing.Icon;
50
import org.netbeans.api.annotations.common.NonNull;
50
import org.netbeans.api.annotations.common.NonNull;
51
import org.netbeans.api.annotations.common.NullAllowed;
51
import org.netbeans.api.annotations.common.NullAllowed;
52
import org.netbeans.api.project.ProjectActions;
52
import org.netbeans.modules.project.uiapi.Utilities;
53
import org.netbeans.modules.project.uiapi.Utilities;
53
import org.netbeans.spi.project.ActionProvider;
54
import org.netbeans.spi.project.ActionProvider2;
54
55
55
/**
56
/**
56
 * Factory for creating file-sensitive actions.
57
 * Factory for creating file-sensitive actions.
Lines 62-72 Link Here
62
63
63
    /**
64
    /**
64
     * Creates an action sensitive to the set of currently selected files.
65
     * Creates an action sensitive to the set of currently selected files.
65
     * When performed the action will call the given command on the {@link ActionProvider} of
66
     * When performed the action will call the given command using {@link ProjectActions} on
66
     * the selected project(s) and pass the proper context to it. Enablement of the
67
     * the selected project(s) and pass the proper context to it. Enablement of the
67
     * action depends on the behavior of the project's action provider.
68
     * action depends on the behavior of the project's action provider.
68
     * <p>As mentioned in {@link ActionProvider} Javadoc, the action may also be enabled
69
     * <p>As mentioned in {@link ProjectActions} Javadoc, the action may also be enabled
69
     * without the participation of any project in case some globally registered {@link ActionProvider}
70
     * without the participation of any project in case some globally registered {@link ActionProvider2}
70
     * can provide an implementation.
71
     * can provide an implementation.
71
     * (This since {@code org.netbeans.modules.projectuiapi/1 1.37}.)
72
     * (This since {@code org.netbeans.modules.projectuiapi/1 1.37}.)
72
     * <p>Shortcuts for actions are shared according to command, i.e. actions based on the same command
73
     * <p>Shortcuts for actions are shared according to command, i.e. actions based on the same command

Return to bug 71515