diff options
author | Stephan Herrmann | 2018-02-06 12:57:13 +0000 |
---|---|---|
committer | Stephan Herrmann | 2018-02-06 14:27:00 +0000 |
commit | 5074fefa0fcfa06d0e96907f8568ff2d9769bc45 (patch) | |
tree | d9441281714e1ae34f05dfecb77128d01049923c | |
parent | bd89ee55c9defa5b740795c48fe0065aa23073c0 (diff) | |
download | eclipse.jdt.ui-5074fefa0fcfa06d0e96907f8568ff2d9769bc45.tar.gz eclipse.jdt.ui-5074fefa0fcfa06d0e96907f8568ff2d9769bc45.tar.xz eclipse.jdt.ui-5074fefa0fcfa06d0e96907f8568ff2d9769bc45.zip |
(modular project)
Change-Id: I3ca2f273ffe7c00e3464c7c813562649fd8e9cbd
-rw-r--r-- | org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDialog.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDialog.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDialog.java index 66eaa813b0..e5687feb97 100644 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDialog.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDialog.java @@ -681,8 +681,8 @@ public class ModuleDialog extends StatusDialog { includedNames.addAll(limitModules.fExplicitlyIncludedModules); availableNames.removeAll(limitModules.fExplicitlyIncludedModules); } - } else if (isJava9JRE) { - includedNames= defaultIncludedModuleNames(); + } else if (isJava9JRE && isUnnamedModule()) { + includedNames= defaultIncludedModuleNamesForUnnamedModule(); availableNames.removeAll(includedNames); } else { includedNames= availableNames; @@ -774,7 +774,7 @@ public class ModuleDialog extends StatusDialog { return fModuleNames= moduleNames; } - private List<String> defaultIncludedModuleNames() { + private List<String> defaultIncludedModuleNamesForUnnamedModule() { if (fJavaElements != null) { List<IPackageFragmentRoot> roots= new ArrayList<>(); for (int i= 0; i < fJavaElements.length; i++) { @@ -866,6 +866,16 @@ public class ModuleDialog extends StatusDialog { return module != null ? module.getElementName() : JavaModelUtil.ALL_UNNAMED; } + private boolean isUnnamedModule() { + IModuleDescription module= null; + try { + module= fCurrCPElement.getJavaProject().getModuleDescription(); + } catch (JavaModelException e) { + JavaPlugin.log(e); + } + return module == null; + } + // -------- TypeRestrictionAdapter -------- private abstract class ListAdapter<T extends ModuleEncapsulationDetail> implements IListAdapter<T> { @@ -985,12 +995,17 @@ public class ModuleDialog extends StatusDialog { if (fModuleLists[IDX_AVAILABLE].fNames.isEmpty() && fModuleLists[IDX_IMPLICITLY_INCLUDED].fNames.isEmpty()) { return false; // all modules are "included" - this includes the single-module case. } - Set<String> initialNames = new HashSet<>(defaultIncludedModuleNames()); - for (String name : fModuleLists[IDX_INCLUDED].fNames) { - if (!initialNames.remove(name)) - return true; + if (isUnnamedModule()) { + // for an unnamed module we need to compare current selection state against defaults per JEP 261: + Set<String> initialNames = new HashSet<>(defaultIncludedModuleNamesForUnnamedModule()); + for (String name : fModuleLists[IDX_INCLUDED].fNames) { + if (!initialNames.remove(name)) + return true; + } + return !initialNames.isEmpty(); + } else { + return true; } - return !initialNames.isEmpty(); } /* |