Lines 55-61
Link Here
|
55 |
import java.util.ArrayList; |
55 |
import java.util.ArrayList; |
56 |
import java.util.Collections; |
56 |
import java.util.Collections; |
57 |
import java.util.HashMap; |
57 |
import java.util.HashMap; |
58 |
import java.util.Iterator; |
|
|
59 |
import java.util.List; |
58 |
import java.util.List; |
60 |
import java.util.Map; |
59 |
import java.util.Map; |
61 |
import java.util.Set; |
60 |
import java.util.Set; |
Lines 100-106
Link Here
|
100 |
|
99 |
|
101 |
modelUpdater = new ModelUpdater(); |
100 |
modelUpdater = new ModelUpdater(); |
102 |
//#98080 |
101 |
//#98080 |
103 |
RP = new RequestProcessor(ModelUpdater.class.getName(), 1); |
102 |
RP = new RequestProcessor(ModelUpdater.class.getName(), 1, true); |
104 |
updateSubprojectsTask = RP.create(modelUpdater); |
103 |
updateSubprojectsTask = RP.create(modelUpdater); |
105 |
updateSubprojectsTask.setPriority( Thread.MIN_PRIORITY ); |
104 |
updateSubprojectsTask.setPriority( Thread.MIN_PRIORITY ); |
106 |
|
105 |
|
Lines 526-531
Link Here
|
526 |
if (modelUpdater != null) { // #101286 - might be already null |
525 |
if (modelUpdater != null) { // #101286 - might be already null |
527 |
modelUpdater.cancel(); |
526 |
modelUpdater.cancel(); |
528 |
} |
527 |
} |
|
|
528 |
if (updateSubprojectsTask != null) { |
529 |
updateSubprojectsTask.cancel(); |
530 |
} |
529 |
modelUpdater = null; |
531 |
modelUpdater = null; |
530 |
subprojectsCache = null; |
532 |
subprojectsCache = null; |
531 |
updateSubprojectsTask = null; |
533 |
updateSubprojectsTask = null; |
Lines 672-683
Link Here
|
672 |
|
674 |
|
673 |
List<Project> subprojects = new ArrayList<Project>(currentProjects.size() * 5); |
675 |
List<Project> subprojects = new ArrayList<Project>(currentProjects.size() * 5); |
674 |
for (Project p : currentProjects) { |
676 |
for (Project p : currentProjects) { |
675 |
if (cancel) return; |
677 |
if (cancel) { |
|
|
678 |
return; |
679 |
} |
676 |
addSubprojects(p, subprojects, cache); // Find the projects recursively |
680 |
addSubprojects(p, subprojects, cache); // Find the projects recursively |
677 |
} |
681 |
} |
678 |
|
682 |
|
679 |
if (cancel) return; |
683 |
if (cancel) { |
680 |
List<String> subprojectNames = new ArrayList<String>(subprojects.size()); |
684 |
return; |
|
|
685 |
} |
686 |
List<String> subprojectNames = new ArrayList<String>(subprojects.size()); |
681 |
if ( !subprojects.isEmpty() ) { |
687 |
if ( !subprojects.isEmpty() ) { |
682 |
String pattern = NbBundle.getMessage( ProjectChooserAccessory.class, "LBL_PrjChooser_SubprojectName_Format" ); // NOI18N |
688 |
String pattern = NbBundle.getMessage( ProjectChooserAccessory.class, "LBL_PrjChooser_SubprojectName_Format" ); // NOI18N |
683 |
File pDir = currentProjects.size() == 1 ? |
689 |
File pDir = currentProjects.size() == 1 ? |
Lines 686-692
Link Here
|
686 |
|
692 |
|
687 |
// Replace projects in the list with formated names |
693 |
// Replace projects in the list with formated names |
688 |
for (Project p : subprojects) { |
694 |
for (Project p : subprojects) { |
689 |
if (cancel) return; |
695 |
if (cancel) { |
|
|
696 |
return; |
697 |
} |
690 |
FileObject spDir = p.getProjectDirectory(); |
698 |
FileObject spDir = p.getProjectDirectory(); |
691 |
|
699 |
|
692 |
// Try to compute relative path |
700 |
// Try to compute relative path |
Lines 709-715
Link Here
|
709 |
// Sort the list |
717 |
// Sort the list |
710 |
Collections.sort( subprojectNames, Collator.getInstance() ); |
718 |
Collections.sort( subprojectNames, Collator.getInstance() ); |
711 |
} |
719 |
} |
712 |
if ( currentProjects != projects ||cancel) { |
720 |
if (currentProjects != projects || cancel) { |
713 |
return; |
721 |
return; |
714 |
} |
722 |
} |
715 |
DefaultListModel listModel = new DefaultListModel(); |
723 |
DefaultListModel listModel = new DefaultListModel(); |
Lines 718-724
Link Here
|
718 |
listModel.addElement(displayName); |
726 |
listModel.addElement(displayName); |
719 |
} |
727 |
} |
720 |
subprojectsToSet = listModel; |
728 |
subprojectsToSet = listModel; |
721 |
if (cancel) return; |
729 |
if (cancel) { |
|
|
730 |
return; |
731 |
} |
722 |
SwingUtilities.invokeLater( this ); |
732 |
SwingUtilities.invokeLater( this ); |
723 |
return; |
733 |
return; |
724 |
} |
734 |
} |
Lines 745-756
Link Here
|
745 |
/** Gets all subprojects recursively |
755 |
/** Gets all subprojects recursively |
746 |
*/ |
756 |
*/ |
747 |
void addSubprojects(Project p, List<Project> result, Map<Project,Set<? extends Project>> cache) { |
757 |
void addSubprojects(Project p, List<Project> result, Map<Project,Set<? extends Project>> cache) { |
748 |
if (cancel) return; |
758 |
if (cancel) { |
|
|
759 |
return; |
760 |
} |
749 |
Set<? extends Project> subprojects = cache.get(p); |
761 |
Set<? extends Project> subprojects = cache.get(p); |
750 |
if (subprojects == null) { |
762 |
if (subprojects == null) { |
751 |
SubprojectProvider spp = p.getLookup().lookup(SubprojectProvider.class); |
763 |
SubprojectProvider spp = p.getLookup().lookup(SubprojectProvider.class); |
752 |
if (spp != null) { |
764 |
if (spp != null) { |
753 |
if (cancel) return; |
765 |
if (cancel) { |
|
|
766 |
return; |
767 |
} |
754 |
subprojects = spp.getSubprojects(); |
768 |
subprojects = spp.getSubprojects(); |
755 |
} else { |
769 |
} else { |
756 |
subprojects = Collections.emptySet(); |
770 |
subprojects = Collections.emptySet(); |
Lines 758-764
Link Here
|
758 |
cache.put(p, subprojects); |
772 |
cache.put(p, subprojects); |
759 |
} |
773 |
} |
760 |
for (Project sp : subprojects) { |
774 |
for (Project sp : subprojects) { |
761 |
if (cancel) return; |
775 |
if (cancel) { |
|
|
776 |
return; |
777 |
} |
762 |
if ( !result.contains( sp ) ) { |
778 |
if ( !result.contains( sp ) ) { |
763 |
result.add( sp ); |
779 |
result.add( sp ); |
764 |
|
780 |
|